/*
当列名与关键字冲突时,使用 `` 将列名给包裹上,如`name`
SELECT列表中只能包含:
1、被分组的列
2、为每个分组返回一个值的表达式,如聚合函数
*/
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 '%东%’;
分组查询
/*
定义:
分组查询是按照指定的字段分类汇总结果的查询方式,返回的是一个表在信息列名显示
语法:
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;
聚合函数
定义:
- 聚合函数是可以对一组值进行计算,并返回单个值的函数
/*
语法:
SELECT 聚合函数 FROM <表名>
*/
SELECT COUNT(*) AS 总数 FROM comments;