2022/1/10数据库

1.表与表的对应关系

  • 一对一
  • 一对多
  • 多对一
  • 多对多

2.约束

2.1作用

  • 是一种限制,用于限制表中的数据,为了保证数据的准确性以及可靠性

2.2约束分类

  • NOT NULL,非空,用于保证某个字段不为空。支持列级约束。
  • DEFAULT,默认,用于保证某个字段具有默认值。支持列级约束。
  • PRIMARY KEY,主键,用于保证某个字段具有唯一性且非空。支持列级约束以及表级约束。
  • UNIQUE,唯一,用于保证某个字段具有唯一性。支持列级约束以及表级约束。
  • FORGIEN KEY,外键,用于限制两个表间的关系。支持表级约束。
    注:
  • 列级约束:指的是定义列的同时指定的约束
  • 表级约束:指的是列定义之后指定的约束。
  • 外键常用于一对多的关系。即表的某条数据,对应另外一张表的多条数据。
  • 将 “一” 的一方称为 :主表。
  • 将 “多” 的一方称为 :从表。
  • 通常将 外键 置于从表上,即从表上增加一列作为外键,并依赖于主表的某列。

3.锁

3.1 根据锁的粒度分:行锁与表锁

表级锁
只有当前用户可以操作整张表,其他请求排队等候,等待当前sql操作执行完毕
特点:开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发性极差,一致性极好
行级锁
只有当前用户可以操作该行记录,其他请求排队等候,等待当前sql操作执行完毕。
特点:开销大,加锁慢,会出现死锁,锁定力度小,发生锁冲突的概率低,并发性高
页面锁
开销时间、加锁时间、锁定粒度在表级锁与行级锁之间,会出现死锁,并发度中等

3.2根据数据库系统分:读锁和写锁

读锁:
其他请求可读不可写(共享锁),用于不更改或不更新数据的操作(只读操作)

select * from [table] lock in share mode;

写锁:

其他请求不可读不可写(排他锁),用于数据修改操作,确保不会同时同一资源进行多重更新

select * from [table] for update;

注:select…for update语句在执行中所有扫描过的行都会被锁上,因此在mysql中用悲观锁,务必确定走了索引,而不是全表扫描,否则将会把数据表锁住
3.3引擎对比myisam与innodb
MyISAM在执行查询语句前,会自动给涉及的所有表加读锁,在执行更新操作前,会自动给涉及的表加写锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值