【MySQL】DDL 操作数据表
目录
一、MySQL 数据类型
二、创建表
三、查看表
四、删除表
五、修改表结构
一、MySQL 数据类型
分类 | 类型名称 | 类型说明 |
整数 | tinyInt | 微整型:很小的整数(1字节) |
smallint | 小整型:小的整数(2字节) | |
mediumint | 中整型:中等长度的整数(3字节) | |
int(integer) | 整型:整数类型(4字节) | |
bigint | 大整型:大长度的整数(8字节) | |
小数 | float[(n,m)] | 单精度浮点数(4字节) 十进制的浮点数无法用二进制精确表达 |
double[(n,m)] | 双精度浮点数(8字节)十进制的浮点数无法用二进制精确表达 | |
decimal(n,m) | decimal(10,2) 10代表整数位加小数位一共10位,2代表精确到小数点后2位 | |
日期 | time | 表示时间类型,只包含时间,HH:mm:ss |
date | 表示日期类型,只包含年月日,yyyy-MM-dd | |
year | 表示年份,只包含年份 | |
datetime | 同时可以表示日期和时间类型, 包含年月日时分秒 yyyy-MM-dd HH:mm:ss | |
timestamp | 时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss, 如果不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值 |
|
字符串 | char(m) | 固定长度的字符串,无论使用几个字符都占满全部,m 为 1~255 之间的整数 |
varchar(m) | 可变长度的字符串,使用几个字符就占用几个,M 为 1~65535 之间的整数 | |
tinytext | 允许长度 0~255 字节 | |
text | 不确定长度的字符串,允许长度 0~65535 字节 | |
mediumtext | 不确定长度的字符串,允许长度 0~167772150 字节 | |
longtext | 不确定长度的字符串,允许长度 0~4294967295 字节 | |
大二进制 | tinyblob Big Large Object | 允许长度 0~255 字节 |
blob | 允许长度 0~65535 字节 | |
mediumblob | 允许长度 0~167772150 字节 | |
longblob | 允许长度 0~4294967295 字节 |
二、创建表
语句 | 描述 |
careate table 表名 ( 列名1 数据类型 [约束] [comment 注释], 列名2 数据类型 [约束] [comment 注释], ...... )[comment 注释]; |
创建表 CREATE:创建 TABLE:表 |
create table 新表名 like 旧表名; | 快速创建一个表结构相同的表 |
-- 创建 student 表包含 id,name,birthday 字段create table student ( id int unsigned primary key , -- 整数 unsigned(无符号整数) name varchar(20) not null,-- 字符串 birthday date not null-- 生日,最后没有逗号);-- 创建 s1 表,s1 表结构和 student 表结构相同create table s1 like student;desc s1;
三、查看表
语句 | 描述 |
show tables; | 查看某个数据库中的所有表 |
desc 表名; | 查看表结构 |
show create table 表名; | 查看创建表的 SQL 语句(为了避免关键字的冲突) |
-- 查看 day21 数据库中的所有表use day21;show tables;-- 查看 student 表的结构desc student;-- 查看 student 的创建表 SQL 语句show create table student;
四、删除表
语句 | 描述 |
drop table 表名; | 直接删除表 |
drop table if exists 表名; | 判断表是否存在,如果存在则删除表 |
-- 直接删除表 s1 表drop table s1;-- 判断表是否存在并删除 s1 表drop table if exists `create`;
五、修改表结构
语句 | 描述 |
alter table 表名 add 列名1 数据类型 [约束] [comment 注释], add 列名2 数据类型 [约束] [comment 注释], ...... ; |
添加字段(表列) |
alter table 表名 modify 列名1 数据类型 [约束] [comment 注释], modify 列名2 数据类型 [约束] [comment 注释], ...... ; |
修改列类型 |
alter table 表名 change 旧列名1 新列名1 数据类型 [约束] [comment 注释], change 旧列名2 新列名2 数据类型 [约束] [comment 注释], ...... ; |
修改列名 |
alter table 表名 drop 列名1, drop 列名2, ...... ; |
删除列 |
rename table 表名 to 新表名; | 修改表名 |
alter table 表名 character set 字符集; | 修改字符集 |
-- 为学生表添加一个新的字段 remark,类型为 varchar(20)alter table student add remark varchar(20);-- 将 student 表中的 remark 字段的改成 varchar(100)alter table student modify remark varchar(100);-- 将 student 表中的 remark 字段名改成 intro,类型 varchar(30)alter table student change remark intro varchar(30);-- 删除 student 表中的字段 home_tel 和 home_addressalter table studentdrop home_tel,drop home_address;-- 将学生表 student 改名成 student2rename table student to student2;-- 将 student2 表的编码修改成 gbkalter table student2 character set gbk;