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)
)
当有了外键之后,应该如何管理数据呢?
-- 插入数据: 先插入主表的数据,再插入副表数据
-- 修改数据: 先修改主表数据,再修改副表数据
-- 删除数据:先删除副表数据,再删除主表数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值