SQL查询

SQL 查询

语法规则:

1.  select * from 表名; 查询所有的字段 
2.  select 字段 as [别名] from 表名; 查询一些字段 
select 字段列表
from 表名 -- 这里可以有多张表
[where 条件]
[group by 分组]
[having 分组条件]
[order by 排序]

1、基本查询

语法:

    1.  select * from 表名; 查询所有的字段 
    2.  select 字段 as [别名] from 表名; 查询一些字段 
-- 查询所有的员工信息 
select * from emp;
-- 查询编号,姓名 职位  薪资 
select empno,ename,job,sal from emp;

查询结果显示标题 (编号,姓名 职位  薪资)
-- as 添加别名  (员工编号")
-- as 可以省略   "" 可以省略 
 select empno as "员工编号" ,ename 姓名,job,sal from emp;

-- 查询所有emp 的职位 
select job from emp; -- 有重复 去重复
-- 去重复  distinct
select distinct job from emp;

-- 查询中进行四则运算  查员工年薪 
select ename,job,(sal * 12 + 200) 年薪 from emp;

-- 查询常量的使用 
 select '员工',ename,job from emp; -- 可以是字符串 常量 
 select 9527,ename,job from emp;  -- 可以是数组常量 (省略 '')

-- 可以使用 || 凭借符  

select empno || ename from emp;
-- 不能""
select  '编号:' || empno || '姓名:'|| ename  员工信息 from emp;

-- 查询的时候 表 可以使用别名 
select e.ename,e.job from emp e;

2、条件查询

语法:

select 列名 
from 表名 
where 判断条件;      
1. 关系运算符  > =    (<> !=) 不等于2中写法 
sal > 1500 员工 
select * from emp where sal > 1500;
名字叫soctt 的员工信息
select * from emp where ename = 'SCOTT';

职位不是 ANALYST 的员工 

select * from emp where job <>'ANALYST';
select * from emp where job !='ANALYST';
2. 逻辑运算符  and  or not 
sal 在 1500 -2000 之间的  
select * from emp where sal > 1500 and sal < 2500;

查询sal > 3000 或者 名字叫 SCOTT 
select * from emp where sal > 3000 or ename = 'SCOTT';

SAL 不在这个 1500 -2000
select * from emp where not (sal > 1500 and sal < 2500);      

3.区间运算 
between ... and ...  可以用在 数值 和 时间上 
1. 查找在 1200 到 2500 之间 
select * from emp where sal between 1200 and 2500;
2. 在 1981 年入职的员工   
select * from emp where hiredate between '01-1月-81' and '30-12月-81';

4. 判断 null 操作 
is null  is not null 
-- comm 是奖金  
-- 奖金为null 的员工 
select * from emp where comm is null;
-- 不为空 
select * from emp where comm is not null;
5. in   和  not in  

在in 什么中 
 判断员工标号 :是否在 (7499,7521,8888) 
select * from emp where empno  = 7499 or empno = 7521 or empno  =8888;
select * from emp where empno in (7499,7521,8888);

3、模糊查询

SQL的四种匹配模式:% _ [ ] [^]

通配符 解释
% 包含零个或更多字符的任意字符串
_ 下划线,表示任何单个字符
[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符
[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符
--1.查以 姓名以 A开头的员工 
select * from emp where ename like 'A%';  
--2.以s结尾  
select * from emp where ename like '%S';  
--3. 查询 第二字符为A的官员 
select * from emp where ename like '_A%';
--4. 是否包含s的员工 
select * from emp where ename like '%S%';

4、排序查询

排序查询的语法:

select * from t
where 条件 
order by 字段;

-- sql的执行顺序 
1.查表名 
2. 查询 where判断条件 
3. select *  字段
4. 排序 
 1.查询所有的员工 

 select * from emp; -- 通过插入顺序进行 展示的 

 -- ase 升序  (默认是升序)
 -- desc 降序

 -- 通过薪资进行排序 (底到高) 升序 
   select * from emp
   order by sal ASC;
 --  默认是升序  asc 可以省略 
  select * from emp
   order by sal desc;

 -- 按照入职时间进行排序(升序) 如果入职时间相同 薪资排序 (降序)

 select * from emp 
 order by hiredate asc,sal desc;
原文地址:https://www.cnblogs.com/zhiwenxi/p/11525168.html