DDL——数据定义语言
2020-01-09 本文已影响0人
静如止水yw
1. 库
增
mysql> create database oldguo charset utf8mb4 collate utf8mb4_bin;
删
mysql> drop database oldguo;
改
mysql> alter database oldguo charset utf8mb4 collate utf8mb4_bin;
查(DQL)
mysql> show databases;
mysql> show create database oldguo;
建库使用规范
- 库名要和业务有关
- 库名不能有大写字母,可以有小写字符,数字,特殊符号.
- 库名不能数字开头
- 不能是预留字符
- 不能超过18个字符
- 必须要设置字符集,尽量是utf8mb4
- 收回所有用户的drop权限
2. 表
增
mysql> create table t1(id int)
举例:建表规范
CREATE TABLE `xuesheng` (
`xid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '学号',
`xname` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '姓名',
`xage` tinyint(3) unsigned NOT NULL DEFAULT '99' COMMENT '年龄',
`xsex` char(1) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性别',
`xtel` char(14) COLLATE utf8mb4_bin NOT NULL COMMENT '手机号',
`xcard` char(18) COLLATE utf8mb4_bin NOT NULL COMMENT '身份证号',
`xaddr` enum('北京市','上海市','深圳市','山东省','甘肃省','河北省','山西省','河南省','辽宁省','吉林省','黑龙江省','内蒙古自治区','新疆维吾尔自治区','四川省','陕西省','江苏省','福建省','湖北省','广东省','广西省') COLLATE utf8mb4_bin NOT NULL DEFAULT '北京市' COMMENT '地区',
`xdate` datetime DEFAULT NULL COMMENT '入学时间',
PRIMARY KEY (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ;
说明:
unsigned -- 表示非负数
comment -- 表示备注,注释的信息
auto_increment -- 自动增加值,通常和主键搭配使用
collate -- 表示字符串
commit -- 表示提交
not null -- 不允许为空值
datetime -- 时间类型
primary key -- 主键 等价于 唯一 (UNIQUE) 且 非空 (NOT NULL)
建表使用规范
- 表名:不能大写字母,和业务有关,不能数字开头,长度控制在18字符以内,不能和关键字同名.
- 要设置存储引擎类型: InnoDB,要设置字符集。
- 合适的,完整的,简短的数据类型.(会影响到索引的性能)
- 列名要有意义.
- 每个表要有主键,如果不知道要怎么设置主键,也需要找一个无关的自增长列设置为主键
- 尽量每个列都有not null(特别是将来要作为索引的列)
- 每个列要有注释信息.
删
mysql> drop table teacher_bak;
mysql> truncate table teacher;
##drop table、truncate table、 delete table的区别?
# drop table: 表结构+数据(物理性删除)
# truncate table : 数据(清空数据页)
# delete table : 清空数据行(逐行删除)
改
alter table
(1)添加列
mysql> desc xuesheng;
mysql> alter table xuesheng add xqq bigint not null unique commit 'qq号';
(2)删除列
mysql> alter table xuesheng drop xqq;
(3)修改
#1. 修改表名
alter table xuesheng rename to student;
(4)修改某一列的属性信息
mysql> desc student;
alter table student modify xname varchar(128) not null comment '姓名';
(5)修改列名和属性
alter table student change xsex xgengder char(2) not null default 'm' comment '性别';
#说明:
bigint -- 取值范围(-2^31 至 2^31-1)
unique -- 约束唯一标识数据库表中的每条记录
rename -- 给表重命名
modify -- 修改字符串或者数据的类型
change -- 改变名字或者列的属性
alter使用规范
- 执行alter语句,都是需要进行锁表操作的,此时只能发生查询操作,不能做修改操作
- 建议:alter语句,尽量在业务不繁忙期间发生。如果非得线上操作,建议使用pt-osc工具进行。
查
mysql> show tables;
mysql> show create database table;