Oracle基本查询
select 列名1,列名2… from 表名
1.请查询出s_emp表中所有的员工信息:
select * from s_emp;
2.请查询出s_emp表中所有的员工的部门ID,工资:
select DEPT_ID from s_emp;
3.请查询出s_emp表中所有的员工的年薪:
select salary+COMMISSION_PCT/100*salary from s_emp;
4.请查询出s_emp表中所有的员工的姓名:
列名不用可’’ 字符内容要加’ ',在sql语句中字符串用 ’ '引号
select FIRST_NAME||' '||LAST_NAME from s_emp;
select FIRST_NAME||' '||LAST_NAME as 姓名 from s_emp;
5.请查询出s_emp表中所有的员工的工资:
select salary from s_emp;
6.请查询出s_dept表的部门名称
select NAME from s_dept;
DISTINCT 用来去除重复项
select DISTINCT name from s_dept;
7.请查询出s_emp表中所有的员工的部门ID及职称:
select DEPT_ID,TITLE from s_emp;
8.查询s_emp表要求输出员工姓名(firs_name、last_name)和实际工资(基本工资+提成)
select FIRST_NAME||LAST_NAME,nvl(COMMISSION_PCT/100,0)*salary+salary from s_emp;
9.请查询出s_emp表中dept_id为41的员工信息 并且 工资大于1000
select 列名1,列名2
from 表名
where 条件
select *
from s_emp
where DEPT_ID=41 and salary>1000;
10.请查询出s_emp表中dept_id为41的员工信息 或者 工资大于1000
select *
from s_emp
where DEPT_ID=41 or salary>1000;
11.请查询出s_emp表中last_name为Smith的员工的信息:
select *
from s_emp
where last_name = 'Smith';
12.请查询出s_emp表中部门ID为50并且工资大于1500的员工的信息:
select *
from s_emp
where DEPT_ID=50 and salary>1500;
13.请查询出s_emp表中工资在1500到2000之间的员工信息:
方式1
select *
from s_emp
where salary>1500 and salary<2000;
方式2
select *
from s_emp
where salary between 1500 and 2000;
14查询出s_dept表中region_id为1,3的部门信息:
select *
from s_dept
where REGION_ID=1 or REGION_ID=3;
select *
from s_dept
where REGION_ID in(1,3);
15.请查询出s_emp表中姓中含有字母a的员工信息:
–%表示可以有,可以没有,有可以有多个
select *
from s_emp
where LAST_NAME like '%a%';
16.请查询出s_emp表姓中第二个字母为a的员工信息:
– _表示一定有,只能有一位
select *
from s_emp
where LAST_NAME like '_a%';
17.请查询出当前用户下所有以‘s_’开头的表:
select *
from user_tables
where table_name like 's\_%';
18.查询出s_emp表中非销售职位的员工信息:
select *
from s_emp
where COMMISSION_PCT is null;
19.查询出s_emp表中销售职位的员工信息:
select *
from s_emp
where COMMISSION_PCT is not null;
20.order by 列名 用来完成指定列的排序, 默认升序ASC ,desc表示降序 ,order by 子句一般放在最后
select *
from s_emp
where SALARY>1000
order by salary desc;
二、字符函数
1.LOWER 将字符串转换成小写
select lower('WERT') from dual;
2.UPPER 将字符串变为大写
select upper('weRt') from dual;
3.INITCAP 将字符串的第一个字母变为大写,同时后面的转化为小写
select initcap('weRT') from dual;
三、字符串操作函数
1.CONCAT 拼接两个字符串,与 || 相同
select concat('ac','bd') from dual;
2.SUBSTR(‘String’,1,3) 取字符串的子串,下标从1开始
select substr('qwert',1,3) from dual;
3.LENGTH以字符给出字符串的长度 给出字符串的长度
select length('asdfghj') from dual;
四、数字函数
1.ROUND(value,precision) 按precision 精度4舍5入
select round(55.55,1) from dual;--precision不赋值,默认精度为0
2.TRUNC(value,precision) 按precision 截取value
SELECT TRUNC (124.16666, -1) FROM dual; --120
五、日期函数
1.获取当前系统日期
select sysdate from dual;--格式:07-11月-19
2.将系统当前日期改为指定日期
select To_date('07-10月-19') from dual;
3.MONTHS_BETWEEN(date2,date1) 给出 Date2 - date1的月数
select months_between('01-6月-95','11-1月-94')
from s_emp;
4.NEXT_DAY ( date,numbe) 给出日期date之后下周第number天的日期
select next_day(date,2) from dual;
六、转换函数
1.to_char()将日期转化为字符串
select to_char(sysdate,'yyyy/MM/dd hh:mm:ss') from dual; --2019/11/07 06:11:24
select to_char(123123,'L999,999,999') from dual; -- ¥123,123
select *
from s_emp
where to_char(START_DATE,'MM')='02';--开始日期是2月份的员工信息
2.to_number(‘String’)字符串转到数字
to_number(varchar2 or char,’format model’)
3.to_date(‘String’)字符串转到日期
select TO_DATE('2019-11-7','yyyy-mm-dd') from dual;
七、转换函数的嵌套
查询员工表中manager_id为空的员工查询出来,并将空列的值置为“No Manager”:
select last_name,
nvl(TO_CHAR(manager_id),'No Manager')
from s_emp
where manager_id is null;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步