常见的99中sql语句

1. select * from emp;

2. select empno, ename, job from emp;

3. select empno编号, ename姓名, job工作from emp;

4. select job from emp;

5. select distinct job from emp;

6. select distinct empno, job from emp;

说明:因为雇员编号不重复,所以此时证明所有的列没有重复,所以不能消除掉重复的列.

7.查询出雇员的编号,姓名,工作,但是显示的格式:编号是: 7369的雇员,姓名是: smith,工作是: clear

select '编号是: ' || empno || '的雇员,姓名是: ' || ename || ',工作是: ' || job from emp;

8.求出每个雇员的姓名及年薪

select ename, sal * 12 income from emp;

9.求出工资大于1500的所有雇员信息

select * from emp where sal > 1500;

10.查询每月可以得到奖金的雇员信息

select * from emp where comm is not null;

11.查询没有奖金的雇员信息

select * from emp where comm is null;

12.查询出基本工资大于1500同时可以领取奖金的雇员信息

select * from emp where sal > 1500 and comm is not null;

13.查询出基本工资大于1500或者可以领取奖金的雇员信息

select * from emp where sal > 1500 or comm is not null;

14.查询出基本工资不大于1500或者不可以领取奖金的雇员信息

select * from emp where not(sal > 1500 and comm is not null);

15.查询基本工资大于1500,但是小于3000的全部雇员信息

select * from emp where sal > 1500 and sal < 3000;

16.查询基本工资大于等于1500,但是小于等于3000的全部雇员信息

select * from emp where sal >= 1500 and sal <= 3000;

select * from emp where sal between 1500 and 3000;

17.查询出在1981年雇佣的全部雇员信息(1981年1月1日 到1981年12月31日之间的雇佣的雇员)

select * from emp where hiredate between '1-1月-81' and '31-12月-81';

18.要求查询出姓名是smith的雇员信息

select * from emp where ename = 'SMITH';

19.要求查询出雇员是7369, 7499, 7521的雇员的具体信息

select * from emp where empno = 7369 or empno = 7499 or empno = 7521;

select * from emp where empno in(7369, 7499, 7521);

20.要求查询出雇员不是7369, 7499, 7521的雇员的具体信息

select * from emp where empno not in(7369, 7499, 7521);

21.要求查询出姓名是smith, allen, king的雇员信息

select * from emp where ename in('SMITH', 'ALLEN', 'KING');

22.查询出所有雇员姓名中第二个字母包含"M"的雇员信息

select * from emp where ename like '_M%';

23.查询出雇员姓名中包含字母M的雇员信息

select * from emp where ename like '%M%';

24.要求查询出在1981年雇佣的雇员信息

select * from emp where hiredate like '%81%';

25.查询工资中包含5的雇员信息

select * from emp where sal like '%5%';

26.查询雇员编号不是7369的雇员信息

select * from emp where empno != 7369;

select * from emp where empno <> 7369;

27.要求按照工资由低到高排序

select * frm emp order by sal;

select * from emp order by sal asc;

28.要求按照工资由高到低排序

select * from emp order by sal desc;

29.要求查询出20部门的所有雇员信息,查询的信息按照工资由高到低排序,如果工资相等,则按照雇佣日期由早到晚排序.

select * from emp where deptno = 20 order by sal desc, hiredate asc;

30.将小写字母变为大写字母

select upper('hello') from dual;

31.将大写字母变为小写字母

select lower('HELLO WORLD') from dual;

32.要求查询出姓名是smith的雇员信息

select * from emp where ename = upper('smith');

33.使用initcap()函数将单词的第一个字母大写

select initcap('hello world') from dual;

34.将雇员表中的雇员姓名变为开头字母大写

select initcap(ename) from emp;

35.将字符串"hello"和"world"进行串联

select concat('hello ', 'world') from dual;

36.对字符串进行操作的常用字符处理函数

select substr('hello', 1, 3)截取字符串, length('hello')字符串的长度, replace('hello', 'l', 'x')字符串替换from dual;

select substr('hello', 0, 3)截取字符串, length('hello')字符串的长度, replace('hello', 'l', 'x')字符串替换from dual;

37.显示所有雇员的姓名及姓名的后三个字符

select ename, substr(ename, length(ename) -2) from emp;

select ename, substr(ename, -3, 3) from emp;

38.使用数值函数执行四舍五入操作

select round(789.536) from dual;

39.要求将789.536数值保留两位小数

select round(789.536, 2) from dual;

40.要求将789.536数值中的整数的十位进行四舍五入进位

select round(789.536, -2) from dual;

41.采用trunc()函数不会保留任何小数,而且小数点也不会执行四舍五入的操作

select trunc(789.536) from dual;

42.通过trunc()也可以指定小数点的保留位数

select trunc(789.536, 2) from dual;

43.作用负数表示位数

select trunc(789.536, -2) from dual;

44.使用mod()函数可以进行取余的操作

select mod(10, 3) from dual;

45.显示10部门雇员进入公司的星期数(当前日期-雇佣日期=天数/ 7 =星期数)

select empno, ename, round((sysdate - hiredate) / 7) from emp where deptno = 10;

46.日期函数

months_between():求出给定日期范围的月数

add_months():在指定的日期上加上指定的月数,求出之后的日期

next_day():指定日期的下一个日期

last_day():求出给定日期当月的最后一天日期

47.

select empno, ename, months_between(sysdate, hiredate) from emp;

select empno, ename, round(months_between(sysdate, hiredate)) from emp;

48. select sysdate, add_months(sysdate, 4) from dual;

49. select next_day(sysdate, '星期一') from dual;

50. select last_day(sysdate) from dual;

51.转换函数

to_char():转换成字符串

to_number():转换成数字

to_date():转换成日期

52.查询所有雇员的雇员编号,姓名,雇佣日期

select empno,

ename,

to_char(hiredate, 'yyyy') year,

to_char(hiredate, 'mm') months,

to_char(hiredate, 'dd') day

from emp;

select empno, ename, to_char(hiredate, 'yyyy-mm-dd') from emp;

select empno, ename, to_char(hiredate, 'fmyyyy-mm-dd') from emp;

53.查询所有雇员的编号,姓名和工资

select empno, ename, sal from emp;

select empno, ename, to_char(sal, '99,999') from emp;

select empno, ename, to_char(sal, 'L99,999') from emp;

select empno, ename, to_char(sal, '$99,999') from emp;

54. select to_number('123') + to_number('123') from dual;

55.将一个字符串转换成日期类型

select to_date('2009-01-01', 'yyyy-mm-dd') from dual;

56.求出每个雇员的年薪(要求加上奖金)

select empno, ename, sal, comm, (sal + comm) * 12 from emp;

select empno, ename, sal, comm, nvl(comm, 0), (sal + nvl(comm, 0)) * 12 income from emp;

57. decode()函数类似于if....elsif...else语句

select decode(1, 1, '内容是1', 2, '内容是2', 3, '内容是3') from dual;

58.查询出雇员的编号,姓名,雇佣日期及工作,要求将雇员的工作替换成以下信息:

select empno雇员编号,

ename雇员姓名,

hiredate雇佣日期,

decode(job,

'CLERK', '业务员',

'SALESMAN', '销售人员',

'MANAGER', '经理',

'ANALYST', '分析员',

'PRESIDENT', '总裁'

)职位

from emp;

59.笛卡尔积(交差连接)

select * from emp, dept;

select * from emp cross join dept;

60.内连接

select * from emp e, dept d where e.deptno = d.deptno;

select * from emp e inner join dept d on e.deptno = d.deptno;

select * from emp e join dept d on e.deptno = d.deptno;

61.自然连接

select * from emp natural join dept;

select * from emp e join dept d using(deptno);

62.要求查询出雇员的编号,姓名,部门的编号,名称,地址

select e.empno, e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno = d.deptno;

63.要求查询出雇员的姓名,工作,雇员的直接上级领导姓名

select e.ename, e.job, m.ename from emp e, emp m where e.mgr = m.empno;

64.要求查询出雇员的姓名,工作,雇员的直接上级领导姓名以及部门名称

select e.ename, e.job, m.ename, d.dname from emp e, emp m, dept d where e.mgr = m.empno and e.deptno = d.deptno;

65.要求查询出每个雇员的姓名,工资,部门名称,工资在公司的等级(salgrade),及其领导的姓名及工资所在公司的等级

select e.ename, e.sal, d.dname, s.grade, m.ename, m.sal, ms.grade

from emp e, dept d, salgrade s, emp m, salgrade ms

where e.deptno = d.deptno

and e.sal between s.losal and s.hisal

and e.mgr = m.empno

and m.sal between ms.losal and ms.hisal;

select e.ename,

e.sal,

d.dname,

decode(s.grade, 1, '第五等级', 2, '第四等级', 3, '第三等级', 4, '第二等级', 5, '第一等级'),

m.ename,

m.sal,

decode(ms.grade, 1, '第五等级', 2, '第四等级', 3, '第三等级', 4, '第二等级', 5, '第一等级')

from emp e, dept d, salgrade s, emp m, salgrade ms

where e.deptno = d.deptno and e.sal between s.losal and s.hisal and e.mgr = m.empno

and m.sal between ms.losal and ms.hisal;

66. select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e inner join dept d on e.deptno = d.deptno;

67.左外连接

select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno(+);

select empno, ename, d.deptno, dname, loc from emp e left outer join dept d on e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e left join dept d on e.deptno = d.deptno(+);

68.右外连接

select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno(+) = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e right outer join dept d on e.deptno = d.deptno;

select empno, ename, d.deptno, dname, loc from emp e right join dept d on e.deptno = d.deptno;

69. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno;

70. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno(+);

71.

select * from emp e, dept d where e.deptno = d.deptno and d.deptno = 30;

select * from emp e inner join dept d on e.deptno = d.deptno where d.deptno = 30;

select * from emp e join dept d on e.deptno = d.deptno where d.deptno = 30;

select * from emp e natural join dept d where deptno = 30;

select * from emp e join dept d using(deptno) where deptno = 30;

72.

select e.ename, d.deptno, d.dname, d.loc from emp e right outer join dept d on e.deptno = d.deptno;

select e.ename, d.deptno, d.dname, d.loc from emp e right join dept d on e.deptno = d.deptno;

select e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno(+) = d.deptno;

73. select count(ename) from emp;

74. select min(sal) from emp;

75. select max(sal) from emp;

76. select sum(sal) from emp;

77. select avg(sal) from emp;

78. select sum(sal) from emp where deptno = 20;

79. select avg(sal) from emp where deptno = 20;

80.求出每个部门的雇员数量

select deptno, count(deptno) from emp group by deptno;

select deptno, count(empno) from emp group by deptno;

81.求出每个部门的平均工资

select deptno, avg(sal) from emp group by deptno;

82.按部门分组,并显示部门的名称,及每个部门的员工数

select d.dname, count(e.empno) from emp e, dept d

where e.deptno = d.deptno

group by d.dname;

select d.deptno, d.dname, temp.c

from (select deptno, count(e.empno) c from emp e group by e.deptno) temp, dept d

where temp.deptno = d.deptno;

83.要求显示出平均工资大于2000的部门编号和平均工资

select deptno, avg(sal) from emp group by deptno having avg(sal) > 2000;

84.显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于5000,输出结果按月工资的合计升序排序.

select job, sum(sal) su from emp where job <> 'SALESMAN' group by job having sum(sal) > 5000 order by su;

select temp.job, sum(temp.sal) s

from (select job, sal from emp e where job <> 'SALESMAN') temp

group by temp.job

having sum(temp.sal) > 5000

order by s;

85.求出平均工资最高的部门工资

select max(avg(sal)) from emp group by deptno;

86.要求查询出比雇员编号为7654工资高的所有雇员信息

select * from emp where sal >(select sal from emp where empno = 7654);

87.要求查询出工资比7654高,同时与7788从事相同工作的全部雇员信息

select * from emp

where sal >(select sal from emp where empno = 7654)

and job = (select job from emp where empno = 7788);

88.要求查询出工资最低的雇员姓名,工作,工资

select ename, job, sal from emp where sal = (select min(sal) from emp);

89.要求查询出:部门名称,部门的员工数,部门的平均工资,部门的最低收入雇员的姓名

select d.dname, temp.c, temp.a, e.ename

from dept d,

(select deptno, count(empno) c, avg(sal) a, min(sal) m from emp group by deptno) temp,

emp e

where d.deptno = temp.deptno and e.sal = temp.m;

select d.deptno, temp.dname, temp.c, temp.a, e.ename, e.sal

from

(select d.dname , count(e.empno) c, avg(e.sal) a, min(e.sal) m

from emp e, dept d

where e.deptno = d.deptno

group by d.dname) temp,

emp e,

dept d

where temp.m = e.sal

and temp.dname = d.dname;

90.求出每个部门的最低工资的雇员的信息

select * from emp where sal in(select min(sal) from emp group by deptno);

select * from emp where sal =any(select min(sal) from emp group by deptno);

select * from

(select min(sal) m from emp group by deptno) temp,

emp e

where e.sal = temp.m;

91.范例90中,比子查询条件中最低(小)的工资要大的雇员信息

select * from emp where sal >any(select min(sal) from emp group by deptno);

select * from emp where sal > (select min(min(sal)) from emp group by deptno);

92.范例90中,比子查询条件中最高(大)的工资要小的雇员信息

select * from emp where sal

select * from emp where sal < (select max(min(sal)) from emp group by deptno);

93.范例90中,比子查询条件中最高(大)的工资要大的雇员信息

select * from emp where sal >all(select min(sal) from emp group by deptno);

select * from emp where sal > (select max(min(sal)) from emp group by deptno);

94.范例90中,比子查询条件中最低(小)的工资要小的雇员信息

select * from emp where sal

select * from emp where sal < (select min(min(sal)) from emp group by deptno);

95.查找出20部门中没有奖金的雇员信息

select * from emp where (sal, nvl(comm, -1)) in (select sal, nvl(comm, -1) from emp where deptno = 20);

select * from emp where deptno = 20 and comm is null;

96. union操作符返回两个查询选定的所有不重复的行

select deptno from emp union select deptno from dept;

97. union all操作符合并两个查询选定的所有行,包括重复的行

select deptno from emp union all select deptno from dept;

98. intersect操作符只返回两个查询都有的行

select deptno from emp intersect select deptno from dept;

99. minus操作符只返回由第一个查询选定但是没有被第二个查询选定的行,也就是在第一个查询结果中排除在第二个查询结果中出现的行

select deptno from dept minus select deptno from emp;

��O������dL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容