版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL 练习训练一1、查询 dept 表的结构在命令窗口输入: desc dept;2deptselect * from dept3、检索 emp 表中的员工姓名、月收入及部门编号select ename 员工姓名,sal 月收入,empno 部门编号 from emp 注意查询字段用分号隔开。4、检索 emp 表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD-MM-YY,如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用 TO_CHAR 函数进行转换。select ename 员工姓名, hiredate 雇用时间1,to_char(hiredate,YYYY-MM-DD)
2、2 from Oracle日历。第二个时间是字符型的。易错点:不要将 YYYY-MM-DD 使用双引号5、使用 distinct 去掉重复行。检索 emp 表中的部门编号及工种,并去掉重复行。selectdistinctdeptno部门编号,job工种fromemporderdeptno注意 distinct 放的位置from翻译成汉语就明白了应该是:选择不重复的部门编号和工种从emp表。而不是:选择部门编和工种不重复地从emp表。这还是人话么O(_)O哈哈6、使用表达式来显示列检索 emp 表中的员工姓名及全年的月收入select ename(sal+nvl(comm,0)*12from c
3、ommnvl7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。 select ename 员工姓名,sal*12 全年收入 from 8、连接字符串oracle“|”字符串要加入数字值那么在“|”后可以直接指定数字,如果在字符串加入字符和日期值,则必须要用单引号。检索 emp 表,用 is a 这个字符串来连接员工姓名和工种两个字段select ename| is a |job 他们各自的职位from emp 注意:用的是单引号9、使用 WHERE 子句检索月收入大于 2000 的员工姓名及月收入。select ename 姓名 ,sal 月薪from emp where sal200
4、010002000select ename,sal,hiredatefrom emp sal between 1000 and 200010、like 的用法:检索以 S 开头的员工姓名及月收入。select ename 员工姓名,sal 月收入 from emp where ename likeS%检索员工姓名中的第三个字符是 A 的员工姓名及月收入。select ename 员工姓名,sal 月收入 from emp where ename likeAlike11、在 WHERE 条件中使用 IN 操作符检索 emp 表中月收入是 800 的或是 1250 的员工姓名及部门编号select
5、 ename 姓名,deptno 部门编号,sal 工资 from emp where sal in(800,1250)注意:IN 的意思是或者。是 800 或者 1250 而不是表示范围12WHERE(AND、OR、20CLERKselect * from emp where deptno=20 and job=CLERK 2500MANAGERwhere13、查询表中是空值的数据检索 emp 表中有提成的员工姓名、月收入及提成。selectename,comm,salfromempwherecommnot null14、使用 ORDER BY 子句,进行排序。emp30按月收入升序、然后按
6、提成降序显示。select ename 姓名,comm 提成,sal 工资 from emp where deptno=30 order by sal asc,comm descSQL 练习训练二1200select ename 姓名,sal 工资 from emp where sal12007934select ename 姓名,deptno 部门编号 from emp where empno=7934500012000select ename,salfrom emp where sal not between and 12000注意:不是 is not4.1981-02-011981-05
7、-01(job)用时间,按从早到晚排序.select ename 姓名,job 职位,hiredate 雇佣时间fromempwherehiredatebetweento_date(1981-02-01,YYYY-MM-DD) and to_date(1981-05-01,YYYY-MM-DD)order by hiredate asc 总结:1,要转换为字符类型转换为日期类型否则无法比较2,1981-05-01这个例子很重要2010select ename 姓名,deptno 部门号 from emp where deptno in (20,10)selectename,deptnofrom
8、empwheredeptnoin(20,10) 加不加单引号都可以。那么有什么区别呢1987select ename 姓名,hiredate 雇佣时间 from emp where to_char(hiredate,YYYY)=1987取出雇用时间的年份且转换为字符形式;然后与1987比较select ename 姓名,hiredate 雇佣时间 from emp whereto_char(hiredate,MM)=04select ename 姓名,hiredate 雇佣时间 from emp to_char(hiredate,MM)=4前者是可以的,后者不可以jobselect ename
9、 姓名,job 工作 from emp where mgr is null选择公司中有奖金 (COMM0)按工资逆排序,奖金比例逆排序.select ename 姓名,sal 工资,comm 奖金比例from emp where comm is not null and comm !=0 order by sal desc,comm descaselect ename 姓名from emp where ename=A select ename 姓名from emp where ename like 总结:1,前者是错的,这样定死了:一共只有三个字母,且最后一个是 A2,后者正确。表示 A 后的
10、不限定这个例子也很重要,可以用于模糊查询oracle 有关 emp 表的简单查询练习题scott/tigerempdeptemp(empno/ename/job/mgr/hiredate雇日期/sal/comm/deptnodept(deptno/dname/loc 薪金 佣金-1、选择部门 30 中的雇员SELECT * FROM emp WHERE deptno = 30;-2、列出所有办事员的姓名、编号和部门SELECT ename,empno,deptno from emp WHERE UPPER(job)=CLERK-3、找出佣金高于薪金的雇员SELECT * FROM emp WH
11、ERE NVL(comm,0)sal-4、找出佣金高于薪金 60%的雇员SELECT * FROM emp WHERE NVL(comm,0)sal*0.6-5、找出部门 10 中所有经理和部门 20 中的所有办事员的详细资料Select*fromempwhere(deptno=10ANDjob=MANAGER)OR(deptno=20 AND job=CLERK);-61020办事员但其薪金=2000Select * from emp where deptno=10 AND OR deptno=20 AND job=CLERKOR job!= MANAGER AND sal=2000;-7、
12、找出收取佣金的雇员的不同工作Select distinct job from emp where comm IS NOT NULL ;-8、找出不收取佣金或收取的佣金低于 100 的雇员Select * from emp where comm IS NULL OR NVL(comm,0)25;-11、显示只有首字母大写的所有雇员的姓名SELECT * FROM emp where ename=INITCAP(ename);SELECT * FROM emp WHERE SUBSTR(ename,1,1)=UPPER(SUBSTR(ename,1,1)AND SUBSTR(ename,2,len
13、gth-1)=LOWER(SUBSTR(ename,2,length-1);-126SELECT * FROM emp WHERE LENGTH(ename)=6;-13、显示不带有R的雇员姓名 not likeSELECT * FROM emp WHERE ename NOT LIKE %R%;-14、显示所有雇员的姓名的前三个字符 substr SELECT SUBSTR(ename,1,3) short_name FROM emp;-15、显示所有雇员的姓名,用 a 替换所有A replaceSELECT REPLACE(ename,A,a) FROM emp;-1610add_mont
14、hs SELECT ename, ADD_MONTHS(hiredate,12*10) ten_years FROM -17、显示雇员的详细资料,按姓名排序SELECT * FROM emp ORDER BY ename;-18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面 ASC SELECT ename,hiredate FROM emp ORDER BY hiredate;-19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序SELECT ename,job,sal FROM emp ORDER BY job DESC, sal;-20排序,将最早年
15、份的项目排在最前面 ASCSELECT ename,TO_CHAR(hiredate,YYYY)|年 year, TO_CHAR(hiredate,MM) |月 month FROM emp ORDER BY TO_CHAR(hiredate,MM), TO_CHAR(hiredate,YYYY);-2130SELECT ename,sal,ROUND(sal/30) FROM emp;-22、找出在(任何年份的)2 月受聘的所有雇员SELECT * FROM emp WHERE TO_CHAR(hiredate,MM)=02;-23、对于每个雇员,显示其加入公司的天数SELECT TRUNC(sysdate-hiredate) DAYS FROM emp;-24、显示姓名字段的任何位置,包含 A 的所有雇员的姓名 instrSELECTDECODE(INSTR(ename,A),0,INSTR(ename,A)FROM emp;-25、以年、月和日显示所有雇员的服务年限SELECT TRUNC(MONTHS_BETWEEN(s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 失智症老人的护理
- 硫回收装置安全
- 汽车金融流程
- 公共安全大赛
- 制造业薪酬规定
- 住宅小区改造工程合同范本
- 农村教育保障与住宅用地管理
- 航空公司商标印刷规范
- 研发项目招投标资质审核细则
- 能源工程电焊施工合同
- 咸水沽污水厂生物池清淤施工组织方案
- “思维导图”在生物教学中的应用探讨8
- 预拌干混砂浆生产线建设导则浙江省散装水泥发展和应用
- 高标准农田建设施工组织设计概述
- 最新人教版四年级数学上册配套精选练习题74页
- 农业标准化与农产品质量安全.ppt
- GB31644-2018食品安全国家标准复合调味料
- 小学生体检表1页
- 上级建设政府部门检查监理公司用表
- 糖尿病 第九版内科学
- 滨江大道西段污水管道施工工程施工组织设计
评论
0/150
提交评论