SELECT 查询数据
查询操作,在增删改查操作中,是属于操作频率最高,同时操作方式最多样的,包含单表的操作以及多表关联的操作。
1 单表查询
基于单个数据表的数据查询操作,我们称为单表查询,单表查询是高级查询的基础,也是项目中在进行
数据测试时使用最多的SQL 语句。
(1)查询所有字段
select * from table_name;
-- 查询职员表中所有数据
select * from employee;
星号代表任何字段
(2)查询指定字段
-- 查看表中的指定字段
select 字段1,字段2,字段3... from 表名;
-- 查询职员表中所有的职员姓名和入职时间
SELECT empname, hirdate FROM employee;
(3)在select后面列前使用distinct可以消除重复的行
select distinct 字段... from 表名;
-- 查询职员表中所有的岗位
SELECT DISTINCT job FROM employee;
(4)使用 as 给字段起别名
select 字段1 as 别名1, 字段2 as 别名2, 字段3 as 别名3 from 表;
-- 查看字段,并起别名
select deptno as 编号,location as 位置 from department;
2 条件查询
select * from 表 where 条件;
where后面支持多种运算符,进行条件的处理
(1)比较运算符
- 等于(等于可以用于字符): =
- 大于: >
- 大于等于: >=
- 小于: <
- 小于等于: <=
- 不等于: != 或 <>
-- 查询工作为头领的数据
select * from employee where job='头领';
(2)逻辑运算符--用于多个条件查询
- and
- or
- not
-- 获取工作为头领,编号小于2的数据
select * from employee where job='头领' and empno <2;
-- 获取工作为头领,编号不小于2的数据
select * from employee where job='头领' and not empno <2;
(3)模糊查询:
- like %表示任意多个任意字符
- _表示一个任意字符
-- 查询nickname是 天 开头的
select * from employee where nickname like "天%";
select * from employee where nickname like "天_星%";
(4)范围查询
- in:表示在一个非连续范围
- between...and.. 在一个连续范围内
-- 查询编号为1,10,100的人
select * from employee where empno in (1,25,2211);
-- 查询编号为1到100的人
select * from employee where empno between 1 and;
- 查询岗位 五虎上将、步军头领、骑兵头领 的职员
SELECT * FROM employee WHERE job IN ("五虎上将", "步军头领", "骑兵头领");
(5)空判断
- is null 判定为空
- is not null 判断非空
-- 查询mgr为null的人
select * from employee where mgr is null;
3 排序
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]
- 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
- 默认按照列值从小到大排列(asc)
- asc从小到大排列,即升序
- desc从大到小排序,即降序
-- 按照工作从小到大顺序查询前10条
select * from employee order by job limit 10;
-- 按照工作从大到小顺序查询前10条
select * from employee order by job desc limit 10;