Oracle 0305

Ref:
http://www.w3school.com.cn/sql/sql_dates.asp
https://blog.csdn.net/qq_20989105/article/details/76190566
Build:

sqlplus Jsj202/Jsj123456@orcl

CREATE TABLE DEPT(DEPTNO INT PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13) );

Insert into DEPT values(10,'ACCOUNTING','LONDON');
Insert into DEPT values(20,'RESEARCH','PERSON');
Insert into DEPT values(30,'SALES','LIVERPOOL');

----------------------------------

CREATE TABLE EMP(EMPNO NUMBER(4) PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9) , MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2),   DEPTNO NUMBER(2));

//ALTER TABLE EMP ADD HIREDATE date;
//DROP TABLE EMP;
/*?? ALTER TABLE EMP ALTER COLUMN HIREDATE VARCHAR2;*/

Insert into EMP VALUES(7698,'BLAKE','MANAGER',7839,TO_DATE('01-05-95','DD-MM-YY'),2500,null,30);
Insert into EMP VALUES(7782,'CLARK','MANAGER',7839,TO_DATE('09-06-92','DD-MM-YY'),2750,NULL,10);
Insert into EMP VALUES(7839,'KING','PRESIDENT',NULL,TO_DATE('18-11-88','DD-MM-YY'),8750,NULL,20);
Insert into EMP VALUES(7369,'SMITH','CLERK',7902,TO_DATE('18-12-99','DD-MM-YY'),1115,640	,20);

--------------------------------------

CREATE TABLE SALGRADE(GRADE NUMBER,LOSAL NUMBER,HISAL NUMBER);
INSERT INTO SALGRADE VALUES(1,700,1200);
INSERT INTO SALGRADE VALUES(2,1201,1400);
INSERT INTO SALGRADE VALUES(3,1401,2000);
INSERT INTO SALGRADE VALUES(4,2001,3000);
INSERT INTO SALGRADE VALUES(5,3001,9999);

Select:
用SQL语句实现如下查询:

  1. 显示部门号为10 的部门名、员工名和工资。
Select DNAME,ENAME,SAL From DEPT,EMP Where DEPT.DEPTNO=10  AND DEPT.DEPTNO=EMP.DEPTNO;
  1. 显示员工BLAKE 的上级领导的姓名。
SELECT A.ENAME FROM EMP A, EMP B WHERE B.ENAME='BLAKE' AND B.MGR=A.EMPNO;
  1. 显示与scott同一部门的所有员工。
    SCOOT??
SELECT A.EMPNO,A.ENAME,A.JOB,A.MGR,A.HIREDATE,A.SAL,A.COMM,A.DEPTNO FROM EMP A, EMP B WHERE B.ENAME='SCOTT' AND B.DEPTNO=A.DEPTNO;
SELECT A.EMPNO,A.ENAME,A.JOB,A.MGR,A.HIREDATE,A.SAL,A.COMM,A.DEPTNO FROM EMP A, EMP B WHERE B.ENAME='SMITH' AND B.DEPTNO=A.DEPTNO;
  1. 显示工资比部门 30 的所有员工的工资高的员工的姓名、工资和部门号。
SELECT A.ENAME,A.SAL,A.DEPTNO FROM EMP A WHERE NOT EXISTS(SELECT B.SAL FROM EMP B WHERE  B.DEPTNO=30 AND B.SAL>=A.SAL);
  1. 查询与smith 部门和岗位完全相同的所有雇员。
SELECT A.ENAME FROM EMP A,EMP B WHERE B.ENAME='SMITH' AND A.JOB=B.JOB AND A.DEPTNO=B.DEPTNO;
  1. 显示高于部门平均工资的员工的信息。
SELECT * FROM EMP A WHERE A.SAL > (SELECT AVG(SAL) FROM EMP B);
  1. 查询部门工资总和高于员工工资总和1/3的部门名及工资总和。
? SELECT * FROM EMP WHERE EMP.SAL>(SELECT SUM(SAL) FROM EMP B)*(1/3);
  1. 统计各部门下工资大于2000的雇员的平均工资。
? SELECT * FROM EMP EXCEPT EMP.SAL<=2000 ;GROUP BY DEPTNO;
  1. 算出每个部门、每个职位的工资总和、奖金总和,按部门编号升序、职位工资总和降序排列。
?
  1. 向emp表中插入一条记录,员工号为1357,员工名字为oracle,工资为2050元, 部门号为20,入职日期为2018年5月10日。
Insert into EMP VALUES(1357,'oracle',NULL,NULL,TO_DATE('10-05-18','DD-MM-YY'),2050,NULL,20);

熟悉Oracle SQL*PLUS,并建立示例数据库

请选择“平面设计”系统
sqlplus user/password@orcl
一、 基本实验内容:
(一). 在自己用户下面创建DEPT、EMP、SALGRADE三个表对象,要求使用SQL语句创建,并将SQL语句用文本保存。其中,
DEPT是部门信息表,包括:部门编号、部门名称、部门地址三个属性,即DEPT(DEPTNO,DNAME,LOC)。
EMP是员工信息表,包括:员工编号、员工姓名、职位、上级领导、雇用时间、薪金、佣金、所属部门编号八个属性,即EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)。
SALGRADE是工资等级表,包括:工资等级、最低工资、最高工资三个属性,即SALGRADE(GRADE,LOSAL,HISAL)。
DEPT:
DEPTNO PK
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

DEPTNO DNAME LOC
10 ACCOUNTING LONDON
20 RESEARCH PERSTON
30 SALES LIVERPOOL

EMP:
EMPNO PK NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7698 BLAKE MANAGER 7839 01-MAY-95 2500 30
7782 CLARK MANAGER 7839 09-JUN-92 2750 10
7839 KING PRESIDENT 18-NOV-88 8750 20
7369 SMITH CLERK 7902 18-DEC-99 1115 640 20

SALGRADE(GRADE,LOSAL,HISAL)。
GRADE NUMBER
LOSAL NUMBER
HISAL NUMBER

GRADE LOSAL HISAL
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999

(要求定义各表的完整性约束。)

(二)用SQL语句实现如下查询:

  1. 显示部门号为10 的部门名、员工名和工资。
  2. 显示员工BLAKE 的上级领导的姓名。
  3. 显示与scott同一部门的所有员工。
  4. 显示工资比部门 30 的所有员工的工资高的员工的姓名、工资和部门号。
  5. 查询与smith 部门和岗位完全相同的所有雇员。
  6. 显示高于部门平均工资的员工的信息。
  7. 查询部门工资总和高于员工工资总和1/3的部门名及工资总和。
  8. 统计各部门下工资大于2000的雇员的平均工资。
  9. 算出每个部门、每个职位的工资总和、奖金总和,按部门编号升序、职位工资总和降序排列。
  10. 向emp表中插入一条记录,员工号为1357,员工名字为oracle,工资为2050元, 部门号为20,入职日期为2018年5月10日。
    (三)、体会数据库的完整性约束(实体、参照、用户自定义约束)。
    二、 创建表空间
    查阅文献,学习create tablespace命令。
    创建表空间以及使用,示例如下:

三、

Create table t as select * from all_objects;
Create index idx_object_id on t(object_id);
Set autotrace on
Set linesize 1000
Set timing on
Select object_name from t where object_id=29;
Select object_name from t where object_id=29;执行两遍,对比执行时间以及统计信息变化的区别,前后两次执行差异非常大,分析原因。

你可能感兴趣的:(Others)