zoukankan      html  css  js  c++  java
  • 查询练习

    创建表空间    scott_space
    create tablespace scott_space datafile 'D:JavaLifeoraclescott_data.dbf' size 100m;
    
    创建用户    scott/1
    create user scott identified by 1 default tablespace scott_space account unlock;
    
    授权
    grant connect, resource to scott;
    
    
    创建表并插入数据
    CREATE TABLE DEPT
           (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
        DNAME VARCHAR2(14) ,
        LOC VARCHAR2(13) ) ;
    CREATE TABLE EMP
           (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7,2),
        COMM NUMBER(7,2),
        DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
    INSERT INTO DEPT VALUES
        (10,'ACCOUNTING','NEW YORK');
    INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
    INSERT INTO DEPT VALUES
        (30,'SALES','CHICAGO');
    INSERT INTO DEPT VALUES
        (40,'OPERATIONS','BOSTON');
    INSERT INTO EMP VALUES
    (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
    INSERT INTO EMP VALUES
    (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
    INSERT INTO EMP VALUES
    (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
    INSERT INTO EMP VALUES
    (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
    INSERT INTO EMP VALUES
    (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
    INSERT INTO EMP VALUES
    (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
    INSERT INTO EMP VALUES
    (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
    INSERT INTO EMP VALUES
    (7788,'SCOTT','ANALYST',7566,to_date('13-7-87','dd-mm-rr')-85,3000,NULL,20);
    INSERT INTO EMP VALUES
    (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
    INSERT INTO EMP VALUES
    (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
    INSERT INTO EMP VALUES
    (7876,'ADAMS','CLERK',7788,to_date('13-7-87', 'dd-mm-rr')-51,1100,NULL,20);
    INSERT INTO EMP VALUES
    (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
    INSERT INTO EMP VALUES
    (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
    INSERT INTO EMP VALUES
    (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
    
    
    
    
    简单查询
    
    1.  选择部门30中的所有员工
    select * from emp where deptno = 30;
    
    2.  列出所有办事员的姓名、编号和部门编号
    select ename,empno,deptno from emp WHERE job = 'CLERK';
    
    3.  找出佣金高于薪金的员工
    select * from emp  where comm > sal;
    
    4.  找出佣金高于薪金60%的员工
    select * from emp  where comm > (0.6)*sal;
    
    5.  找出部门10中所有经理和部门20中所有办事员的详细资料
    select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK');
    
    6.  找出部门10中所有经理,部门20中所有办事员,既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料 
    select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK')or job not in ('MANAGER','CLERK') and sal >=2000;
    
    7.  找出收取佣金的员工的不同工作
    select distinct job from emp where comm is not null;
    
    8.  找出不收取佣金或收取的佣金低于100的员工
    select * from emp where comm is null or comm < 100;
    
    9.  找出各月倒数第三天受雇的所有员工
    select * from emp where last_day(hiredate)-hiredate=2;
    
    10.    找出早于12年前受雇的员工
    select * from emp where months_between(sysdate,hiredate)/12 >=12;
    
    11. 以首字母大写的方式显示所有员工的姓名
    select INITCAP(ENAME) from emp;
    
    12. 显示正好为5个字符的员工姓名
    select ENAME from emp where length(ename)=5;
    
    13. 显示不带有R的员工姓名  www.2cto.com  
    select ENAME from emp where ename not like'%R%';
    
    14. 显示所有员工的前三个字符
    select substr(ename,1,3) from emp ;
    
    15. 显示所有员工的姓名,用a替换所有A
    select replace(ename,'A','a') from emp ;
    
    16. 显示满10年服务年限的员工的姓名和受雇日期
    select ename ,hiredate from emp where months_between(sysdate,hiredate)/12>=10;
    
    17. 显示员工的详细资料,按姓名排序
    select * from emp orderby ename ;
    
    18. 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面
    select ename ,hiredate from emp orderby hiredate asc;
    
    19. 显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同按薪金排序
    select ename,job,sal from emp orderby job desc ,sal;
    
    20.显示所有员工姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。
    select ename,to_char(hiredate,'YYYY/MM') from emp orderby to_char(hiredate,'MM'),to_char(hiredate,'yyyy') asc ;
    
    21. 显示在一个月为30天的情况所有员工的日薪金,忽略余数
    select  round(sal/30) from emp;  
    
    22. 找出在任何年份的2月受聘的所有员工
    select * from emp where to_char(hiredate ,'MM')=2 ;
    
    23. 对于每个员工,显示其加入公司的天数
    select ename,round(sysdate-hiredate) emp_date from emp;
    
    24. 以年月日的方式显示所有员工的服务年限
    select ename,to_char(hiredate,'YYYY')||'年'||to_char(hiredate,'MM')||'月'||to_char(hiredate,'DD')||'日'from emp;
     
    
     
  • 相关阅读:
    收藏:详解交换机基础知识
    Linux Used内存到底哪里去了?
    TCP三次握手和四次挥手以及11种状态
    操作系统深度研究(75页PPT)
    命令行版的斗地主你玩过没?
    10大黑客专用的 Linux 操作系统
    (四)Linux命令大全:帮助命令
    (三)Linux命令大全:文件搜索命令
    (二)Linux命令大全:权限管理命令
    (一)Linux命令大全:文件处理命令
  • 原文地址:https://www.cnblogs.com/myjavalife/p/4893015.html
Copyright © 2011-2022 走看看