mysql数据库深入了解

数据库设计:(三大范式看情况遵守,不一定死守这三个规范)

第一范式:要求表的每个字段都必须独立的不可分割的最小单元。

第二范式:要求表的除主键外的其他字段都和主键有依赖关系。(一张表表达一个意思)

工表:employee

员工编号  员工姓名  部门名称   订单名称(这里违反)      –违反第二范式,即不能出现与表无关的字段

员工表:employee

员工编号  员工姓名  部门名称        
–符合第二范式

第三范式:要求表的除主键外的其他字段都只能由主键决定。 

当用到外键约束时,一般则满足第三范式

多表查询:
1)内连接查询:  inner join
作用: 当两种表满足了连接条件时的数据才会显示。
2)左外连接: left outer join
作用:左表完全显示。右表的数据如果满足了连接条件,则显示对应的数据,如果不满足条件,那么显示null。、
SELECT d.name,e.name
FROM dept d
LEFT OUTER JOIN employee e
ON d.id=e.deptId;
3)右外连接: right outer join
作用:右表完全显示。左表的数据如果满足了连接条件,则显示对应的数据,如果不满足条件,那么显示null。
SELECT d.name,e.name
FROM employee e
RIGHT OUTER JOIN dept d
ON d.id=e.deptId;  

数据约束:
默认值: default 默认值
唯一: unique 
非空: not null
主键:primary key (唯一+非空 )
自增长: auto_increment
级联操作: 
级联更新: on update cascade
级联删除: on delete cascade 

级联: 当有了外键的时候,我们希望修改或删除数据的时候,修改或删除了主表的数据,同时能够影响副表的数据,这时就可以使用级联。
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
deptId INT,
— 添加级联修改: ON UPDATE CASCADE
— 添加级联删除: ON DELETE CASCADE 
CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE 
—          外键名称                     外键字段  参考          
)

外键: foreign key:

添加外键约束(foreign key)
— 需求:deptId字段值来自于dept表的id字段的值,这时可以给deptId字段添加外键约束。
— 员工表(副表: 被别的表约束。外键设置在副表)
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
deptId INT,
CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
—          外键名称                     外键字段  参考          
)

— 部门表(主表:约束别人的表)
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
)
当有了外键之后,应该如何管理数据呢?
— 插入数据: 先插入主表的数据,再插入副表数据
— 修改数据: 先修改主表数据,再修改副表数据
— 删除数据:先删除副表数据,再删除主表数据

    原文作者:mysql
    原文地址: https://blog.csdn.net/q739404976/article/details/54612698
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞