约束
概念
约束是作用于列上的规则,限制加入表的数据
原版:
create table emp (
id int,
ename varchar(50),
joindate date,
salary double(7,2),
bonus double(7,2)
);
约束实例:
默认约束不给值时 才能生效 是0
id int primary key auto_increment,—员工id,主键且自增长(当列是数字类型 唯一约束)
若是后期修改,表一定要重新删除后再创建
外键约束
外键是用来让两个表的数据之间建立链接,保证数据的一致性和完整性。
CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id)
删除完记录后 才能删除主表中元素 (由于外键的约束)
删除外键:
alter table 表名 drop foreign key 外键名称;
建表之后才进行添加外键 :
alter table 表名 add constraint 外键名称 foreign key (从表列名)references 主表名(主表列名);
数据库设计
简介
软件开发步骤:需求分析-设计-编码-测试-安装
设计:软件结构设计(功能 模块)
数据库设计(表 字段 表关系)
接口设计(功能 具体)
过程设计(整个过程)
表关系
一对一(用于表的拆分 常用的元素和不常用的元素)
一对多:
在多的一方建立外键,指向一的一方的主键
多对多:
建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。
-------------创建两个表及中间表--------------
增加外键:
alter table tb_order_goods add CONSTRAINT fk_order_id foreign key(order_id) REFERENCES tb_order(id);
alter table tb_order_goods add CONSTRAINT fk_goods_id foreign key(goods_id) REFERENCES tb_goods(id);
一对一:
一对一关系用于表的拆分,将一个实体中经常使用的字段放在一张表,不经常使用的字段放在另一张表。
实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一。
多表查询
select * from emp;
– 多表查询
select * from emp , dept;
– 笛卡尔积 : 有 A ,B两个集合 取 A,B所有的组合情况
连接查询– 查询emp 和 dept 的数据 ,emp.dep_id = dept.did
select * from emp , dept where emp.dep_id = dept.did;
事务
是一种机制,一个操作序列,包含了一组数据库操作命令。
这一组数据库命令要么同时成功,要么同时失败。
事务是一个不可分割的工作逻辑单元。
出异常 进行回滚事务
– 开启事务
BEGIN;
– 转账操作
– 1. 查询李四账户金额是否大于500
– 2. 李四账户 -500
UPDATE account set money = money - 500 where name = ‘李四’;
– 出现异常了…
– 3. 张三账户 +500
UPDATE account set money = money + 500 where name = ‘张三’;
– 提交事务
COMMIT;
– 回滚事务
ROLLBACK;
事物的四大特征:原子性 一致性 隔离性 持久性
– 查看事务的默认提交方式
SELECT @@autocommit;
– 1 自动提交 0 手动提交
– 修改事务提交方式
set @@autocommit = 0;