【MySQL】数据类型以及库和表的操作

连接服务器:mysql -h 127.0.0.1 -P 3306 -u root -p

-h 后面指定MySQL服务器地址 -P 后面指定端口 -u 后面指定用户名 -p 后面跟随密码


一. 库的操作

1. 创建

创建数据库

语法:

复制代码
create database 【数据库名】;

当我们没有指定数据库的字符集和校验规则时,系统默认的字符集是 utf8 ,校验规则是 utf8_general_ci。

例如我们这里要指定字符集和校验规则创建库我们可以这样


2. 修改

我们想要修改库的话首先得知道我们有什么库

复制代码
show databases;

这串指令可以将现有的库列出

效果:

此时我们需要选择进入一个数据库。

语法:

复制代码
use 【数据库名】;

我们修改库通常是修改它的字符集和校验规则

语法:

复制代码
alter database 【数据库】 【更改的字符集和校验规则】;

效果:


3. 删除

语法:

复制代码
drop database 【数据库】;

效果:

数据库本质就是一个文件,里面的库就是数据库文件内部的一个子文件。数据这个子文件会连带着整个库内部的文件跟着一块删除,所以非轻易不要删除库。


4. 备份

如果确实是需要删除库,那么删除之前需要进行一下备份。

语法:

复制代码
mysqldump -h 【IP】 -P 【端口】 -u 【用户】 -p 【库名称】 > 【目标路径】/【目标文件名】.sql

若我们想要还原

语法:

复制代码
source 【文件路径】/【文件名】

二. 表的操作

1. 创建

语法:

复制代码
create table 【表名称】(
    【列名】  【类型】 comment 【'注释'】,
    【列名】  【类型】 comment 【'注释'】
);

效果:

tip:创建表首先得选择库进入

2. 修改

我们首先查看表结构

语法:

复制代码
desc 【表名】;

效果:

field 为字段名字,type 是字段类型,NULL 为约束条件,key 索引


若我们想给表中添加新的字段

语法:

复制代码
alter table 【表名】 add 【新字段】 【新类型】 【新备注】; 

效果:


若我们想给表中添加样例

语法:

复制代码
insert into 【表名】 values(【表的字段类型】);

这里我们插入两条样例

效果:


若我们想改变表中字段的数据类型

语法:

复制代码
alter table 【表名】 modify 【字段】 【新类型】;

效果:


若我们想删除某一列

语法:

复制代码
alter table 【表名】 drop 【列】;

效果:

这里我们删除了某一列后,对应先前添加进去的实例也会删除掉对应的列


若我们想更改表名或者更改表内的字段名

语法:

复制代码
alter table 【旧表名】 rename 【新表名】;

alter table 【当前表名】 change 【旧字段名】 【新字段名】 【数据类型】;

效果:


3. 删除

语法:

复制代码
drop table 【表名】;

效果:


三. 数据类型

1. 数据类型分类

2. 数值类型

(1)整数类型

tinyint 的取值范围在 -128 - 127 之间。smallint 的取值范围在 -32768 ~ 32767。mediumint 的取值范围在 -8388608 ~ 8388607。int 的取值范围在 -2147483648 ~ 2147483647。bigint 的取值范围在 -9.22×10¹⁸ ~ 9.22×10¹⁸

不同的数值类型存在的意义在于,可以按需匹配数值范围,有效的节省空间。

(2)bit

bit(n):位字段类型,n表示位数,默认为1,最大为64.

bit 字段在显示时是按照 ASCILL 码的形式显示的。

3. 小数类型

(1)float

float(m,d),m指定显示长度,d指定小数点后的精确位数

当前我们假设 float(4,2)

那么此时就是4位长度,2位精度值

例子1:输入10.986,此时会进行四舍五入得到的结果为 10.99

例子2:输入99.996,此时倘若四舍五入会变成100,与原先的4位不符合,数据库不允许输入

(2)decimal

decimal(m,d),m指定显示长度,d指定小数点后的精确位数

同为小数类型,与float有何区别呢?

float 采用二进制的科学计数法存储,decimal 采用十进制的存储方式将数字解析为字符串

float 会存在精度丢失当小数点后位数多的情况下,而decimal不会

float 一旦创建就不能更改储存大小,decimal 则可以动态的更改大小(m-d+1)

float 运算速度快因为是固定的储存,decimal 灵活但需要的运行时间多

4. 字符串类型

(1)char

char(l),l 是固定的存储长度,最大为255

char(2)

可以存放两个字符,可以是英文也可以是汉字

(2)varchar

varchar(l),l 是可变长的字符串长度,最长为 65535

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占 用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。

5. 日期和时间类型

日期类型有三个:

date,datetime,timestamp

date:日期 yyyy-mm-dd 只存在年月日

datetime:日期加上具体的时分秒 yyyy-mm-dd hh:mm:ss

timestamp:这是时间戳,记录当前的年月日时分秒

6. enum 和 set 类型

两个都为枚举类型

enum:枚举为单选

set:枚举可以多选

相关推荐
ohoy9 小时前
mysql 30天自动补0
数据库·mysql
大学生资源网10 小时前
java毕业设计之儿童福利院管理系统的设计与实现(源码+)
java·开发语言·spring boot·mysql·毕业设计·源码·课程设计
摇滚侠12 小时前
Redis 零基础到进阶,Redis 哨兵监控,笔记63-73
数据库·redis·笔记
利剑 -~12 小时前
mysql面试题整理
android·数据库·mysql
老华带你飞12 小时前
物流信息管理|基于springboot 物流信息管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
程序员卷卷狗12 小时前
Redis事务与MySQL事务有什么区别?一文分清
数据库·redis·mysql
玩大数据的龙威12 小时前
农经权二轮延包—数据(新老农经权)比对软件更新
数据库·arcgis
保持低旋律节奏12 小时前
网络系统管理——期末复习
数据库
程序员佳佳13 小时前
2025年大模型终极横评:GPT-5.2、Banana Pro与DeepSeek V3.2实战硬核比拼(附统一接入方案)
服务器·数据库·人工智能·python·gpt·api