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