除增删改查还需要了解的内容
1.分页和排序
分页:limit
排序:order by asc(正序)/desc(倒序)
例子:
SELECT *
FROM student s
INNER JOIN `result` r
ON s.StudentNo = r.StudentNo
INNER JOIN `subject` sub
ON r.`SubjectName` = '数据库结构-1'
ORDER BY StudentResult ASC
LIMIT 0,5
分页详解:
第一页:limit 0,5 即第(1-1)*5页
第二页:limit 5,5 即第(2-1)*5页
第三页:limit 10,5 即第(3-1)*5页
第N页:limit 5n,5 即第(n-1)*5页,此时页面大小为5
2.事务
事务正确执行的四个基本要素:原子性,一致性,隔离性,持久性。
例子:
-- 事务:模拟转账
SET autocomit = 0; -- 关闭自动提交
START TRANSACTION -- 开启一个事务(一组事务)
UPDATE account SET money=money-500 WHERE `name` = `A` -- A减500
UPDATE account SET money=money+500 WHERE `name` = `B` -- B加500
COMMIT; -- 提交事务,就被持久化了
ROLLBACK; -- 回滚
SET autocomit = 1; -- 恢复默认值
3.索引
分类:
- 主键索引(PRIMARY KEY)
- 唯一的标识,主键不可重复,只能有一个列作为主键
- 唯一索引(UNIQUE KEY)
- 避免重复的列出现,唯一索引可以重复,多个列都可以标识唯一索引
- 常规索引(KEY/INDEX)
- 默认的,index、key关键字来设置
- 全文索引(FullText)
- 在特定的数据库引擎下才有,MyISAM
- 快速定位数据
例子:
-- id_表名_字段名
-- CREATE INDEX 索引名 on biao(字段)
CREATE INDEX id_app_user_name ON app_user(`name`);
原则:
- 索引不是越多越好
- 不要对进程变动数据加索引
- 小数据量的表不需要加索引
- 索引一般加在常用来查询的字段上
拓展:索引的数据结构
4.三大范式
第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
前提:满足第一范式
每张表只描述一件事情
第三范式(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中每一列数据都和主键直接相关