首页 / Mysql / MySQL 使用DQL命令查询数据的实现方法

MySQL 使用DQL命令查询数据的实现方法

本篇文章博主将带大家一起学习MySQL中常用的数据查询语言。DQL(Data Query Language 数据查询语言)

本篇文章博主将带大家一起学习MySQL中常用的数据查询语言。

DQL(Data Query Language 数据查询语言)

SELECT 语法

基本查询语句&AS

以下例子用student表中的数据。

MySQL 使用DQL命令查询数据的实现方法

MySQL 使用DQL命令查询数据的实现方法

查询表中所有数据列结果,采用 “*” 符号,效率低

可指定查询列,效率高

 AS 子句的作用和用法

注意:AS 可省略不写

(1)可给数据列取一个新别名  

(2)给表取别名

(3)可把计算或总结的结果用另一个新名称来代替

DISTINCT 关键字

作用:去掉SELECT查询出来的重复值(当所有返回值都相同时,只返回一条记录)

语法:

注意:ALL 关键字是默认的,返回所有记录,与之相反

当过滤多列重复值时,只有当选择过滤的列都存在重复值才进行过滤

过滤单列:查询学生表中的地址

SQL语句中的表达式

MySQL 使用DQL命令查询数据的实现方法

MySQL 使用DQL命令查询数据的实现方法

避免SQL返回结果中包含“.” ,“*”,和括号等干扰开发语言程序

拼接 CONCAT

数值类型相加

比较运算符&通配符

where条件语句:用于检索数据表中符合条件的记录

搜索条件可以由一个或多个逻辑表达式组成,结果一般为真或假

搜索条件的组成:逻辑操作符、比较操作符

逻辑操作符

MySQL 使用DQL命令查询数据的实现方法

比较操作符

MySQL 使用DQL命令查询数据的实现方法

使用 LIKE 关键字进行模糊查询

  • 与“%”一起使用,表示匹配0个或任意个字符
  • 与“_”一起使用 表示匹配单个字符

注意:

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

NULL

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

内连接&自查询

如果需要多张数据表的数据进行查询,则可以通过连接运算符实现多个查询。

分类包括:

  • 内连接(inner  jion):
    • 等值和非等值的连接查询
    • 自身连接查询
  • 外连接(out  jion)
    • 左连接(LEFT JION)
    • 右连接(RIGHT JION)

ORDER BY 排序查询

对select 语句查询得到的结果,按某些字段进行排序

与DESC(降序)或ASC(升序)搭配使用,默认为ASC

以subject表和grade表数据为例:

MySQL 使用DQL命令查询数据的实现方法

MySQL 使用DQL命令查询数据的实现方法

多字段排序:先按照第一个字段排序,再按照第二个字段排序。如果第一个字段数据相同,再按照第二个字段排序。

MySQL 使用DQL命令查询数据的实现方法

LIMIT分页

LIMIT   [m,] n  或  LIMIT  n  OFFSET  m

限制SELECT返回结果的行数

m为第一个返回记录行的偏移量

n返回记录行的数目

注意:

  • m不指定,则偏移量为0,从第一条开始返回前n条记录
  • LIMIT 常用于分页显示
  • 如果超出表中数据,则显示全部

例如:

MySQL 使用DQL命令查询数据的实现方法

MySQL 使用DQL命令查询数据的实现方法

 总记录数:total

MySQL 使用DQL命令查询数据的实现方法

总页数:int  totalPage = total % pagesize ==0 ? total / pagesize : total  / pagesize  + 1

子查询

在查询语句WHERE 条件子句中,又嵌套了另外一个查询语句

注意:子查询返回的结果一般是集合,建议使用IN关键字

MySQL 使用DQL命令查询数据的实现方法

聚合函数

常用的统计函数:COUNT()、SUM()、AVG()、MAX()、MIN()

分组 GROUP BY

使用 GROUP BY 关键字对查询结果分组

  • 对所有的数据进行分组统计
  • 分组的字段可以有多个,并依次分组
  • 与 HAVING 结合使用,进行分组后的数据筛选

以 student 表为例

MySQL 使用DQL命令查询数据的实现方法

(1)对student 表按照地址分组统计  group by

MySQL 使用DQL命令查询数据的实现方法

HAVING 过滤分组的记录必须满足的次要条件

(2)对 student 表 按照地址分组,满足地址=1的 HAVING

MySQL 使用DQL命令查询数据的实现方法

合并 UNION 、UNION

  •  ALLUNION #合并完全相同数据
  • UNION ALL     #合并所有数据

注意:合并两张表时,列数必须一样才能合并。

两表列数不同时,会报以下错误:

     [SQL]SELECT * FROM grade UNION SELECT * FROM student;
     [Err] 1222 – The used SELECT statements have a different number of columns

(1)合并 subject 表和 student表

MySQL 使用DQL命令查询数据的实现方法

子查询   EXISTS ――>true  false

EXISTS  / NOT EXISTS 子查询条件成立则显示父查询的结果,否则不显示结果

(1)子查询条件为真 (grade 表中 gradeid 1~5,存在 1)

MySQL 使用DQL命令查询数据的实现方法

(2)子查询条件为假  (grade 表中 gradeid 1~5,不存在 999)

MySQL 使用DQL命令查询数据的实现方法

子查询(any & all)

ANY :判断条件中,若子查询中任意一个值满足条件,则执行父查询
ALL :判断条件中,若子查询中所有值满足条件,则执行父查询
 (1)满足条件:存在 subject.gradeid >= grade.gradeid ,执行父查询 

MySQL 使用DQL命令查询数据的实现方法

(2)不满足条件:所有subject.gradeid >= grade.gradeid ,不执行父查询 

MySQL 使用DQL命令查询数据的实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我是攻城狮。

本文来自网络,不代表我是攻城狮立场,转载请注明出处:https://www.54gcs.cn/sql/mysql/5347.html

helwo作者

上一篇
下一篇

为您推荐

发表评论

联系我们

联系我们

在线咨询: QQ交谈

邮箱: web@5vo.cn

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部
跳至工具栏