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;