数据库仓库&大数据分析
- 主键(Primary Key):同一张表,将一条记录与其他记录区别开来的字段,一般为 ID
- 选取原则:不选取任何与业务相关的字段,避免变动风险
- 主键选择:
- 自增整数类型
- 全局唯一的 GUID 类型
- 联合主键:多个字段组合作为主键
- 外键(Foreign Key):通过另外一张表的主键联合两张表的字段称为外键,字段存储值为管理表的主键值。
约束
可以在创建表的时候为每个字段(列)添加约束,也可以在创建后使用ALERT修改
- NOT NULL:非空约束
- UNIQUE:唯一约束
- PRIMARY KEY:主键约束,NOT NULL 和 UNIQUE 的结合
- FOREIGN KEY:约束表中的数据指向另一个表的主键
- CHECK:保证字段的值符合指定条件
- DEFAULT:默认值,未赋值时默认使用
CREATE TABLE employees (
id int PRIMARY KEY,
name VARCHAR(225) NOT NULL,
age INT CHECK(age > 18),
apartment VARCHAR(225) DEFAULT 'A'
)
表关系
一对一:
一对多:通过创建外键,关联另外一个表。外键并不是通过列名实现的,而是通过定义外键约束实现的。外键约束会降低数据库的性能。
-- 创建外键
ALTER TABLE students
ADD CONSTRAINT fk_class_id/* 外键约束的名称,可以是任意名 */
FOREIGN KEY (class_id)/* 设置外键 */
REFERENCES classes (id);/* 设置关联表 */
-- 删除外键
ALTER TABLE students
DROP FOREIGN KEY fk_class_id;
多对多:通过一个表的外键关联到另一个表
| id | teacher_id | class_id |
|---|---|---|
| 1 | 001 | 001 |
| 2 | 002 | 001 |
TODO:索引
索引是为了解决查询速度问题,索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。
可以对一张表创建多个索引。索引的优点是提高了查询效率,缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢。
对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。
ALTER TABLE students
ADD INDEX idx_score (score);
TODO:事务
TODO:视图
视图即虚拟表,
TODO:触发器
参考资源
https://juejin.cn/post/7004697716403994638 https://www.jianshu.com/p/58da1060f0f5