目录

一、DQL语句

1.条件查询

(1)比较运算符

(2)逻辑运算符

(3)范围

(4)模糊查询

(5)排序

(6)聚合函数

(7)分组

(8)limit语句

二、数据库的约束

1.主键(PRIMARY KEY)

(1)主键的作用

(2)主键的特点

(3)创建主键

(4)删除主键

(5)主键自增

2.唯一(UNIQUE)

3.非空(NOT NULL)

4.默认(DEFAULT)

5.外键(FOREIGN KEY)

(1)新建表时增加外键

(2)已有表增加外键

(3)删除外键

(4)外键的级联

三、多表查询

1.多表查询的分类

2.内连接

(1)隐式内连接

(2)显示内连接

3.外连接

(1)左外连接

(2)右外连接

4.子查询

四、事务安全

1.操作事务

2.事务原理

3.回滚点

(1)作用

(2)设置回滚点语法

(3)回到回滚点语法

4.事务的四大特性

5.事务的隔离级别


一、DQL语句

1.条件查询

准备数据


CREATE TABLE student3 (
id INT,
NAME VARCHAR(20),
age INT,
sex VARCHAR(5),
address VARCHAR(100),
math INT,
english INT
);INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男','杭
州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳
岩',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);

(1)比较运算符

大于  >     小于  <         小于等于 <=

等于  =    不等于<> 、!=

①查询math分数大于80分的学生

SELECT * FROM  student3  WHERE math>80;

②查询english分数小于或等于80分的学生

SELECT * FROM student3 WHERE english<=80

③查询age等于20岁的学生

SELECT * FROM student3 WHERE age=20

④查询age不等于20岁的学生

SELECT * FROM student3 WHERE age!=20

(2)逻辑运算符

and:多个条件同时满足

or:多个条件满足其中一个

not(!)不满足

①查询age大于35且性别为男的学生(两个条件同时满足)

SELECT * FROM student3 WHERE age>35 AND sex='男'

②查询age大于35或性别为男的学生(两个条件其中一个满足)

SELECT * FROM student3 WHERE age>35 OR sex='男'

In关键字: select 字段名 from 表名 where 字段 in(数据1,数据2)

in里面的每个数据会作为一次条件,只要满足条件就会显示

In列表的值类型必须一致或兼容

In列表里的值不能使用模糊查询

③查询id是1或3或5的学生

SELECT * FROM student3 WHERE id IN(1,3,5)

④查询id不是1或3或5的学生

SELECT * FROM student3 WHERE id NOT IN(1,3,5)

(3)范围

BETWEEN 值1 AND 值2

①查询english成绩大于等于75,且小于等于90的学生

SELECT * FROM student3 WHERE english BETWEEN 75 AND 90

(4)模糊查询

LIKE表示模糊查询。

SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’

通配符字符串有两个:

%:表示0个或多个字符

_:表示一个字符

①查询姓马的学生

SELECT * FROM student3 WHERE NAME LIKE '马%'

②查询姓名中包含'德'字的学生

SELECT * FROM student3 WHERE NAME LIKE'%德%'

③查询姓马,且姓名有三个字的学生

SELECT * FROM student3 WHERE NAME LIKE'马__'

(5)排序

ORDER BY

ASC:升序

DESC:降序

①单列排序

查询所有数据,使用年龄降序排序

SELECT * FROM student3 ORDER BY age DESC

②组合排序

查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序

SELECT * FROM student3 ORDER BY age DESC,age ASC

(6)聚合函数

count():统计指定列记录数,NULL的不统计

sum():计算指定列的数值和,如果不是数值类型,结果为0

max():计算指定列的最大值

min():计算指定列的最小值

avg():计算指定列的平均值

①查询学生总数

SELECT COUNT(*) FROM student3

②查询年龄大于40的总数

SELECT COUNT(*) FROM student3 WHERE age>40

③查询数学成绩总分

SELECT SUM(math) FROM student3

④查询数学成绩平均分

SELECT AVG(math) FROM student3

⑤查询数学成绩最高分

SELECT MAX(math) FROM student3

⑥查询数学成绩最低分

SELECT MIN(math) FROM student3

(7)分组

GROUP BY

SELECT 字段1,字段2... FROM 表名

GROUP BY 分组字段 [HAVING 条件];

①按性别分组

SELECT sex FROM student3 GROUP BY sex

②查询男女各多少人

SELECT sex,COUNT(*) FROM student3 GROUP BY sex

③查询年龄大于25岁的人,按性别分组,统计每组的人数

SELECT sex,COUNT(*) FROM student3 WHERE age>25 GROUP BY sex

④查询年龄大于25岁的人,按性别分组,统计每组的人数,并只显示性别人数大于2的数据

SELECT sex,COUNT(*) FROM student3 WHERE age>25 GROUP BY sex HAVING COUNT(*)>2

having与where的区别:

①having是在分组后对数据进行过滤,可以使用聚合函数

②where是在分组前对数据进行过滤,不可以使用聚合函数

(8)limit语句

限制查询记录的条数

LIMIT offset,length

offset是指偏移量,默认为0

length是指需要显示的总记录数

①查询学生表中数据,从第三条开始显示,显示6条

SELECT * FROM student3 LIMIT 2,6

二、数据库的约束

1.主键(PRIMARY KEY)

(1)主键的作用

唯一标识一条记录

(2)主键的特点

①唯一

②不能包含NULL值

(3)创建主键

①在创建表的时候给字段添加主键

字段名 字段类型 PRIMARY KEY

②在已有表中添加主键

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

(4)删除主键

ALTER TABLE 表名 DROP PRIMARY KEY;

(5)主键自增

字段名 字段类型 PRIMARY KEY  AUTO_INCREMENT

DELETE和TRUNCATE的区别:

①DELETE 删除表中的数据,但不重置AUTO_INCREMENT的值。

②TRUNCATE 摧毁表,重建表,AUTO_INCREMENT重置为1。

2.唯一(UNIQUE)

字段名 字段类型 UNIQUE

3.非空(NOT NULL)

字段名 字段类型 NOT NULL

4.默认(DEFAULT)

字段名 字段类型 DEFAULT 默认值

5.外键(FOREIGN KEY)

(1)新建表时增加外键

[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)

(2)已有表增加外键

ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);

(3)删除外键

ALTER TABLE 从表 drop foreign key 外键名称;

(4)外键的级联

在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作。

ON UPDATE CASCADE:级联更新

ON DELETE CASCADE:级联删除

三、多表查询

1.多表查询的分类

2.内连接

(1)隐式内连接

看不到JOIN 关键字,条件使用WHERE 指定 SELECT 字段名 FROM 左表, 右表 WHERE 条件;

(2)显示内连接

使用INNER JOIN ... ON 语句, 可以省略INNER SELECT 字段名 FROM 左表 INNER JOIN 右表 ON 条件;

3.外连接

(1)左外连接

使用LEFT OUTER JOIN ... ON,OUTER 可以省略

在内连接的基础上保证左表的数据全部显示

(2)右外连接

使用RIGHT OUTER JOIN ... ON , OUTER 可以省略

在内连接的基础上保证右表的数据全部显示

4.子查询

(1)子查询的结果是一个值

(2)子查询的结果是单列多行

(3)子查询的结果是多列多行

总结:子查询结果只要是单列,肯定在WHERE 后面作为条件

SELECT 查询字段 FROM 表 WHERE 字段=(子查询);

子查询结果只要是多列,肯定在FROM 后面作为表

SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;

四、事务安全

1.操作事务

(1)手动提交事务

start transaction:开启事务

commit:提交事务

rollback:回滚事务

(2)自动提交事务

2.事务原理

事务开启之后, 所有的操作都会临时保存到事务日志, 事务日志只有在得到commit命令才会同步到数据表中,其他任何情况都会清空事务日志(rollback,断开连接)。

3.回滚点

(1)作用

可以供后续操作返回到该位置,而不是返回所有操作,这个点称为回滚点。

(2)设置回滚点语法

savepoint 回滚点名字;

(3)回到回滚点语法

rollback to 回滚点名字;

4.事务的四大特性

5.事务的隔离级别

事务在操作时的理想状态:多个事务之间互不影响,如果隔离级别设置不当就可能引发并发访问问题。

MySQL多表查询和事务安全相关推荐

  1. MYSQL多表查询与事务

    多表查询 避免笛卡尔积 select * from emp,dept where emp.`dept_id` = dept.`id`;#设置过滤条件(隐式内连接) select emp.`name`, ...

  2. asp多表查询并显示_MySQL多表查询与事务

    回顾 1. DQL单表高级查询条件 where比较运算逻辑运算符in关键字between关键字if null关键字like关键字% 多个任意字符_ 单个任意字符排序 order byascdesc聚合 ...

  3. mysql锁表查询和解锁操作

    mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...

  4. Mysql多表查询效率的研究(一)

    Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...

  5. MySQL多表查询全面解析实例【汇总】

    经常遇到mysql多表查询的问题,特整理关于MySQL多表查询全面解析实例分享记录.一步一步实战MySQL多表查询. 创建虚拟数据 -- [创建公司职员表] --DROP TABLE IF EXIST ...

  6. mysql锁表查询_mysql锁表查询(mysql查询锁表语句)

    mysql锁表查询(mysql查询锁表语句) 2020-07-24 11:44:55 共10个回答 怎么查找mysql中的锁表语句showprocesslist;SHOWPROCESSLIST显示哪些 ...

  7. MySQL_4_MySQL的多表查询和事务

    文章目录 MySQL的多表查询和事务 1.多表查询 1.1. 内连接查询 1.2.外连接查询 1.3.子查询 2.事务 2.1.事务的基本介绍 2.2.事务的四大特征 2.3.事务的隔离级别 3.DC ...

  8. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  9. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

最新文章

  1. Centos+PHP模块+exif扩展 (第三方模块)
  2. Python机器学习(1)-- 自己设计一个感知机(Perceptron)分类算法
  3. 牛客挑战赛47 C 条件(Floyd bitset优化)
  4. xtend怎么使用_使用Xtend构建Vaadin UI
  5. java编程有什么独特之处?
  6. 信息学奥赛一本通 1112:最大值和最小值的差 | OpenJudge NOI 1.9 05
  7. MVVM和MVC有什么区别
  8. (33)FPGA面试题附加约束的作用
  9. 48个国际音标发音图解暨口形及发音方法
  10. PHP面向对象学习五 类中接口的应用
  11. 11gR2 集群(CRS/GRID)新功能—— SCAN(Single Client Access Name)
  12. Hibernate学习(八):检索方式
  13. 海康摄像头如何查看IP,重置密码
  14. iconfont矢量图标库的引用方法
  15. Windows上实现iOS APP自动化测试:tidevice + WDA + airtest
  16. 一些U盘启动盘电脑热键的对应关系
  17. 常用显卡驱动下载合集
  18. varnish php,php监控varnish状态
  19. stm32h7b0替代h750程序导致单片机挂掉无法烧录程序问题
  20. 计算机硬件故障与软件故障,计算机常见故障可分为硬件和软件故障,具体介绍...

热门文章

  1. 密码技术--非对称加密算法及Go语言应用
  2. Kubernetes存储之ConfigMap
  3. 02-Linux Kernel(armv8-aarch64)的原子操作的底层实现
  4. checked_delete问题: Beyond the C++ STL: an introduction to boostdeleter::do_it
  5. 隐藏模块(无模块注入)
  6. 7、GRANT:用户授权
  7. 1.4 异常处理机制及异常处理的基本结构
  8. 1.11 Lambda表达式遍历Iterator迭代器
  9. 数据结构—分别用头插法和尾插法建立单链表
  10. Spring boot添加员工页面跳转