表的查询操作
基础查询
- 创建数据表和表结构的说明
CRETAE TABLE 数据表名称 (
字段名1 数据类型 COMMENT ‘类型说明’
…
字段n 数据类型 COMMENT ‘类型说明’
);
2. 查询所有字段
SELECT * FROM 数据表名称;
- 查询自定义字段
SELECT 指定字段1, … 指定字段n FROM 数据表名称 ;
条件查询
- 带关系运算符的查询
SELECT 指定字段1 ,指定字段2 FROM 数据表名称 WHERE 条件表达式;
以上语法中,指定字段1和指定字段2表示要查询的字段名称,条件表达式表示筛选数据的条件。
常见的关系运算符:
关系运算符 | 含义 |
---|---|
= | 等于 |
<>或!= | 不等于(在数据库中常用 <>表示不等于 ) |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
2. 带AND 关键字的查询
SELECT 指定字段1 ,指定字段2 FROM 数据表名称 WHERE 条件表达式 AND 条件表达式2;
3. 带 OR 关键字的查询
SELECT 指定字段1 ,指定字段2 FROM 数据表名称 WHERE 条件表达式 OR 条件表达式2;
4. 带 IN 或 NOT IN 关键字的查询
SELECT 指定字段1 ,指定字段2 FROM 数据表名称 WHERE 字段名[NOT] IN (元素1,元素2…)
5. 带IS NULL 或 IS NOT NULL 关键字的查询
在数据表中可能存在空值,空值与0不同,也不同于空字符串。在MySQL中使用IS NULL 或 IS NOT NULL关键字查看是否为空值,具体语法如下:
SELECT 字段名1,字段名2… FROM 数据表名称 WHERE IS [NOT] NULL ;
- 带BETWEEN AND 关键字的查询
SELECT 字段名1,字段名2… FROM 数据表名称 WHERE 字段名 [NOT] BETWEEN 筛选范围1 AND 筛选范围2;
- 带LIKE关键字的查询
前面记录了精确查询,而有时需要模糊查询;
例如查询某个学生的姓名;
SELECT 字段1 ,字段2… FROM 数据表名称 WHERE 字段名[NOT] LIKE ‘匹配字符串’
‘匹配字符串’:用来指定要匹配的字符串,可以时一个普通的字符串,也可以是包含百分号(%)和下划线(_)的通配符字符串,其中:%表示0~n个字符,下划线表示一个字符。
7. 带DISTINCT关键字的查询
SELECT DISTINCT 字段名 FROM 数据表名称;
高级查询
一. 排序查询
SELECT 字段名1 ,字段名2 FROM 数据表名称 ORDER BY 字段名1[ASC|DESC] ,字段名2[ASC|DESC]…;
ASC:表示升序(默认为升序)DESC:表示降序
二.聚合函数
函数名称 | 作用 |
---|---|
COUNT() | 返回查询的行数 |
AVG() | 返回查询的平均值 |
SUM() | 返回查询的和 |
MAX() | 返回查询的最大值 |
MIN() | 返回查询的最小值 |
1.COUNT()函数:
SELECT COUNT ( | 1 | 列名)* FROM 数据表名称 (也可加条件查询语句[WHERE…]
下面来解释一下图片中的暗藏问题!!
当 数值类型 与 空 相加时,结果为0。在MySQL中使用 IFNULL 函数处理这些问题。如上图最后一条查询语句所示!!!
2.求和SUM()和 求平均值AVG()函数的基本操作:
若指定列的类型不是数据类型,那么计算的结果为0!
语法格式如下:
SUM()函数:SELECT SUM(字段名) FROM 数据表名称;
ACG()函数:SELECT AVG(字段名) FROM 数据表名称;
3.最大值MAX()函数和MIN()函数的基本使用:
MAX()函数:SELECT MAX(字段名) FROM 数据表名称;
MIN()函数:SELECT MIN(函数) FROM 数据表名称;
聚合函数总结:
通过上述语句的使用,总结出一条规律:
SELECT 聚合函数(),聚合函数()… FROM 数据表名称;
值得注意的是: 数据类型与空相加时,需使用IFNULL(列名,0) 将空转换为数值0!!
三. 分组查询
在查询数据时,有时需要按照一定的类别进行统计。例如查询某部门的人数,查询每个部门的薪资总和等。在MySQL中使用 GROUP BY 语句进行分组查询。
具体语法如下:
SELECT 字段名1,字段名2…FROM 数据表名称 GROUP BY 字段1 ,字段2…
注意: 在分组查询中,可以使用条件筛选语句——WHERE ,但不能将其放在GROUP BY语句的后面!!!
四. HAVING查询
对于一些更复杂的分组查询,在查询完成后还需进行对数据过滤。MySQL提供HAVIN子句,用于在分组后对数据进行过滤。
语法格式如下:
SELECT 字段名1,字段名2… FROM 数据表名称 HAVING [条件表达式];
HAVING子句和WHERE 的区别:
在使用分组查询时,需要进一步的对数据进行筛选,通常会想到 “WHERE” 而"WHERE"语句无法使用聚合函数且只在GROUP BY 前使用。
"HAVING"子句可在GROUP BY 后使用聚合函数。
五. LIMIT分页
在查询数据时一般会返回几条,几十条甚至更多的数据,但用户可能只需其中的某几条,而且这种查询明显会影响性能。 MySQL提供了LIMIT关键字用于限制查询结果的数量。
具体语法如下:
SELECT 字段名1,字段名2 FROM 数据表名称 LIMIT [m,]n;
LIMIT后可跟两个参数,m为可选参数,默认为0,n为必选参数,代表从m+1条记录开始,取n条记录