MySQL第三章DQL

MySQL-DQL查询语句

DQL语言

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

①查询数据库数据,如SELECT语句

②简单的单表查询或多表的复杂查询和嵌套查询

③数据库语言中最核心、最重要的语句

④使用频率最高的语句

SELECT语法
SELECT [ALL|DISTINCT]
{8|table.|[table.filed1[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_countOFFSET offset }];	#指定查询的记录从哪条至哪条

[ ] 括号代表可选的;

{ } 括号代表必须的;

#MySQL语句中的注释符,也可以用 /* 该处为注释 */

指定查询字段

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

select * from student;

可指定查询的结果数据列

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

select StudentNo、StudentName,Phone from student;
AS语句

可给数据列取一个新别名

可给表取一个新别名

可把经计算或总结的结果用另外一个新名称来代替

AS子句用法

select StudentNo AS “学号” from student;
select a.StudentNo AS “学号” from student a;
select Phone+1 AS Tel from student;

AS也可以省略不写

distinct关键字的使用

作用

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

select distinct 字段名1,字段名2... from 表名

ALL关键字时默认的,返回所有的记录,与之相反

#查询成绩表中的所包含的课程ID
select distinct SubjectNo from result;
使用表达式

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

应用场景:

①select语句返回结果列中使用

②select语句的order by、having等子句中使用

③DML语句中的where条件语句中使用表达式

在SQL语句中使用表达式

在这里插入图片描述

where条件语句

用于检索数据表中符号条件的记录

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

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

逻辑操作符

在这里插入图片描述

比较操作符

在这里插入图片描述

连接查询
内连接(inner join)

1.等值和非等职的连接查询

①与单表查询类似,都是SELECT语句

②把多个表放到FROM后,并用逗号隔开

③可使用AS关键字取别名,便于引用

④如无重名查询字段则可省略数据表的指定

2.自身连接查询

外连接(out join)

1.左外连接(LEFT JOIN)

从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行;

SELECT 字段1,字段2,...FROM table_1
LEFT(OUTER) JOIN table_2 ON table_1.字段x = table_2.字段y;

2.右外连接(RIGHT JOIN)

从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行;

SELECT 字段1,字段2,...FROM table_1
RIGHT (OUTER) JOIN table_2 ON table_1.字段x = table_2.字段y;
不同的SQL JOIN对比
操作符名称描述
INNER JOIN如果表中由至少一个区配,则返回行
LEFT JOIN不论右表是否由区配,都会返回左表的所有行
RIGHT JOIN不论左表是否由区配,都会返回右表的所有行

在这里插入图片描述

ORDER BY(排序)

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

与DESC或ASC搭配使用,默认为ASC
ASC为升序排列
DESC为降序排列

语法:

ORDER BY 列名1 ASC/DESC[,列名2 ASC/DESC,...]
LIMIT(分页显示)

分页显示,对用户体验、网络传输、查询压力上都有好处
语法:

LIMIT[m,]n
或 LIMIT n OFFSET m

限制SELECT返回结果的行数
m指定第一个返回记录行的偏移量(显示的起始位置)
n指定返回记录行的最大数目(显示行数)

m不指定则偏移量为0,从第一条开始返回前n条记录

在MySQL中,显示每页的行数可以使用 LIMIT (页码-1)*行数,行数

子查询

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

嵌套查询可由多个子查询组成,求解的方式是由里及外
子查询返回的结果一般都是集合,故而建议使用IN关键字

MySQL函数

包括1.数学函数

​ 2.字符串函数

​ 3.日期和时间函数

​ 4.系统信息函数

1.数学函数

常用的有:

(1)ABS() 绝对值

(2)CEILING() 大于等于我的最小整数(天花板)

(3)FLOOR() 小于等于我的最大整数(地板)

(4)RAND() 返回0~1之间的随机数

(5)SIGN() 符号函数,正数返回1,负数返回-1,0返回0

2.字符串函数

常用有:
(1)CHAR_LENGTH() 返回字符串中包含的字符数

(2)CONCAT() 合并字符串,参数可有多个,用逗号隔开

(3)INSERT() 替换字符串,从某个位置开始,替换某个长度,如果起始位置超过字符串长度,则返回源字符串
如: INSERT(‘我爱课工场’,1,3,‘很爱’)

(4)LOWER() 变小写

(5)UPPER() 变大写

(5)LEFT() 从左边截取几位,如:LEFT(‘你好’,2)

(6)RIGHT() 从右边截取几位

(7)REPLACE() 替换指定字符,如:REPLACE(‘欢迎你,你好’,‘你’,‘你好’)

(8)SUBSTR() 截取,从哪个位置开始截取,截取多长

​ 如:SUBSTR(‘课工场欢迎你’,1,3)

(9)REVERSE() 反转字符串

3.日期和时间函数

常用的有:

(1)CURRENT_DATE()
等同于 CURDATE()
获取当前日期

(2)NOW()
等同于 LOCALTIME()
等同于 SYSDATE()
获取当前日期和时间

(3)YEAR(NOW())
MONTH(NOW())
DAY(NOW())
HOUR(NOW())
MINUTE(NOW())
SECOND(NOW())
分别获取当前日期中的某个部分

4.系统信息函数

常用的有:

(1)VERSION() 显示版本信息

(2)USER() 菜单用户信息

统计函数(聚合函数)
函数名称描述
COUNT()返回满足SELECT条件的记录总和数,如 SELECT COUNT( * ),不建议使用 *,效率低,
()中也可以使用1,或者列名
COUNT()为非空值计数,不会计算空值
SUM()返回数字字段或表达式列作统计,返回一列的总和
()中通常加列名
AVG()通常为数值字段或表达式列作统计,返回一列的平均值
()中通常为列名
MAX()可以为数值字段、字符字段或表达式列作统计,返回最大的值
MIN()可以为数值字段、字符字段或表达式列作统计,返回最小的值
GROUP BY(分组)

对所有数据进行分组统计。分组的依据字段可以有多个,并依次分组

与HAVING结合使用,进行分组后的数据筛选

GROUP BY的语句顺序在WHERE后面,ORDER BY 的前面

通常在对数据使用计算统计的时候,会用到GROUP BY分组

HAVING

​ 过滤分组的记录必须满足的次要条件。SELECT语句中,在GROUP BY分组之后再进行条件筛选,就不能使用WHERE,而是在GROUP BY后面通过HAVING进行分组后的条件筛选。HAVING的作用等同于WHERE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值