目录

DQL语言

什么是查询

010

司马坡

新疆喀什

S201

SELECT语法

SELECT应用案例

WHERE条件

逻辑运算符

比较运算符

NULL空值条件查询

BETWEEN AND范围查询

LIKE模糊查询

使用IN进行范围查询

MySQL中的函数

MySQL中的聚合函数

MySQL中常用的数学函数

MySQL中常用的字符串函数

MySQL中常用的日期时间函数

ORDER BY 子句

LIMIT 子句

EXISTS 子查询

子查询注意事项

多表连接查询

内连接

左外连接

右外连接

不同的SQL JOIN对比


DQL语言

DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据。
DQL语言主要的语句:SELECT语句。
DQL语言是数据库语言中最核心、最重要的语句,也是使用频率最高的语句。
查询的主要类型:简单的单表查询或多表的复杂查询和子查询

什么是查询

查询产生一个虚拟表。
看到的是表形式显示的结果,但结果并不真正存储。
每次执行查询只是从数据表中提取数据,并按照表格的形式显示出来。

SELECT * FROM 表名

SELECT * FROM `student` WHERE 所在班级 = 'S202'

学生编号

学生姓名

地址

所在班级

……

001

张明全

湖南长沙

S201

002

李菲

湖北宜昌

S202

003

于寄谦

甘肃天水

S204

004

刘国正

山东荷泽

S201

005

周杰伦

台湾新竹

S204

006

巩小妹

香港龙湾

S203

007

巩大妹

香港龙湾

S203

008

张明敏

北京顺义

S202

009

矛十八

四川棉阳

S204

010

司马坡

新疆喀什

S201

SELECT语法

SELECT   [ALL | DISTINCT]
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ][ left|out|inner  join  table_name2 ]    #多表连接查询[ WHERE  … ]       #指定结果需满足的条件[ GROUP BY …]    #指定结果按照哪几个字段来分组[ HAVING …]    #过滤分组的记录必须满足的次要条件[ ORDER BY… ]    #指定查询记录按一个或者多个条件排序[ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;  #分页查询

[ ]   括号代表可选的;                                                                                       
{ }   括号代表必须的;
#    MySQL语句中的注释符,也可以用   /*该处为注释*/

SELECT应用案例

1.查询表中所有的数据行和列,采用“*”符号。

SELECT * FROM 表名

2.查询表中指定列的数据。

SELECT   字段名1,字段名2,…字段名n   FROM 表名

查询全部行和列或指定列的数据


3.在查询中使用别名,使用“AS”关键字。
可给数据列取一个新别名
可给表取一个新别名
可把经计算或总结的结果用另外一个新名称来代替

SELECT   field1 [ AS  alias1] [,field2 [AS  alias2]] […,fieldn [AS  aliasn]]
FROM  table_name  [ AS  table_ alias  ];

4.在查询中使用常量列:如果需要将一些常量的默认信息添加到输出结果中,以方便统计或计算。可以使用常量列。

SELECT  studentno AS “学号”, studentname AS “姓名”,
phone AS “手机号”,address AS “家庭住址”,
‘郑州翔天信鸽’ AS “学校名称”
FROM student;

5.DISTINCT关键字的使用:去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。

SELECT   DISTINCT field1 [ AS  alias1] [,field2 [AS  alias2]] […,fieldn [AS  aliasn]]
FROM  table_name  [ AS  table_ alias  ];

WHERE条件

WHERE条件:用于检索数据表中符合条件的记录
搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
搜索条件的组成
逻辑操作符
比较操作符

逻辑运算符

比较运算符

数值数据类型的记录之间才能进行算术运算
相同数据类型的数据之间才能进行比较

NULL空值条件查询

NULL
NULL代表“无值”
区别于零值0和空符串“”
只能出现在定义允许为NULL的字段
须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  IS  NULL

查找地址不为空的学生信息

BETWEEN AND范围查询

BETWEEN AND范围查询:根据一个范围值来检索
等同于 >= 和 <= 联合使用

SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  BETWEEN  值1 AND  值2
#查询课程表中课时在110和120之间的所有记录SELECT * FROM subject WHERE classhour BETWEEN  110 AND 120;
#等同于:SELECT * FROM subject WHERE classhour >= 110 AND classhour <=120;

LIKE模糊查询

在WHERE子句中,使用LIKE关键字进行模糊查询
与“%”一起使用,表示匹配0或任意多个字符
与“_”一起使用,表示匹配单个字符

#查询包含“数学”的所有课程
SELECT   *  FROM subject WHERE SubjectName  LIKE  "%数学%";
#查询所有姓名为“李**”三个字的学生信息
SELECT  StudentNo,StudentName FROM student
WHERE StudentName LIKE "李__";

使用IN进行范围查询

在WHERE子句中使用IN进行范围查询
查询的字段x的值,至少与括号中的一个值相同
多个值之间用英文逗号隔开

SELECT  字段1,字段2 ,…FROM 表名 WHERE   字段x  IN  ( 值1,值2,值3…值n)
SELECT  *  FROM  subject  where    ClassHour = 100  OR ClassHour =110 OR ClassHour  = 120;  #普通处理方式
SELECT  *  FROM  subject  where ClassHour  IN ( 100, 110,120 );
#使用IN进行查询方式,更为简洁,效率更高

MySQL中的函数

MySQL的函数
MySQL中的函数将一些常用的处理数据的操作封装起来,这样大大简化了程序员的工作,提高了开发效率。
因此,除了会使用SQL语句之外,还需要掌握一些常用函数。


MySQL中常用的函数
聚合函数
字符串函数
日期时间函数
数学函数

MySQL中的聚合函数

MySQL中常用的数学函数

MySQL中常用的字符串函数

MySQL中常用的日期时间函数

ORDER BY 子句

ORDER BY子句:实现按一定顺序显示查询结果。
排序可以是升序(ASC)或者降序(DESC),如果不指定ASC或DESC,结果集默认按ASC升序排序。

#把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序。
SELECT studentno AS 学生编号,(studentresult*0.9+5 ) AS 综合成绩
FROM `result`
WHERE (`studentresult`*0.9+5) >=60
ORDER BY studentresult DESC;

在上个案例中,如果要在学生成绩排序的基础上,再按照课程编号进行排序。怎么办?

#把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序,如果成绩
#相同,再按照课程编号进行排序。
SELECT studentno AS 学生编号,(studentresult*0.9+5 ) AS 综合成绩
FROM `result`
WHERE (`studentresult`*0.9+5) >=60
ORDER BY studentresult DESC,subjectno;

LIMIT 子句

LIMIT 子句:MySQL查询语句中使用LIMIT子句限制结果集

#查询课程编号为1的,考试日期为2019年的考试的前5名同学的学号和成绩
#应用1:限制显示的结果集的行数(小说排行榜  新闻只显示最新的5条)
SELECT studentno,studentresult
FROM result
WHERE subjectno=1 AND YEAR(examdate)=2019
ORDER BY studentresult DESC
LIMIT 5

EXISTS 子查询

EXISTS 子查询:带有EXISTS的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”。

SELECT …… FROM 表名 WHERE EXISTS(子查询);

子查询有返回结果: EXISTS子查询结果为TRUE,执行外层查询;
子查询无返回结果: EXISTS子查询结果为FALSE,   外层查询不执行;

子查询注意事项

任何允许使用表达式的地方都可以使用子查询
嵌套在父查询SELECT语句的子查询可包括
SELECT子句
FROM子句
WHERE子句
GROUP BY子句
HAVING子句
只出现在子查询中而没有出现在父查询中的列不能包含在输出列中

多表连接查询

多表连接查询是通过各个表之间共同列的关联性(例如:外键)来查询的。
多表连接查询的分类
内连接(INNER JOIN) ,可简写为 JOIN;
左外连接(LEFT OUTER JOIN),可简写为LEFT JOIN;
右外连接(RIGHT OUTER JOIN),可简写为RIGHT JOIN;
自连接查询;
交叉连接(CROSS JOIN)也称为 笛卡儿乘积连接,基本上用不到。

内连接

内连接:内连接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。

#第一种写法
SELECT   字段列表   FROM   表1  INNER JOIN  表2
ON    表1.通用字段名=表2.通用字段名#第二种写法
SELECT   字段列表 FROM   表1 ,表2
WHERE    表1.通用字段名=表2.通用字段名

如果两个表中有相同的字段名,必须在列名前加表名。否则将出现 错误代码:1052 Column 'studentno' in field list is ambiguous

左外连接

#左外连接
SELECT   字段列表   FROM   表1  LEFT JOIN  表2
ON    表1.通用字段名=表2.通用字段名

左外连接:左表(表1)的记录将会全部表示出来,而右表(表2)只会显示符合匹配条件的记录。
1.匹配,返回到结果集
2.无匹配,NULL值返回到结果集

右外连接

#右外连接
SELECT   字段列表   FROM   表1  RIGHT JOIN  表2
ON    表1.通用字段名=表2.通用字段名

右外连接:右表(表2)的记录将会全部表示出来,而左表(表1)只会显示符合匹配条件的记录。
1.匹配,返回到结果集
2.无匹配,NULL值返回到结果集

不同的SQL JOIN对比

使用DQL命令查询数据(总篇1~3)相关推荐

  1. 使用DQL命令查询数据(二)

    使用DQL命令查询数据(二) SELECT语法 SELECT [ALL | DISTINCT] { * | table.* | [ table.field1 [ as alias1] [,table. ...

  2. 使用DQL命令查询数据(一)

    使用DQL命令查询数据(一) DQL语言 指定查询字段 查询表中所有的数据列结果,采用"*"符号 可指定查询的结果数据列 AS子句 DISTINCT关键字的使用 使用表达式的列 在 ...

  3. 举例:MySQL 使用DQL命令查询数据

    DROP TABLE IF EXISTS `grade`; CREATE TABLE `grade` ( `GradeID` INT(11) NOT NULL AUTO_INCREMENT COMME ...

  4. 使用DQL命令查询数据一

    一,概念: DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据. DQL语言主要的语句:SELECT语句. DQL语言是数据库语言中最核心.最重要的语句, ...

  5. 35.数据库的DQL的查询数据补充(二)

    一.查询的稳固和学习 下方所有的代码的查询语句,[ ]表示可选择的语句,{ }表示必须写的 | 表示或者的意思 1.查询的先后顺序: select [all默认 | distanct 去重] {* | ...

  6. MySQL基础回顾(六):数据查询语言DQL---select查询语句总结(篇一)

    目录 先建一个数据库和若干张表 完整语法 1.基础查询 2.字段别名 3.去重 4.where子句查询 5.模糊查询 6.联表查询 7.分页和排序 8.子查询和嵌套查询 9.分组查询和having语句 ...

  7. MySQL 09 DQL → select 初识查询数据和别名的使用

    4.1 DQL → select 查询数据和别名的使用 DQL:Data Query LANGUAGE(数据查询语言) 所有的查询操作都用它 select 简单的查询,无论多么复杂的查询它 都可以做到 ...

  8. Mybatis+MySQL动态分页查询数据经典案例

    最近在用Mybatis做项目的时候遇到了不少问题,今天我就在这和大家分享一下,稀稀拉拉的研究了两天,终于搞好了! 开发人员:1111 开发软件:Myeclipse 用到的框架技术:Mybatis 数据 ...

  9. Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)

    最近在用Mybatis做项目的时候遇到了不少问题,今天我就在这和大家分享一下,稀稀拉拉的研究了两天,终于搞好了! 开发人员:1111 开发软件:Myeclipse 用到的框架技术:Mybatis 数据 ...

最新文章

  1. iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)
  2. IsPostBack的使用
  3. 利用Python模拟鼠标自动完成MM32-LINK程序下载
  4. 服务器智能监控软件,监控 监控系统 消防智能监控 智能监控软件
  5. 人脸识别 性能评价指标
  6. I think i need a houseboot C语言 UVA2363
  7. 关于Kafka 的 consumer 消费者手动提交详解
  8. 稀疏矩阵的压缩存储的两种策略
  9. ArcGIS中实现将圆16等分
  10. 小米岭南通服务器维护,小米岭南通交通联合卡内测开启
  11. action请求是什么意思_凭什么说大疆Osmo Action可以干掉 GoPro hero7?
  12. C语言bmp文件隐藏,怪事!!关于读bmp文件!
  13. Android 属性动画Property Animation(中)
  14. 不要在锁的作用域之外通过指针或引用传递要保护的数据
  15. 打开统计年鉴html,南京统计年鉴2018(HTML)
  16. 思科模拟器静态路由设置,以及rip路由设置
  17. 矩阵键盘mega16 c语言程序,mega16单片机科学计算器程序源代码
  18. 平均增长率不用计算机,【程阳解答】如何用计算器或Excel计算年均增长率?
  19. java虚无世界_我的世界虚无世界2.5
  20. 自媒体技巧:企鹅号与公众号同步教程

热门文章

  1. 腾讯降低对京东持股:将由17%降至2.3%,不再为第一大股东
  2. Oracle转换MySql之递归start with
  3. 数据采集简单示例:采集爱帮网电话号码
  4. vivo删除的便签怎么恢复,vivo手机便签恢复教学
  5. 影响你一生的10句话
  6. 和阿文一起学H5——H5工具、素材
  7. 蚂蚁数字科技与梆梆安全达成战略合作 共同构建移动端全链路的安全能力
  8. 微信小程序input框只能输入小数/正整数
  9. PHP 100道面试题
  10. STM32:OLED显示屏代码