(有道云笔记)
(代码)
目录
规范的命名
数据库名: 全小写,用下划线连接 推荐为 company_project
表名: 全小写,用下划线连接 例如 user_role student_exam
列名 :第一个单词小写,后面首字母大写 displayName
表的规模
一个数据库里,通常有很多表,但每张表的特点是不一样的。(规模、访问频率)
表的规模:该表的最终的存储规模
有的表只存储几百条记录,而有的达到几万条
结论:只有存储规模较大的表才值得精打细算
表的访问
每个表的访问频率也是不一样的有的表很少被访问,有的表访问频繁
商品表,可能会被经常用于查询
系统日志表记录了系统事件,很少被访问
结论:当一个表经常被访问时,要精心设计
合适的数据类型
比如,对于整型来说有tinyint smallint int bigint
tinyint 比 int 可能有哪些好处?
-节省存储空间 (如果表的规模很小,则忽略)
-加快传输效率 (如果MySQL同机部署,则忽略)
-加快数据备份的速度 (如果数据备份不常发生,则忽略)
主键(Primary Key)
主键的作用:快速定位,保证唯一性
设计时要注意两点:
1 每一个表都应设立主键
2 主键字段一般用整数或短字符串
索引
(1) 索引里存储生日和行指针 (2) 索引里按顺序存储
ALTER TABLE `ysj_school`.`student` ADD INDEX (`id`);
在建立索引时,可以额外指定类型
-普通索引 :默认的索引类型
-唯一索引 Unique:索引里的值不允许重复 (常用)
-主索引 Primary:主键也是一种索引
-全文索引 FullText :为长文本建立的索引
索引不应无节制的添加
主键本质上也是一种索引
表的关联
表 student 和 exam 存在关联性
关联查询:
SELECT `name` ,`chinese`, `english`,`math`
FROM exam, student
WHERE exam.`id` = student.`id`;
2.(常用,添加表的别名,规范写法)
select a.name ,b.chinese, b.english, b.math
from exam a, student b
where a.`id` = b.`id`;
多表关联查询
-内连接 INNER JOIN
示例:
SELECT *
FROM student a INNER JOIN exam b
ON a.id = b.id
WHERE a.sex=0
其中,ON 表示连接条件
-外连接
左外连接 LEFT OUTER JOIN
示例:
SELECT *
FROM student a LEFT OUTER JOIN exam b
ON a.id = b.id
WHERE a.sex=0
示例:
右外连接 RIGHT OUTER JOIN
SELECT *
FROM student a RIGHT OUTER JOIN exam b
ON a.id = b.id
WHERE a.sex=0
示例:
a LEFT JOIN b ( a是左表 )
a RIGHT JOIN b ( b 是左表 )
外键 (FOREIGN KEY)
外键,作为一种约束条件,用于维护数据的完整性。(不让用户乱删、错改) 创建外键使数据库完善.
在外键约束时,设置删除选项 (Cascade)