【sql语句】实验一熟悉Oracle__SQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40307434/article/details/84311505

1把C2课程的任课教师改名为“ZHU”。

update c
set teacher='ZHU'
where c#='C2';

2.用Show命令显示当前用户(scott/tiger)。

show user

3.练习SQL命令:对Oracle数据库基本表EMP和DEPT操作
1)检索EMP中所有的记录。

select *from emp;

2)列出工资在1000到2000之间的所有员工的ENAME,DEPTNO,SAL。

select ename,deptno,sal
from emp
where sal between 1000 and 2000;

3)显示DEPT表中的部门号和部门名称,并按部门名称排序。

select deptno,dname
from dept
order by dname asc;

4)显示所有不同的工作类型。

select distinct job from emp;

5)列出部门号在10到20之间的所有员工,并按名字的字母排序。

select ename,deptno
from emp
where deptno between 10 and 20
order by ename;

1) 列出部门号是20,工作是职员的员工。

select *from emp
where deptno=20 and job='clerk';

2) 显示名字中包含TH和LL的员工名字。

select ename from emp
where ename like '%TH%' or ename like '%LL%';

3) 显示所有员工的名字(Ename)和报酬(Remuneration)。

select ename,sal from emp;

4) 显示在1983年中雇佣的员工。

select ename ,hiredate from emp
where to_char(hiredate,'yyyy') ='1983';

10)查询每个部门的平均工资。

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

11)查询出每个部门中工资最高的职工。

//自己写法
    select deptno,ename,sal
    from emp x
    where sal=(
    	select max(sal) 
    	from emp y
    	where x.deptno=y.deptno
    );


//网上看上去很厉害的做法
select deptno, ename, sal      
from emp e1     
where      
   (  
    select count(1)     
    from emp e2     
    where e2.deptno=e1.deptno and e2.sal>=e1.sal  
   ) <=3 /*这里的数值表示你想取前几名*/  
order by deptno, sal desc;  

12)查询出每个部门比平均工资高的职工人数。

select x.deptno,count(*) 
from emp x,(select deptno,avg(sal) avgsal from emp group by deptno) y
where x.deptno=y.deptno and x.sal>y.avgsal
group by x.deptno
order by x.deptno;

4.生成一个数据表PROJECTS,其字段定义如下,其中PROJID是主键并且要求P_END_DATE不能比P_START_DATE早。
字段名称 数据类型 长度
PROJID NUMBER 4
P_DESC VARCHAR2 20
P_START_DATE DATE
P_END_DATE DATE
BUDGET_AMOUNT NUMBER 7,2
MAX_NO_STAFF NUMBER 2

create table projects(
	projid number(4),
	p_desc varchar2(20),
	p_start_date date,
	p_end_date date,
	budget_amount number(7,2),
	max_no_staff number(2),
	primary key(projid),
	check (p_start_date<p_end_date)
);

5.生成一个数据表ASSIGNMENTS,其字段定义如下,其中PROJID是外键引自PROJECTS数据表,EMPNO是数据表EMP的外键,并且要求PROJID和EMPNO不能为NULL。
字段名称 数据类型 长度
PROJID NUMBER 4
EMPNO NUMBER 4
A_START_DATE DATE
A_END_DATE DATE
BILL_RATE NUMBER 4,2
ASSIGN_TYPE VARCHAR2 2

create table assignments(
	projid number(4) not null,
	empno number(4) not null,
	a_start_date date,
	a_end_date date,
	bill_rate number(4,2),
	assign_type varchar2(2),
	foreign key (projid) references projects(projid),
	foreign key(empno) references emp(empno)
);

6.用DESCRIBE命令查看4和5题定义的字段。

desc assignments;
describe assignments;

7.给4题中的PROJECTS数据表增加一个COMMENTS字段,其类型为LONG。给5题中的ASSIGNMENTS数据表增加一个HOURS字段,其类型为NUMBER。

alter table projects
add comments long;
alter table assignments
add hours number;

8.在PROJECTS数据库表中增加下列记录:
PROJID 1 2
P_DESC WRITE C030 COURSE PROOF READ NOTES
P_START_DATE 02-JAN-88 01-JAN-89
P_END_DATE 07-JAN-88 10-JAN-89
BUDGET_AMOUNT 500 600
MAX_NO_STAFF 1 1
COMMENTS BR CREATIVE YOUR CHOICE

insert into projects
(projid,p_desc,p_start_date,p_end_date,budget_amount,max_no_staff,comments)
values(1,'WRITE C030 COURSE','02-1月-88','07-1月-88',500,1,'BR CREATIVE');
insert into projects
values(2,'PROOF READ NOTES','01-1月-89','10-1月-89',600,1,'YOUR CHOICE');

9.在ASSIGNMENTS数据库表中增加下列记录:

PROJID	1	1	2
EMPNO	7369	7902	7844
A_START_DATE	01-JAN-88	04-JAN-88	01-JAN-89
A_END_DATE	03-JAN-88	07-JAN-88	10-JAN-89
BILL_RATE	50.00	55.00	45.50
ASSIGN_TYPE	WR	WR	PF
HOURS	15	20	30
insert into assignments
values(1,7369,'01-1月-88','03-1月-88',50.00,'WR',15);
insert into assignments
values(1,7902,'04-1月-88','03-1月-88',55.00,'WR',20);
insert into assignments
values(1,7844,'01-1月-89','10-1月-89',45.50,'PF',30);

10.把ASSIGMENTS表中ASSIGNMENT TYPE的WR改为WT,其他的值不变。

update assignments
set assign_type='WT'
where assign_type='WR';

11.在PROJECTS 和ASSIGNMENTS插入更多的记录。

insert into projects
values(33,'WELL DOWN','01-1月-99','10-1月-99',600,1,'GOOD JOB');

12.删除自己随意插入的记录。

delete from projects
where projid=33;

猜你喜欢

转载自blog.csdn.net/qq_40307434/article/details/84311505