前文介绍了 DML,主要用来操作数据表,完成数据的增(insert into)、删(delete from)、改(update)。
本文将继续介绍 DQL,Data Query Language,数据查询语言,用来查询数据表的记录。
select
查询语句主要使用 SELECT
关键字,是使用频率最高的 SQL 语句,也是数据库最频繁的一种操作,语法格式为:
SELECT select_expr [, select_expr]...
[FROM table_references]
[WHERE where_condition]
[ORDER BY expr [ASC | DESC]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[GROUP BY expr]
[HAVING where_condition]
select_expr
是要查询的字段,可以查询多个;FROM
后面是要查询的数据表;WHERE
后面是查询条件,通常用来对表中的记录做一层筛选;ORDER BY
后面是对查询的结果进行排序展示;LIMIT
后面是限制查询的记录数和偏移量,用来做分页查询;GROUP BY
用来做分组查询;HAVING
是在分组之后再对查询结果进行筛选。
基本查询
查询表中整张表的完整记录使用 *
,*
是通配符,匹配所有字段:
select * from user;
查询用户表中的姓名,年龄和性别字段:
select username, age, gender from user;
数据表中的列名都是英文的,为了更好的展示,可以将其重命名为中文,这就需要为字段起一个别名,使用 AS
:
select username as 用户名, age as 年龄, gender as 性别 from user;
别名只是临时的,AS
也是可以省略的,在字段名和别名中间空格即可:
select username uname from user;
条件查询
上面的查询语句,得到的都是整张表的数据。为了对查询结果进行过滤和筛选,可以使用 WHERE
设置查询条件。
条件查询又可以分为三类:比较运算符、逻辑运算符和模糊查询。
常用的条件运算符如下 :
比较运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围之内(含最小、最大值) |
IN(...) | 在in之后的列表中的值,多选一 |
IS NULL | 是NULL |
IS NOT NULL | 不是 NULL |
常用的逻辑运算符如下 :
逻辑运算符 | 功能 |
AND 或 && | 并且 (多个条件同时成立) |
OR 或 || | 或者 (多个条件任意一个成立) |
NOT 或 ! | 非 , 不是 |
查询 id 为 10 的用户,由于 id 是唯一的,这样能精确地查询到一条数据:
select username, age, gender from user where id = 10;
查询分数及格的学生,也就是分数大于等于60分的学生:
select name, score from student where score >= 60;
如果某位同学缺考,默认他的成绩为 null,可以查询缺考的学生:
select name, score from student where score is null;
相反,查询都参加了考试的同学,只需要不为 null 即可:
select name, score from student where score is not null;
查询分数在 90 分到 100 分区间的同学,有三种方式:
# 使用逻辑运算符
select name, score from student where score >=90 && score <= 100;
# 使用
select name, score from student where score >=90 and score <= 100;
select name, score from student where score between 90 and 100;
模糊查询使用 LIKE
:
关键字 | 功能 |
LIKE 占位符 | 模糊匹配,使用 |
查询名字是两个字的学生,使用两个下划线表示:
select * from student where name like '__';
查询姓张的学生,也就是姓名以 “张” 开头:
select * from student where name like '张%';
小结
本文介绍了基本的 SQL 查询语句,包括条件查询,使用比较运算符,逻辑运算符和模糊查询,对结果进行筛选,查询匹配度更精确的记录。