MySQL数据库笔记<二>

约束

约束的概念

  • 约束是作用于表的列上的规则,用于限制加入表的数据。
  • 约束的存在保证了数据库中数据的正确性、有效性和完整性。

约束的分类

约束名称描述关键字
非空约束保证列中所有数据不能有null值NOT NULL
唯一约束保证列中所有数据各不相同UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,未指定值采用默认值DEFAULT
外键约束外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性FOREING KEY

一般主键用的比较多,在创建表的时候,可以将PRIMARY KEY 与auto_increment一起使用,实现主键的自增长。

约束中主要讲解外键约束:
语法:
(1)添加约束
建表时添加外键约束

CREATE TABLE 表名(
	列名 数据类型,
	...
	[CONSTRAINT] [外键名称] FOREING KEY[外键列名] REFERENCES 主表(主表列名)
);

建完表后添加外键约束:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREING KEY (外键字段名称) REDERENCES 主表名称(主表列名称);

(2)删除约束

ALTER TABLE 表名 DROP FOREING KEY 外键名称;

数据库设计

表的三种关系:一对一,一对多,多对多

  • 一对一:如用户和用户详情的关系
    一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能。
    实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)。
  • 一对多:如员工和部门的关系
    实现方式:使用外键来实现,“多”的一方用“一”的那一方的主键作为自己的外键。
  • 多对多:如订单与商品的关系
    实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。

多表查询

多表查询:从多张表查询数据,可以分为两类:连接查询子查询
连接查询
   - 内连接:相当于查询A、B表交集数据
   - 外连接:
      左外连接:相当于查询A表所有数据和交集部分数据。
      右外连接:相当于查询B表所有数据和交集部分数据。

  1. 内连接(查询两个表交集的数据)
隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE 条件;

显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;(INNER可省略不写)
  1. 外连接
左外连接:相当于查询左表所有数据和交集部分数据
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;

右外连接:相当于查询右表所有数据和交集部分数据
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;(OUTER可以省略不写)
  1. 子查询
    概念:查询中嵌套查询,称嵌套查询为子查询
    子查询根据查询结果不同,作用不同:单行单列、多行单列、多行多列
      单行单列:作为条件值,使用=、!= 、> 、< 等进行条件判断。
      SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
      多行单列:作为条件值,使用in等关键字进行条件判断。
      SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);
      多行多列:作为虚拟表。
      SELECT 字段列表 FROM (子查询) WHERE 条件;

事物

  1. 数据库的事物是一种机制、一个操作序列,包含了一组数据库操作命令
  2. 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
  3. 事物是一个不可分割的工作逻辑单元。
    事物的三个操作
开启事务
START TRANSACTION 或者 BEGIN;
提交事务
COMMIT;
回滚事务
ROLLBACK;

事物四大特征

  1. 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败。
  2. 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  3. 隔离性(Isolation):多个事务之间,操作的可见性。
  4. 持久性(Durability):事务一旦提交或回滚,它对数据库中数据的改变就是永久的。

查询事务的默认提交方式(1为自动提交,0为需要手动提交):SELECT @@autocommit;
修改事务的提交方式:SET @@autocommit = 0;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值