Oracle数据库的查询、函数及其转换

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章