DDL(Data Definition Language):数据定义语言
create、drop、alter、rename、truncate
-- 创建表 create table if not exists student( id int not null auto_increment, -- 自增 s_id varchar(20) not null unique, -- 非空约束、唯一约束 s_name varchar(20) not null, age int default 12, -- 默认值 sex enum('男','女') default '男', -- 枚举 create_time datetime default current_timestamp, -- 时间戳 update_time datetime default current_timestamp, primary key(id) -- 主键 )Engine = InnoDB; -- 表引擎 -- 删除表 drop table student; -- 显示表结构 desc student; -- 显示创建表的语句 show create table student; -- 修改表 分为以下三种类型: -- 1、增、删、改字段 alter table student add address varchar(20); alter table student drop address; alter table student change column s_age age int default 12; -- 注意,修改字段会导致默认值的设定失效,若要保留默认值,需要明确设定 -- 2、改字段类型 alter table student modify column s_id int not null; -- 修改字段会导致not null约束失效 -- 3、增、删五大约束(primary key、foreign key、unique、not null、check) -- 增、删加主键约束 alter table student add constraint primary key(id); alter table student drop primary key id; -- 自增字段必须有唯一或者主键约束 -- 增、删外键约束 alter table student add constraint fk_s_id foreign key(s_id) references stu_tea(s_id); alter table student drop foreign key fk_s_id; -- 增、删唯一约束 alter table student add unique(s_id); alter table student drop index s_id; -- 增、删非空约束 alter table student modify column s_id int not null; -- 同修改字段类型的语句一样 alter table student modify column s_id int; -- 修改字段类型会导致not null约束失效 -- 增、删检查约束 (mysql允许使用check,但是并不产生效果) alter table student add constraint check_age check(age>10 and age<25); alter table student drop check_age; -- 更改表名 alter table student rename student_1; rename table student to student_1; -- 完全清空一个表 truncate table student; -- delete删除数据,保留表结构,可以回滚,如果数据量大,很慢 -- truncate 删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快 -- drop 删除数据和表结构以及约束,删除速度最快
DML(Data Manipulation Language):数据操作语言
insert、delete、update、select
-- 增、删、改、查 insert into student(s_id,s_name,age,sex) values('13477125','zcj',23,'男'); insert into student(s_id,s_name,age,sex) values('13477120','xcm',23,'男'); delete from student where s_id='13477120'; update student set update_time = current_timestamp where s_name='zcj'; select * from student;
DCL(Data Control Language):数据控制语言
grant、revoke
Transaction Control:事务控制
commit、rollback、savepoint
触发器:
create trigger trigger_update before update on student for each row begin set new.update_time = current_timestamp; end drop trigger trigger_update