2、DDL语句
2.1 CREAT语句
- 用于表的创建
2.1.1 表的创建
- 格式:creat table 表名 (字段名 数据类型 , 字段名2 ,数据类型 , 字段名3 ,数据类型);
- 建议以t_ 或者是 tbl_ 开始,可读性强
- 字段名、表名:见名知意
- 表名和字段名都属于标识符
- 规范:所有的标识符都是小写,单词与单词之间通过下划线进行衔接
【案例】:在test下创建一个学生表,其中性别的默认值设置为“男” create table t_student( no int , name varchar(32), sex char(1) default 'm' , age int(3), email varchar(255) ); 【案例】:创建一个用户表 create table t_user( id int , name varchar(32), birth date , create_time datetime ); // 快速创建表 可以将一个查询结果制成一个新的表 【案例】:将emp复制一份,成为新表,表名为emp2 create table emp2 as select * from emp ;
2.1.2 mysql常见的数据类型
- varchar(0~255):可变长度的字符串,根据实际长度动态分配空间
- char(0~255):定长字符串,效率高,但是使用不当会造成空间浪费
- int(0~11):整型
- bigint:长整型
- float:单精度浮点型
- double:双精度浮点型
- date:短日期类型 , 只包括年月日信息 默认格式:%Y-%m-%d
- datetime:长日期类型,包括年月时时分秒日期 %Y-%m-%d %h:%i:%s
- clob(>=255):字符大对象,最多存储4个G的字符串,比如简介、说明等
- blob:二进制大对象,存储图片、声音、视频等流媒体数据 【插入数据时,用IO流】
2.2 DROP语句
- 格式:
- drop table t_student ; // 当表不存在时,会报错
- drop table if exists t_student 更加健壮
2.3 TRUNCATE语句
- 格式:truncate table 表名
- 特点:物理删除 , 效率高 , 表会被一次截断 ; 不支持回滚
// 快速删除表中的数据 ---- truncate语句 【案例】:删除dept_bak表中的所有数据 truncate table dept_bak ; 当表非常大,上亿条记录时,可以选择使用此方法。
2.4 ALTER语句
- 字段的增删改
- 字段的增加
- 格式:alter table 表名 add 新字段名 新字段数据类型 ;
- 字段的删除
- 格式:alter table 表名 drop 字段名 ;
- 字段的修改
- 对数据类型的修改
- 格式:alter table 表名 modify 字段名 字段名新的数据类型 ;
- 对数据名称的修改
- 格式:alter table 表名 change 字段名 新字段名 新字段名的数据类型 ;
// 对表的增加 【案例】:向dept_bak中增加一个字段STURCT alter table dept_bak add STURCT varchar(40); // 对表的删除 【案例】:删除字段名STRUCT alter table dept_bak drop STRUCT ; // 对表的修改 【案例】:将STRUCT字段的数据类型修改为int型 alter table dept_bak modify STRUCT int ; 【案例】:将STRUCT字段的名称修改为S alter table dept_bak change STRUCT S char(2) ;
- 对约束的增删改
- 增加
- 添加外键约束: alter table 从表 add constraint 约束名称 foreign key 从表(外键字段) references 主表(主键字段);
- 添加主键约束: alter table 表 add constraint 约束名称 primary key 表(主键字段);
- 添加唯一性约束: alter table 表 add constraint 约束名称 unique 表(字段);
- 删除
- 删除外键约束: alter table 表名 drop foreign key 外键(区分大小写) ;
- 删除主键约束: alter table 表名 drop primary key ;
- 删除约束约束: alter table 表名 drop key 约束名称 ;
- 修改
- mysql 对有些约束的修改时不支持,所以我们可以先删除,再添加
【案例】:向t_student表中添加约束 alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id); alter table t_student add constraint pk primary key(student_id); alter table t_student add constraint uk unique(email); 【案例】:去除t_student表中的外键、主键、约束的约束 alter table t_student drop foreign key classno; alter table t_student drop primary key no; alter table t drop key foreign key; 【案例】:修改t_student中的约束 alter table t_student modify student_name varchar(30) unique;