MySQL(八)数据的查询操作(上)

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;
原文地址:https://www.cnblogs.com/duxiangjie/p/14206308.html