Mysql基础补充(2)------ DQL补充:关键字与查询详叙

/*
当列名与关键字冲突时,使用 `` 将列名给包裹上,如`name`

SELECT列表中只能包含:
	1、被分组的列
	2、为每个分组返回一个值的表达式,如聚合函数
*/

image-20210907084336879

DQL

基本查询

/*
	SELECT 列名 FROM 表名;	查询全部列使用*
*/

SELECT * from comments;
SELECT cmtId,cmtDate,cmtAuthor FROM comments;

条件查询

/*
	条件查询是通过WHERE子句进行检索的查询方式
	语法:
		SELECT * FROM 表名 WHERE 字段=值
*/
SELECT * FROM comments WHERE cmtId=1;

多条件查询

/*
	定义:
		多条件查询是利用逻辑运算符把多个条件组合起来的条件查询
	语法:
		SELECT * FROM 表名 WHERE 字段1=值 逻辑运算符 字段2=值
*/
SELECT * FROM comments WHERE cmtId=1 AND cmtAuthor=‘张三1’;

模糊查询

/*
	定义:模糊查询是使用SQL 通配符替代一个或多个字符的条件查询
	
	通配符;
		1.一类字符,代替一个或多个真正的字符
		2.与LIKE关键字一起使用
	
	语法:
		SELECT * FROM 表名 WHERE 字段 like ‘包含通配符的值’;
*/
-- 怎样获取评论者名称中包含’东’字的数据记录
SELECT * FROM comments WHERE cmtAuthor LIKE '%东%’;

image-20210907093727797

分组查询

/*
	定义:
		分组查询是按照指定的字段分类汇总结果的查询方式,返回的是一个表在信息列名显示
	语法:
		SELECT <字段名列表> FROM <表名>
        [WHERE <查询条件>]
        [GROUP BY <分组的字段名>]
        [ORDER BY <排序的列名> [ASC 或 DESC]]
        [LIMIT [位置偏移量, 行数];
*/
SELECT newsId 新闻编号,COUNT(*) AS 数量 FROM comments GROUP BY newsId

-- 查询每条新闻被评论的次数并且按照降序排列
SELECT newsId 新闻编号,COUNT(*) AS 数量 FROM comments
GROUP BY newsId
ORDER BY COUNT(*) DESC;

关键字

AS关键字

功能

  • 给数据列取别名
  • 给表取别名
  • 可把经计算或总结的结果用另外一个新名称来代替
SELECT cmtId AS 评论编号, cmtAuthor AS 评论者名称 FROM comments;
SELECT com.newsId,cmtAuthor FROM comments AS com ;
SELECT cmtId+1 AS 评论编号 FROM comments ;
运算符

功能: 它是用来进行列间或者变量之间的比较和数学运算的一种符号

算数运算符
运算符说明
+加运算,求两个数或表达式相加的和,如6+8
-减运算,求两个数或表达式相减的差
*乘运算,求两个数或表达式相乘的积
/除运算,求两个数或表达式相除的商,如5/3的值为1
%取模运算,求两个数或表达式相除的余数,如:5%3的值为2
关系运算符
运算符说明
=等于,例如:age=23
>大于,例如:price>100
<小于
>=大于等于
<=小于等于
!=不等于(非SQL-92标准 )
<>不等于
赋值运算符
运算符说明
=把一个数或变量或表达式赋值给另一变量,如:Name=‘王华’
逻辑运算符
运算符说明
AND或&&当且仅当两个布尔表达式都为true时,返回TRUE。
OR或||当且仅当两个布尔表达式都为false,返回FALSE
NOT或!布尔表达式的值取反

IN关键字

功能:

  • 查询符合括号内条件的数据
/*
	语法:
		SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…) ;
*/
SELECT * FROM comments WHERE newsId IN(1,2);
BETWEEN AND关键字

功能:

  • 查询值1和值2区间的数据,并且包含值1和值2
/*
	语法:
		SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x BETWEEN 值1 AND 值2;
*/
SELECT * FROM comments WHERE cmtId BETWEEN 1 AND 10
/*
	不能使用:BETWEEN 10 AND 1
	这样的话,语句无误,但查询不到信息
*/
DISTINCT关键字

功能

  • 去掉SELECT查询返回的记录结果中重复的记录, 相同记录只返回一条
  • 只能针对某一个字段去重
/*
	语法:
		SELECT DISTINCT 字段名1, 字段名2... FROM 表名
*/
SELECT DISTINCT cmtContent FROM comments
ORDER BY关键字

功能:

  • 一组数据按照升序或降序排列
  • 只要是数值类型的
/*
	语法:
		SELECT <字段名列表> FROM <表名>
		[WHERE <查询条件>]
		[ORDER BY <排序的列名> [ASC 或 DESC]]
*/
SELECT * FROM comments ORDER BY cmtId DESC

SELECT * FROM comments ORDER BY newsId,cmtId DESC

/*
	默认不写是升序排列
	DESC倒序,由高到低
	ASC是升序,由低到高
*/
LIMIT关键字

功能:

  • MySQL查询语句中使用LIMIT子句限制结果集
/*
	语法:
		SELECT <字段名列表> FROM <表名>
		[WHERE <查询条件>]
		[ORDER BY <排序的列名> [ASC 或 DESC]]
		[LIMIT 位置偏移量,行数];
*/
-- 查询从第三行开始接下来五条数据
SELECT * FROM comments LIMIT 2,5
NULL关键字

特点:

  • 区别空字符串’ ’
  • 只能出现在定义允许为NULL的字段
  • 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较
/*
	语法:
		SELECT * FROM comments WHERE 列名 IS NULL;
*/
-- 查询列名comments为null的表的数据
SELECT * FROM comments WHERE cmtAuthor IS NULL;
HAVING关键字

功能:

  • 分组后条件筛选
/*
	语法:
		SELECT <字段名列表> FROM <表名>
        [WHERE <查询条件>]
        [GROUP BY <分组的字段名>]
        HAVING 条件
        [ORDER BY <排序的列名> [ASC 或 DESC]]
        [LIMIT [位置偏移量, ]行数];
*/
SELECT newsId 新闻编号,COUNT(*) AS 数量
FROM comments
GROUP BY newsId
HAVING COUNT(*)<5;
聚合函数

定义

  • 聚合函数是可以对一组值进行计算,并返回单个值的函数

image-20210907094901201

/*
	语法:
		SELECT 聚合函数 FROM <表名>
*/
SELECT COUNT(*) AS 总数 FROM comments;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值