mysql的一些基本常识(约束 、事务,事务隔离级别)
一 mysql的基本数据类型
二 mysql中查询
2.1.where与having的区别
1.都是对条件进行筛选;
2.where是分组前对设置条件筛选;having是对分组后的数据进行过滤筛选
3.where 后面不能使用聚合函数;having后面可以跟聚合函数。
2.2 查询完整语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2.3 约束
约束: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
2.3.1 非空约束:
not null,值不能为null
1. 创建表时添加约束
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
2. 创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3. 删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
2.3.2 唯一约束 unique
1. 创建表时,添加唯一约束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束
);
* 注意mysql中,唯一约束限定的列的值可以有多个null
2. 删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
3. 在创建表后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
2.3.3 主键约束
1. 注意:
1. 含义:非空且唯一
2. 一张表只能有一个字段为主键
3. 主键就是表中记录的唯一标识
2. 在创建表时,添加主键约束
create table stu(
id int primary key,-- 给id添加主键约束
name varchar(20)
);
3. 删除主键
-- 错误 alter table stu modify id int ;
ALTER TABLE stu DROP PRIMARY KEY;
4. 创建完表后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
5. 自动增长:
1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长
2. 在创建表时,添加主键约束,并且完成主键自增长
create table stu(
id int primary key auto_increment,-- 给id添加主键约束
name varchar(20)
);
3. 删除自动增长
ALTER TABLE stu MODIFY id INT;
4. 添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
2.3.4 外键约束
1. 在创建表时,可以添加外键
* 语法:
create table 表名(
....
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
2. 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
3. 创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
创建部门表:
create table tb_department(
id int(5) primary key auto_increment ,
dp_name varchar(50))
创建员工表:
create table tb_yuangong(
id int(5) primary key auto_increment,
emp_name varchar(50),
depart_id int(5),
constraint fk_depart_id foreign key (depart_id) references tb_department(id)
)
2.3.5 级联操作
1. 添加级联操作
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;
2. 分类:
1. 级联更新:ON UPDATE CASCADE
2. 级联删除:ON DELETE CASCADE
设置级联操作:
ALTER TABLE tb_yuangong DROP FOREIGN KEY fk_depart_id;
ALTER TABLE tb_yuangong ADD CONSTRAINT fk_depart_id FOREIGN KEY (depart_id) REFERENCES tb_department(id) ON UPDATE CASCADE ON DELETE CASCADE;
将主表的id为1设置为5,查看从表
可以看到自动更新为id为5,
总结:级联操作主表发生修改,删除,从表也跟着改动。
2.4 范式
第一范式: 强调的是原子性;要求各个列不可再分解。
第二范式:强调的是唯一性;消除各个列之间的部分依赖
第3范式:情调的是冗余性;字段不存在多余,即消除传递依赖。
数据库逻辑设计之三大范式通俗理解,一看就懂,书上说的太晦涩 - 知乎
2.5 备份
进入到mysql数据库的安装目录的bin目录下: mysqldump -uroot -p 数据库名称 > 存储路径
使用命令行将mysql数据库导入导出操作_健康平安的活着的专栏-CSDN博客
2.6 事务
2.6.1 事务的性质
一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
3. 隔离性:多个事务之间。相互独立。
4. 一致性:事务操作前后,数据总量不变
多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
2.6.2 事务的隔离级别
1.事务的并发问题:
1.脏读:一个事务,读取到另一个事务中没有提交的数据,如:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2.不可重复读(虚读):在同一个事务中,两次读取到的数据不一样,如:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
3幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。如幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
2.事务的隔离级别: 1.读未提交,2.不可重复读 3.可重复读,4.串行化
1.read uncommitted(读未提交)
可以看到未提交的数据(脏读),举个例子:别人说的话你都相信了,但是可能他只是说说,并不实际做。
事务隔离级别为读未提交时,写数据只会锁住相应的行
2.read committed(不可重复读)
读取提交的数据。但是,可能多次读取的数据结果不一致(不可重复读,幻读)。用读写的观点就是:读取的行数据,可以写。(没有锁,可以随意的修改写操作)
3.repeatable read(MySQL默认隔离级别,可重复读)
可以重复读取,但有幻读。读写观点:读取的数据行不可写,但是可以往表中新增数据。在MySQL中,其他事务新增的数据,看不到,不会产生幻读。采用多版本并发控制(MVCC)机制解决幻读问题。
事务隔离级别为可重复读时,如果检索条件有索引(包括主键索引)的时候,默认加锁方式是next-key 锁;如果检索条件没有索引,更新数据时会锁住整张表。一个间隙被事务加了锁,其他事务是不能在这个间隙插入记录的,这样可以防止幻读。
4.serializable
可读,不可写。像java中的锁,写数据必须等待另一个事务结束。
事务隔离级别为串行化时,读写数据都会锁住整张表
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
https://www.cnblogs.com/study-makes-me-happy/articles/8989412.html
MySQL的四种事务隔离级别 - 花弄影 - 博客园
mysql的一些基本常识(约束 、事务,事务隔离级别)相关推荐
- mysql隔离级别 isolation_MySQL事务和隔离级别
本文以MySQL数据库为蓝本进行讲解- 一 事务是什么 事务'封装'了一系列操作,使得这一系列操作变成了一个最小的工作单元,也可以理解为打包.压缩一起带走-,一起退回- 我理解的事务是:对现实世界中的 ...
- mysql重复读导致余额不对_我所理解的MySQL之四:事务、隔离级别及MVCC
mysql教程栏目介绍MySQL相关的事务.隔离级别及MVCC. MySQL 系列的第四篇,主要内容是事务,包括事务 ACID 特性,隔离级别,脏读.不可重复读.幻读的理解以及多版本并发控制(MVCC ...
- MySQL数据库引擎、数据事务与隔离级别
MySQL数据库引擎 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEA ...
- 从根儿上理解MySQL | 事务的隔离级别与MVCC
目录 事务简介 事务的概念 MySQL中事务的语法 事务的隔离级别 事务并发执行遇到的问题 MySQL中支持的四种隔离级别 MVCC原理 版本链 ReadView MVCC小结 事务简介 事务的概念 ...
- 第七周 Java语法总结之数据库大全_DDL_DML_DQL_约束_备份与还原_表的关系_三大范式_多表查询(内连接_外连接_子查询)_musql事务_隔离级别
文章目录 数据库 DDL语句:数据库定义语句 1.库的增删查改 1.查询当前mysql下所有的数据库 2.创建数据库 3.查看创建数据库的默认的字符集(了解) 4.修改数据库的字符集(了解) 5.删除 ...
- MySQL事务学习 -- 隔离级别
6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失 ...
- mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...
上节回顾 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解. 这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 ...
- mysql事务隔离级别 花_MySQL事务的隔离级别
为什么要有事务? 当需要对一个数据表进行一系列多个操作的情况下,为了防止这些操作中一部分操作成功,而另一部分操作失败,从而导致数据不正确,我们就需要事务来控制了. 当两个人或者多个人同时操作同一条数据 ...
- Mysql的事务事务的特征事务的隔离级别
目录 事务 事务的(ACID)特征 事务的隔离级别 事务 事务的概念: 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么 ...
- 必须懂的 MySQL 的事务与隔离级别
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:微信支付的软件架构,牛逼!个人原创+1博客:点击前往,查看更多 出处:哈基石 链接:https://segmen ...
最新文章
- oracle nvl用法
- 【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )
- Endian Bitfiled
- 通过yum安装Nginx
- UML学习-活动图创建
- 大型网站服务器 pdf,大型网站服务器容量规划[PDF][145.25MB]
- Fence(CF-324F)
- javaWeb校园宿舍管理解析(二)
- perl语言数据类型
- 定时让电脑进入休眠状态
- 为什么阿里规定需要在事务注解 @Transactional 中指定 rollbackFor?这...
- 如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』...
- 目标追踪论文之狼吞虎咽(2):在线被动攻击学习
- lodop 小票排版_Lodop打印小票
- 园林景观cad_景观广场及绿化设计(附CAD平面图)
- web前端面试题(关于闭包)
- java公众号图片上传_调用微信公众号接口上传图片素材
- 我的Python心路历程 第十期 (10.12 股票实战可视化之分位数)
- 系统安全性之认证技术
- 导入三方库是出现NotFount
热门文章
- 计算机和网络设备的辐射强,计算机网络设备信息辐射泄漏与抑制
- 磁盘分区MBR和GPT格式详解(Linux)
- 在UTF-8下写字库
- 计算机的6个发展阶段,现代计算机发展的6个阶段
- 七彩cms云转码_七彩CMS视频转码 2019云转码彻底开源系统版本号
- 因子图优化原理(iSAM、iSAM2论文解析)
- STM32F103C8T6核心开发板下,通过TIM3和TIM4输出PWM波形实现2个 LED呼吸灯的效果
- PhotoShop CS4快捷键大全
- 〖全域运营实战白宝书 - 高转化文案速成篇③〗- 高打开率标题型文案的10大黄金法则
- python 银行_python 银行系统