-
2022-04-12 17:58:30
left join(左连接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右连接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行eg. select 字段列表 from 表1 left join 表2 on 条件
as 后加别名 on后加连接条件
DQL查询语句:
1.排序查询
order by 排序字段 排序方式
order by 排序字段1 排序方式1,排序字段2 排序方式2,......
排序方式:
ASC 升序(默认)
DASC降序2.聚合函数:将一列数据作为一个整体,进行纵向计算
count:计算个数 eg. select count(列名) from 表名;
max:计算最大值 min:计算最小值
sum:计算和
avg:计算平均值
*聚合函数排除null值
选择不包含非空的列进行计算 eg. select count(主键列名) from 表名;
ifnull函数 eg. select count(ifnull(列名,0)) from 表名;把此列为null的值置为03.分组查询
group by eg按列名1分组. select 列名1,列名2...... from 表名 group by 列名1
*需要加分组条件的,在group by前加where xxx
*分组后,筛选展示内容,需在group by 列名 后添加 having + 筛选条件4.分页查询
limit 开始的索引,每页条数
开始的索引 = ( 当前页码 - 1 ) * 每页条数更多相关内容 -
DQL语句
2018-05-16 23:30:57DQL语句查询不会对数据库中的数据进行修改.只是一种显示数据的方式Data Query Language DQL 数据查询语句,用于查询简单查询查询表所有行和列的数据 使用*表示所有列 SELECT * FROM 表名; 具体操作: SELECT * ...查询不会对数据库中的数据进行修改.只是一种显示数据的方式
Data Query Language DQL 数据查询语句,用于查询
简单查询
查询表所有行和列的数据
使用*表示所有列 SELECT * FROM 表名; 具体操作: SELECT * FROM student; 写出查询每列的名称 SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名; 具体操作: SELECT id, NAME ,age, sex, address FROM student;
查询指定列
查询指定列的数据,多个列之间以逗号分隔 SELECT 字段名 1, 字段名 2... FROM 表名; 查询 student 表中的 name 和 age 列 SELECT NAME, age FROM student;
别名查询
-- 使用关键字 -- 查询时给列、表指定别名需要使用 AS 关键字 使用别名的好处:是方便观看和处理查询到的数据 语法: SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名; SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名; 具体操作: 查询 sudent 表中 name 和 age 列,name 列的别名为”姓名”,age 列的别名为”年龄” SELECT NAME AS 姓名, age AS 年龄 FROM student; 查询 sudent 表中 name 和 age 列,student 表别名为 s SELECT NAME, age FROM student AS s;
清除重复值
查询指定列并且结果不出现重复数据 SELECT DISTINCT 字段名 FROM 表名; 具体操作: 查询 name,age 列并且结果不出现重复 name SELECT DISTINCT NAME, age FROM student;
查询结果参与运算
某列数据和固定值运算 SELECT 列名 1 + 固定值 FROM 表名; 某列数据和其他列数据参与运算 SELECT 列名 1 + 列名 2 FROM 表名; -- 注意: 参与运算的必须是数值类型
-- 需求: -- 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩 -- 查询的时候将数学和英语的成绩相加 -- 实现: -- 修改 student 表结构,添加数学和英语成绩列 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩 ALTER TABLE student ADD math INT; ALTER TABLE student ADD english INT; 给每条记录添加对应的数学和英语成绩 查询 math + english 的和 SELECT math + english FROM student; 结果确实将每条记录的 math 和 english 相加,但是效果不好看 查询 math + english 的和使用别名”总成绩” SELECT math + english 总成绩 FROM student; 查询所有列与 math + english 的和并使用别名”总成绩” SELECT *, math + english 总成绩 FROM student; 查询姓名、年龄,将每个人的年龄增加 10 岁 SELECT name, age + 10 FROM student;
条件查询
前面我们的查询都是将所有数据都查询出来,但是有时候我们只想获取到满足条件的数据 语法格式:SELECT 字段名 FROM 表名 WHERE 条件; 流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
准备数据 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);
比较运算符
-- 大于 <小于 <=小于等于 >=大于等于 =等于 <>、!=不等于 具体操作: 查询 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;不推荐 SELECT * FROM student3 WHERE age<>20;
逻辑运算符
-- and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足 具体操作: 查询 age 大于 35 且性别为男的学生(两个条件同时满足) SELECT * FROM student3 WHERE age>35 AND sex='男'; 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足) SELECT * FROM student333 WHERE age>35 OR sex='男'; 查询 id 是 1 或 3 或 5 的学生 SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;
in 关键字
语法格式:SELECT 字段名 FROM 表名 WHERE 字段 IN (数据 1, 数据 2...); 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);
范围查询
BETWEEN 值 1 AND 值 2 表示从值 1 到值 2 范围,包头又包尾 比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100 具体操作: 查询 english 成绩大于等于 75,且小于等于 90 的学生 SELECT * FROM student3 WHERE english>=75 AND english<=90; SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;
like 关键字
-- LIKE 表示模糊查询 SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; 满足通配符字符串规则的数据就会显示出来 所谓的通配符字符串就是含有通配符的字符串 MySQL 通配符有两个: -- %:表示 0 个或多个字符(任意个字符) -- _: 表示一个字符 具体操作: • 查询姓马的学生 SELECT * FROM student3 WHERE NAME LIKE '马%'; • 查询姓名中包含'德'字的学生 SELECT * FROM student3 WHERE NAME LIKE '%德%'; • 查询姓马,且姓名有三个字的学生 SELECT * FROM student3 WHERE NAME LIKE '马__';
-
SQL语言之DQL语句
2021-09-10 11:54:16数据库版本:MySQL8 文章目录 一、DQL语句简介 二、DQL语句 1.简单查询 2.条件查询 3.模糊查询 4.字段控制查询 5.结果集排序 7.聚合函数 7.分组查询 8.LIMIT结果显示 一、DQL语句简介 DQL,Data Query Language,数据...数据库版本:MySQL8
一、DQL语句简介
DQL,Data Query Language,数据查询语言,用来查询数据记录。DQL语句并不会改变数据库,而是让数据库将查询结果发送结果集给客户端,返回的结果是一张虚拟表。
DQL语句完整语法格式
SELECT 要查询的列名 FROM 基本表名 # 要查询的基本表名字 WHERE 限定条件 # 条件限定语句,用来筛选符合条件的记录 GROUP BY 分组列 # 按照分组列分组,比如说按照部门列分组,分组之后一个部门是一条记录 HAVING 限定条件 # 分组之后的条件,可以按照这个条件筛选分组之后的结果 ORDER BY 排序规则 # 按照排序规则对结果集进行排序 LIMIT 开始下标,结果数量; # 显示指定条数的结果记录
二、DQL语句
1.简单查询
1.查询指定列
SELECT 列名1,列名2,...,列名n FROM 基本表名 [WHERE条件语句];
2.查询所有列
SELECT * FROM 基本表名;
2.条件查询
所谓条件查询就是按照给出的条件查询,比如说查询姓名为李小明的记录。需要用到WHERE条件语句,常用到的运算符有:=、!=、<>、<、<=、>、>= 、BETWEEN…AND 、 IN(set)、 IS NULL、AND、OR、 NOT等等。
1.AND# 在hero表中查询occ='刺客'并且sex='男'的英雄信息; SELECT * FROM hero WHERE occ='刺客' AND sex = '男';
2.OR
# 在hero表中查询occ='刺客'或sex='男'的英雄信息; SELECT * FROM WHERE occ='刺客' OR sex = '男';
3.IN
# 查询ID是15,28,36的英雄信息 SELECT * FROM hero WHERE ID IN (15,28,36);
NOT IN作用与IN相反,用法相同
4.IS NULL
IS NULL用于查询数据为NULL的记录,NOT IS NULL用法与其相同# 查询姓名为null的记录 SELECT * FROM hero WHERE name IS NULL;
5.BETWEEN…AND
BETWEEN…AND用于查询在某个连续范围内的记录,包含开始值和结束值# 查询ID在50-80的英雄信息 SELECT * FROM hero WHERE ID BETWEEN 50 AND 80;
6.NOT
# 查询职业为刺客但不为男性的角色; 1. SELECT * FROM hero WHERE occ='刺客' AND sex NOT '男'; 2. SELECT * FROM hero WHERE occ='刺客' AND sex!='男'; 3. SELECT * FROM hero WHERE occ='刺客' AND sex <>'男';
3.模糊查询
模糊查询,就是通过模糊的条件查询数据,比如说查询name以'A'开头的记录。
SELECT * FROM 基本表名 WHERE 列名 LIKE '表达式' # 表达式必须是字符串形式
格式中的表达式中包含两个符号:
通配符 ’ _ ’ :代表任意一个字符
通配符 ’ % ’ :代表0-n个字符
举个例子来说,假如我们需要查询查找姓李的同学信息,那么查询条件可以设置为 “name like ‘李%’”,“李”是姓氏,放在第一位,’%'代表名字。# 1.在hero表中查询姓李的角色信息 SELECT * FROM hero WHERE name LIKE '李%'; # 2.在hero表中name包含"天"的角色信息 SELECT * FROM hero WHERE name LIKE '%天%';
4.字段控制查询
1.去除结果集中的重复记录
有的时候我们可能会查找到重复的记录,这时候我们需要使用 DISTINCT 关键字来删除结果集中的重复记录。SELECT DISTINCT 列名 FROM 基本表名 ; # 查询emp表中sal所有不重复的记录 SELECT DISTINCT sal FROM emp;
2.查看两列数据之和
如果两列数据均为数值类型,那么可以查看二者的数值之和。# 查询emp表中的sal1与sal2之和 SELECT sal1+sal2 FROM emp;
还有可能会遇到相加的两个数据中有一个null的情况,如果不进行相应处理的话结果也会变为null值,我们需要使用IFNULL()函数对null值处理。
格式:IFNULL(参数1,参数2) 作用:将出现的Null值转换为指定数值。 参数1:可能会出现Null值的列名。 参数2:Null转换的目标值。
SELECT sal+IFNULL(comm,0) FROM emp;
3.给列名添加别名
有时候查询结果中的列名会显的很不美观,我们可以给其添加别名。SELECT 列名 [AS] 新列名 FROM 基本表名; # AS 可以省略 SELECT sal salary FROM emp;
5.结果集排序
排序指的是针对结果集的排序,可以按照一个列的值排序,也可以按照多个列的值排序,使用的关键字均为 ORDER。
1.单列排序SELECT * FROM 基本表名 ORDER BY 排序参照列 ASC/DESC; 示例 SELECT * FROM hero ORDER BY id DESC;
ASC :升序 DESC:降序 如果没有指定排序规则,默认为ASC。
2.多列排序
SELECT * FROM 基本表名 ORDER BY 参照列1 ASC/DESC ,参照列2 ASC,DESC,...,参照列n ASC/DESC; 示例: SELECT * FROM hero ORDER BY id DESC,name ASC;
多列排序时,首先按照参照列1的排序规则排序,如果参照列数值相同,按照参照列2的排序规则排序,以此类推。
7.聚合函数
聚合函数用来对列数据进行运算,一共有五种。 1. COUNT(列名):统计指定列不为NULL的记录行数; 2. MAX(列名):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; 3. MIN(列名):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; 4. SUM(列名):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; 5. AVG(列名):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
1.COUNT
1. 查询emp表中的记录数 SELECT COUNT(*) FROM emp; 2. 查询emp表中有comm值的记录数 SELECT COUNT(comm) FROM emp;
2.MAX与MIN
查询emp表中sal列的最大值与最小值 1. SELECT MAX(sal),MIN(sal) FROM emp;
3.SUM
1. 查询emp表中depno=1002的所有人的sal之和; SELECT SUM(sal) Total FROM emp WHERE depno=1002;
4.AVG
1. 查询emp表中的sal平均值 SELECT AVG(emp) Average FROM emp ;
7.分组查询
所谓分组查询,就是将查询结果按照某个字段的值进行分类,比如说,查询每一个部门的工资总和,其中就是按照“部门”这一字段进行分组的。
1. 单列分组 SELECT 列名 FROM 基本表名 GROUP BY 分组参照列; 2. 多列分组 SELECT 列名 FROM 基本表名 GROUP BY 分组参照列1,分组参照列2,...,分组参照列n;
示例
1. 查询emp表中deptno与按照deptno分组的的sal之和的记录。 SELECT deptno,SUM(sal) FROM emp GROUP BY deptno; 2. 统计stu表中每个班级(gradename)中男女(gender)人数。 SELECT grandname,gender,COUNT(*) FROM stu;
注意,如果DQL语句中有分组操作,那SELECT后面只能跟分组参照列以及聚合函数。
HAING关键字:用于筛选分组后的数据记录,与WHERE条件子句作用一样,但HAVING子句可以使用聚合函数,WHERE子句不能。
1. 查询emp表中的部门工资总和大于50000的部门编号以及工资总和 SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>50000;
8.LIMIT结果显示
LIMIT作用为限制查询结果显示条数
语法格式 LIMIT 起始行数,显示条数; 示例 查询emp表中sal>2000的记录,结果从第1条开始,一共显示3条; SELECT * FROM emp WHERE sal>2000 LIMIT 0,3;
-
数据库DQL语句
2022-03-07 14:25:02数据库02 DML语句 DML用于对表中的数据进行增删改 添加数据 insert ...DQL语句 基本查询 条件查询 聚合函数 分组查询 having适用于分组之后的过滤 分页查询 练习 DQL语句执行顺序 ... -
MySQL中的DQL语句(MySQL基础查询语句)
2022-03-30 08:46:05适合基础的MySQL的基础查询语句 -
mysql学习日记——DQL语句
2021-02-10 12:29:35# # DQL:查询语句select字段列表from表名列表where条件列表group by分组字段having分组之后的条件order by排序limit分页限定基础查询:1. 多个字段的查询select 字段名1,字段名2... from 表名;* 注意:如果查询... -
Mysql中DQL语句简单介绍
2021-12-03 09:54:44SQL语言分为几大类 DML(Data Manipulate Language):数据操纵语言,用于添加、删除、修改数据库记录,并检查数据完整性 关键字:insert, delete, update 等 ... DQL(Data Query Language):数据查 -
mysql学习-DML语句和DQL语句
2019-06-11 16:30:47DML语句: 增删改表中数据(很重要) 添加数据 语法: insert into 表名(列名1, 列名2,…列名n) values(值1, 值2,…,值n); 应该在插入单行的时候使用VALUES,在插入多行的时候使用VALUE, 这样速度比较快一点,不过两... -
【Mysql 学习笔记】DQL语句(非常详细,结合多个案例快速入门)
2021-02-20 13:22:11MySql 笔记目录一、 DQL 语言(1) 基础查询① 基础查询语句② 查询常量值③ 查询表达式④ 查询函数⑤ 起别名测试一:测试二:⑥ 去重⑦ CONCAT 连接(2) 条件查询 (AND , OR , NOT)(3) 模糊查询 (like,between and... -
MySQL DQL语句的练习和执行顺序
2022-04-14 17:33:16DQL语句练习 首先创建一个数据库 创建数据库的语法: create database [if not exists] 数据库名; if not exists 的意思为数据库名称存在,不执行任何操作,数据库不存在,创建数据库 创建一个名为 itcast ... -
一条DQL语句的执行过程
2022-03-26 12:00:31DQL的执行过程以及MYSQL的架构 MYSQL的基础架构大体上可以分为两块: Server层 Server层包括连接器、查询缓存、分析器、优化器、执行器。MYSQL的基本服务都在这一层,内置函数、触发器、试图。 存储引擎层 ... -
DQL语句下
2021-01-19 21:54:361.数据库三范式(设计表的原则) NF:normal form 说明: 严格意义上,有5NF; 1NF,2NF,3NF,4NF,5NF;BCNF; 第一范式(1NF) 1NF的定义为:符合1NF的关系中的每个属性都不可再分 1NF是所有关系型数据库的最基本要求,你在... -
MySQL基础——DQL语句
2022-06-12 10:04:53在上篇文章中,我们学习了MySQL基础——DML语句,这篇文章学习MySQL基础——DQL语句。DQL英文全称是Data Query Language(数据查询语言),用来查询数据库中的表的记录。接下来的代码演示使用数据表结构如下:数据表... -
GBase产品学习-DQL语句
2022-02-24 10:30:33GBase 8a MPP Cluster执行单个复制表DQL语句,会下发到随机一个计算节点上。 因为每个节点都有复制表,随机选择一个节点执行即可。 -
DML语句和 DQL语句
2020-10-26 11:57:031.DML(一) 1.1 DML 的作用 1.1.1 插入数据的语法:insert into + 表名 1.1.2 ... DQL 语句 3.1 DQL 语句的作用 *表示所有,指查询所有的字段。 查询的字段没有顺序要求,但必须是表中有的。 3.2 查询字段 3.3 查询函数 -
Mysql基本语法DML和DQL语句的总结(笔记)
2022-05-12 18:48:24Mysql基本语法DML语句的总结(笔记) Mysql基本语法DML语句的总结--笔记Mysql基本语法DML语句的总结(笔记)1.DML语句之...里面语法是最多的5.1 最基本的查询语句 select5.2 DQL语句之条件查询 where 关键字5.3 DQL语句之 -
mysql DQL语句
2022-04-13 16:06:351. 条件查询 Select 字段名 from 表名 where 约束条件; 通配符: - 匹配单个字符 % 匹配任意多个字符 ...关键字 like 模糊查询 ...Select 字段名 from 表名 where 约束条件 Order by 关键字 asc/desc;... -
Spring+SpringMVC+Mybatis(开发必备技能)02、完整DML&DQL语句demo示例配套编码
2022-05-25 20:06:14Spring+SpringMVC+Mybatis(开发必备技能)02、完整DML&DQL语句demo示例配套编码 -
DQL语句、查询语句——MySQL
2021-12-20 17:09:35文章目录DQL语言(查询)1. 基础查询select例题2. 条件查询语法模糊查询like例题3. 排序查询4. 常见函数5. 分组函数6. 分组查询7. 连接查询8. 子查询9. 分页查询10. union联合查询 DQL语言(查询) 1. 基础查询 ... -
DQL语句的悲观锁
2021-05-14 21:37:45关于DQL语句的悲观锁? 对于一个DQL语句来说,末尾是可以添加这样一个关键句的:for update; select ename ,sal from emp where job = ‘Tom’ for update; 以上DQL语句的含义是: 在本次事务的执行过程中,... -
SQL中DQL语句的having和where的区别
2020-06-29 23:15:50DQL语句中,where和having语句区别: 1.where语句是放在group by的前边,having是放在group by的后边,因此,where是对分组前的数据进行过滤,而having则是对分组后的数据进行过滤; 2.where后边不能用聚合函数,... -
SQL语言(DML语句、DQL语句)
2020-08-26 20:39:39DQL 目的:在MySQL管理软件中,通过DDL语言实现数据的查询操作。 简单查询: 查看所有列:前提是需要进入数据库,不进入数据库,使用 数据库.表名 的格式。 select * from 表名; 查看部分列: select * 列1,列2,... -
Oracle-dql语句的执行顺序问题
2020-07-29 00:31:43最近在捣鼓Oracle,发现要学好DQL,了解sql语句的执行顺序是很有必要的,个人理解,欢迎指错! 1、 没有子查询的情况下 select avg(score) from student where gender = '男' group by class_id having avg... -
完整的DQL 语句
2020-10-14 19:35:47select 5 ... from 1 ... where 2 ... group by 3 ... having 4 ... order by 6 ... -
【mysql学习笔记14】DQL语句执行顺序
2022-06-18 21:53:43执行顺序 from>where>group by和having>select>order by>limit -
数据库的 DML DDL DCL DQL语句
2017-12-25 20:26:53数据库的 DML DDL DCL DQL语句SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成... -
DQL常用语句总结
2021-05-04 18:42:51DQL语句:常用来查询数据库表中的数据 关键字:SELECT … FROM … WHERE 语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit ...