前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql数据库2

Mysql数据库2

原创
作者头像
待你如初见
修改2022-08-30 17:56:30
6330
修改2022-08-30 17:56:30
举报
文章被收录于专栏:待你如初见待你如初见

数据库约束

约束的作用: 保证数据的完整性. 单表约束: 主键约束: primary key //一般后边还会写上auto_increment 唯一约束: unique 非空约束: not null* 多表约束: * 外键约束: foreign key多表的分析和设计

代码语言:txt
复制
    关系分类:
		一对多的关系:
			一个部门可以有多个员工, 一个员工只能属于某一个部门. 
			一个分类下有多个商品, 一个商品只能属于某一个分类.
			一个用户产生多个订单, 一个订单只能属于某一个用户.
		
		多对多的关系:
			一个学生可以选择多门课程, 一个课程也可以被多个学生选择.
			一个订单包含多个商品, 一个商品也可以在多个订单中.
		
		一对一的关系: 
			一个公司只能对应一个注册地址, 一个注册地址只能对应一个公司.

多表建表原则

  • 一对多的建表原则: * 在"多"的一方创建一个字段, 作为外键, 指向"一"的一方的主键.
  • 多对多的建表原则: * 需要创建第三张表(中间表), 在中间表中至少需要有两个字段, 分别作为外键指向多对多双方的主键.
  • 一对一的建表原则: * 唯一外键对应.

多表查询连接查询 交叉连接: //了解 select * from A,B; //最终结果获取到的是两个表的笛卡尔积, 一般不用这种做法. 内连接:(inner join) 显示内连接: select * from A inner join B on 条件; 隐式内连接: select * from A,B where 条件; 外连接:(outer join) 左外连接: select * from A left outer join B on 条件; 右外连接: select * from A right outer join B on 条件; 内连接和外连接的区别: 内连接: 查到的是 两个表的交集. 左外连接: 左边表的全部 和 两个表的交集. 右外连接: 右边表的全部 和 两个表的交集.子查询 概述: 指的是一条语句的查询条件需要依赖另一条语句的查询结果. in: 只要满足其中一个就行. any: 只要比给定的所有值中的任意一个大(小)就行. all: 必须比给定的所有值都要大(小).

事务

代码语言:txt
复制
    概述: 
		事务指的是逻辑上的一组操作, 组成这组操作的各个逻辑单元要么全部都成功, 要么全失败.
		
		//MySQL中默认情况下,一条语句是一个事务, 事务会自动提交.  
		//Oracle中默认事务是不提交的, 需要手动提交事务.
	
	MySQL事务管理的命令:
		start transaction;		//开启事务
		SQL语句1;				//要执行的SQL语句
		SQL语句2;			
		commit					//提交事务
		rollback;				//回滚事务
		
		show variables like '%commit%';
		
		
	事务的特性:
		1. 原子性.
			强调事务的多个操作不可分割.	
		2. 一致性.
			强调事务执行的前后, 数据完整性保持一致.
		3. 隔离性
			强调事务执行过程中, 不应该受到其他事务的干扰.
		4. 持久性
			强调事务一旦结束, 数据就持久到数据库中.
			
	如果不考虑事务的隔离性, 有可能会引发一些安全性的问题.
		读的方面:
			脏读:		指的是一个事务读到另一个事务未提交的数据.
			不可重复读: 指的是一个事务读到了另一个事务已经提交的 update的数据, 
						导致多次查询结果不一致.
			虚读/幻读:	指的是一个事务读到了另一个事务已经提交的 insert的数据,
						导致多次查询结果不一致.
		写的方面: (了解就行, 不用重点掌握)
			丢失更新.
		
		
		解决事务的读问题:
			设置事务的隔离级别:
				read uncommitted:	//未提交读
					脏读, 不可重复读, 虚读都有可能发生.
				read committed:		//已提交数据库
					避免脏读, 但是不可重复读和虚读是有可能发生的.
				repeatable read: 	//可重复读
					避免脏读, 不可重复读. 但是虚读是有可能发生的.
				serializable: 串行化的
					避免脏读, 不可重复读, 虚读
					
			安全性:
				read uncommitted < read committed < repeatable read< Serializable
			效率:
				read uncommitted > read committed > repeatable read  > Serializable
				
		一般数据库设置: read committed 和 repeatable read
			MySQL默认:	repeatable read
			Oracle默认: read committed

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库约束
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档