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;