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

  • DQL语言
  • SELECT语法(一)
  • 指定查询字段
  • 查询表中所有的数据列结果,采用“*”符号
  • 可指定查询的结果数据列
  • AS子句
  • AS子句作用
  • AS子句用法
  • DISTINCT关键字的使用
  • 作用
  • 使用表达式的列(1)
  • 使用表达式的列(2)
  • 在SQL语句中使用表达式
  • SELECT语法(二)
  • where条件语句
  • 逻辑操作符
  • 比较操作符
  • BETWEEN AND范围查询
  • LIKE模糊查询
  • 使用IN进行范围查询
  • NULL空值条件查询
  • SELECT语法(三)
  • 连接查询(多表查询)
  • 内连接查询(1)
  • 内连接查询(2)
  • 外连接
  • 不同的SQL JOIN对比
  • 自连接查询
  • 总结


DQL语言

DQL(Data Query Language,数据查询语言):
查询数据库数据,如SELECT语句。
简单的单表查询或多表的复杂查询和嵌套查询。
数据库语言中最核心、最重要的语句。
使用频率最高的语句。

SELECT语法(一)

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据


大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_02

指定查询字段

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

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_03

可指定查询的结果数据列

如只查询student表中的学号、姓名、电话。

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_04


如区分连接查询时两个表有同名的字段

select student.StudentNo,StudentName,StudentResult from student,result

AS子句

AS子句作用

可给数据列取一个新别名
可给表取一个新别名
可把经计算或总结的结果用另外一个新名称来代替

AS子句用法

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据 表内要查询3个列 如何创建索引_05

DISTINCT关键字的使用

作用

去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。

大数据 表内要查询3个列 如何创建索引 大数据查询语句_mysql_06


注意:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_mysql_07


大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据 表内要查询3个列 如何创建索引_08

使用表达式的列(1)

表达式一般由文本值、列值、NULL、函数和操作符等组成。

应用场景:

SELECT语句返回结果列中使用
SELECT语句的ORDER  BY、HAVING等子句中使用
DML语句中的where条件语句中使用表达式

使用表达式的列(2)

在SQL语句中使用表达式

返回的列中使用,如

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据_09


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

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据_10


示例一:查询课程表数据

需求说明:

查询课程表(subject)的所有记录,返回数据。

要求:

返回字段名称使用别称。

返回课程名称 (SujectName) 。

总课时(SubjectHour)。

返回10天上完课程的均课时(ClassHour/10)。

语句展示:

SELECT SubjectName 课程名称,ClassHour 总课时,
ClassHour/10 AS '均课时/天'
FROM subject

结果展示:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_11

SELECT语法(二)

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据_12

where条件语句

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

逻辑操作符

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_13

比较操作符

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据 表内要查询3个列 如何创建索引_14


注意:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_15

BETWEEN AND范围查询

根据一个范围值来检索:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_16


等同于 >= 和 <= 联合使用:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据 表内要查询3个列 如何创建索引_17

LIKE模糊查询

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

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_18

使用IN进行范围查询

在WHERE子句中使用IN进行范围查询:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_19


查询的字段x的值,至少与括号中的一个值相同。

多个值之间用英文逗号隔开。

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_20

NULL空值条件查询

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

示例二:查询“李”同学成绩,
需求说明:
查询所有姓“李”的学生所有成绩。
语句展示:

SELECT stu_id '"李"同学学号', score '"李"同学成绩' FROM result ,
student WHERE StudentName LIKE "李%"

结果展示:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据 表内要查询3个列 如何创建索引_21

SELECT语法(三)

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_22

连接查询(多表查询)

连接查询:
如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询。
分类包括:内连接 (inner join)
等值和非等值的连接查询。
自身连接查询:
外连接 (out join )
左连接 (LEFT JOIN)
右连接 (RIGHT JOIN)

内连接查询(1)

INNER JOIN内连接
在表中至少一个匹配时,则返回记录

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_23


大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据_24

内连接查询(2)

等值和非等值的连接查询:
与单表查询类似,都是SELECT语句。
把多个表放到FROM后,并用逗号隔开。
可使用AS关键字取别名,便于引用。
如无重名查询字段则可省略数据表的指定。

大数据 表内要查询3个列 如何创建索引 大数据查询语句_大数据_25

外连接

左外连接(LEFT JOIN):
从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行。

大数据 表内要查询3个列 如何创建索引 大数据查询语句_数据_26

右外连接(RIGHT JOIN):
从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行

大数据 表内要查询3个列 如何创建索引 大数据查询语句_mysql_27

不同的SQL JOIN对比

大数据 表内要查询3个列 如何创建索引 大数据查询语句_mysql_28

自连接查询

数据表与自身进行连接。

从一个包含栏目ID,栏目名称和父栏目ID的表中,查询父栏目名称和其子栏目名称,表结构如下:

大数据 表内要查询3个列 如何创建索引 大数据查询语句_连接查询_29


大数据 表内要查询3个列 如何创建索引 大数据查询语句_mysql_30

总结

select [distinct] {*|column_name [as 别名] [,.....]}
from table_name [as 别名]
between and范围查询:
select * from studemt where score between 值1 and 值2;
like模糊查询:
select * from studemt where StudentName like '李_';
_:占位符,表示匹配单个字符
select * from studemt where StudentName like '李%';
%:表示匹配0或多个字符
in范围查询:
select * from studemt where StudentNo in(值);
case when  字段 值 then 操作 else 操作 end;
union:联合并去重
union all:联合不去重

连接:

1、内连接:两个表符合关联条件的数据才进行展示
select a.*,b.* from a[inner] join b on a.id=b.id;
select a.*,b.* from a,b where a.id=b.id;
(很消耗内存,不加where会产生笛卡尔积)
2、 外连接:主表的数据全部展示,附表只展示符合关联条件的数据
左外连接:以left join的左边的表为主表,关联右表的数据
右外连接:以rigth join的右边的表为主表,关联左表的数据
3、全连接:
	 左外连接
	 union
	 右外连接
4、自连接:自己关联自己