1、主键primary key特性给某一列设置防止出现重复一张表只能有一个主键外键的前提是依赖主键也可以做多列主键两个字段不能出现重复创建主键CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增name VARCHAR(20),age INT);更改时只能先删除后添加2、外键 foreign key特性强制保证外键列和主表的主键列一致必须依靠主键存在创建外键***PRIMARY KEY (order_id),#标示主键FOREIGN KEY (user_id) #外键 REFERENCES student(id)# 引用对比student表的id列);删除时先删子表再删主表修改时也是先删后添3、索引类型* 按数据结构分类可分为Btree索引、Hash索引、Fulltext索引。* 按物理存储分类可分为聚簇索引、二级索引辅助索引。* 按字段特性分类可分为主键索引、普通索引、前缀索引。* 按字段个数分类可分为单列索引、联合索引复合索引、组合索引。意义索引是自动调用的是对经常查找的数据建立的数据库在查询数据时有索引会优先使用索引查询提升速度命令show index from 表名 查看所有索引SELECT * FROM 表名FORCE INDEX (索引名)WHERE 条件; # 强制使用索引主键默认有主键索引前面加explain 查看查询路径有没有索引 ref √ all ×4、存储过程将一系列SQL语句封装成一个函数类似于shell和python中的函数便于重复使用SHOW PROCEDURE status; 查看所有存储过程创建储存过程creat procedure 名字 in 变量名 int #什么类型就穿什么类型beginselect * from 表名 where 字段名传进来的变量名 ;end在navicat中可用在虚拟机中需要DELIMITER // 更改结束符最后用//结尾delimiter 恢复源结束符使用call命令调用函数 CALL 存储名(#参数);5、check约束和枚举的区别枚举只能固定列表选择不能范围check约束可以设定范围比如0-100更灵活创建创建表时加入 CHECK (条件),表已创建时添加 alter table 表名 add constraint 约束名 check条件删除约束alter table 表名 drop constraint 约束名6、触发器trigger在执行任务之前或之后自动执行一段SQL常用来做解决预案三种触发时机 insert、update、delete ---两种触发顺序 before、after以delete为例CREATE TRIGGER触发器名称BEFORE DELETE ON 表名1 #给这个表设置触发器FOR EACH ROW #循环读取BEGINDELETE FROM 表名2 WHERE student_id OLD.id;END #当表1执行delete操作之前去表2删掉old.id两种触发顺序 before、after