注意: []可省略不写,如果要写的话,就写[]里面的内容,别写[]符号 注意:以下操作是有上下文联系的,建议跟着命令从上面到下面敲一遍(命令可直接复制使用)
MySQL中的数据类型主要分为3类:数值类型、字符串类型、日期时间类型
数值类型
数值类型 | 大小 | 有符号范围 | 无符号范围 | 描述 |
---|---|---|---|---|
tinyint | 1byte | (-128,127) | (0,255) | 小整数值 |
smallint | 2byte | (-32768,32767) | (0,65535) | 大整数值 |
mediumint | 3byte | (-8388608,8388607) | (0,16777215) | 大整数值 |
int或integer | 4byte | (±2147483648) | (0,4294967295) | 大整数值 |
bigint | 8byte | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 |
float | 4byte | 自己去查 | 自己去查 | 单精度浮点数值 |
double | 8byte | 自己去查 | 自己去查 | 双精度浮点数值 |
decimal | 无 | 无 | 无 | 小数值(精确定点数) |
有符号范围:指的是该类型允许出现负数的前提下,该类型的取值范围。写法:例如tinyint 无符号范围:指的是该类型不允许出现负数的前提下,该类型的取值范围。写法:例如tinyint unsigned 精度:例如123.45的精度是总长度5、标度是小数位长度2
例如 1、年龄age的类型 --> tinyint unsigned 使用无符号的tinyint类型,年龄不出现负数 2、分数score的类型 --> double(4,1) 总位数为4,允许出现1位小数
字符串类型
字符串类型 | 大小 | 描述 | 使用场景 |
---|---|---|---|
char | 0-255 | 定长字符串(性能高) | 性别 |
varchar | 0-65535 | 变长字符串(性能较差) | 用户名 |
tinyblob | 0-255 | 不超过255个字节的二进制数据 | / |
tinytext | 0-255 | 短文本字符串 | / |
blob | 0-65535 | 二进制的长文本数据 | / |
text | 0-65535 | 长文本数据 | / |
mediumblob | 0-16777215 | 二进制的中等长度文本数据 | / |
mediumtext | 0-16777215 | 中等长度文本数据 | / |
longblob | 0-4294967295 | 二进制的极大文本数据 | / |
longtext | 0-4294967295 | 极大文本数据 | / |
定长字符串:例如char(10),指的是当前字符串即使只存储一个字符,也会占用10个字符的空间,未占用的字符系统会用空格补 变长字符串:例如varchar(10),指的是当前字符串能够存储的最大长度,存储几个字符就占用几个字符的空间
日期时间类型
日期时间类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
date | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | -838:59:59至838:59:59 | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901至2155 | YYYY | 年份值 |
datetime | 8 | 1000-01-01 00:00:00至9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值、时间戳 |
例如我们描述生日字段,适合使用date类型
一、查询
1、查询当前数据库所有表
xxxxxxxxxx
use 数据库名;
show tables;
2、查询表结构
xxxxxxxxxx
use 数据库名;
desc 表名;
3、查询指定表的建表语句
xxxxxxxxxx
use 数据库名;
show create table 表名;
4、查询指定表当时的创建语句(包含表结构和数据)
show create table 表名;
二、创建
xxxxxxxxxx
create table 表名(
字段1 字段1的类型 [comment '字段1注释'],
字段2 字段2的类型 [comment '字段2注释'],
字段3 字段3的类型 [comment '字段3注释'],
......
字段n 字段n的类型 [comment '字段n注释']
)[comment '表注释'];
例如:
create database itcast;
use itcast;
create table tb_user(
id int comment '编号',
name varchar(4) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';
create table tb_user2(
id int comment '编号2',
name varchar(4) comment '姓名2',
age int comment '年龄2',
gender varchar(1) comment '性别2'
) comment '用户表2';
show tables;
如何使用图形化界面创建表
以DataGrip为例,右键某一个数据库,点击New,点击Table,再弹出来的选项卡的Table下方的输入框输入表名,例如user,在 该选项卡的中间空白地方的左上角点击+号,再弹出来的小组件的Name下面的输入框输入字段名例如name、在Type下面的输入 框输入字段类型例如int,勾选中间空白地方的右上角的Primary Key,则该字段就可以称为主键(后续a_22_0会有学),如果勾选 Auto那么该字段就会自动增长,同理unique就是唯一,not null就是非空
案例:根据需求创建表,设计合理的数据类型、长度
要求: 1、编号,纯数字 2、员工工号,字符串类型,长度不超过10位 3、员工姓名,字符串类型,长度不超过10位 4、性别,男/女,存储一个汉字 5、年龄,不可存储负数 6、身份证号,18位,身份证中有X这样的字符 7、入职时间,取值年月日即可
mysql -u root -p
create database if not exists huanf_ddl;
use huanf_ddl;
create table emp(
id int comment '编号',
worknum varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment '入职时间'
) comment '员工表';
desc emp;
小提示:鼠标右键点一下cmd那个黑窗口可以直接粘贴 注意上面的SQL语句创建的是表结构,里面还没有添加进数据 涨知识:上述的'编号'、'工号'、'姓名' 等列头,叫做字段
三、修改
1、添加字段
xxxxxxxxxx
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
案例:为上面的emp表增加一个新的字段'昵称'为nickname,类型为varchar(20)
xxxxxxxxxx
use huanf_ddl;
alter table emp add nickname varchar(20) comment '昵称';
desc emp;
2、修改数据类型
xxxxxxxxxx
alter table 表名 modify 字段名 新数据类型(长度);
3、修改字段名和字段类型
xxxxxxxxxx
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
案例:将emp表的nickname字段修改为username,类型为varchar(30);
xxxxxxxxxx
use huanf_ddl;
alter table emp change nickname username varchar(30) comment '用户名';
desc emp;
4、删除字段
xxxxxxxxxx
alter table 表名 drop 字段名;
案例:将emp表的字段username删除
xxxxxxxxxx
use huanf_ddl;
alter table emp drop username;
desc emp;
5、修改表名,注意to可以省略
xxxxxxxxxx
alter table 表名 rename to 新表名;
案例:将emp表的表名修改为employee
use huanf_ddl;
alter table emp rename to huanf_ddl表操作;
show tables;
四、删除
1、删除表
xxxxxxxxxx
drop table [if exists] 表名;
2、删除指定表,并重新创建该表
xxxxxxxxxx
truncate table 表名;
例如:删除表和该表里面的数据
xxxxxxxxxx
use itcast;
show tables;
drop table if exists tb_user2;
例如:删除表里面的数据,同时重新创建新的该表,新表只有旧表的表结构,没有旧表的数据
use itcast;
show tables;
truncate table tb_user;