第11章:数据操作和事务控制

--------------------练习1----------------------------------------------
1.向部门表新增一个部门,部门编号为50,部门名称为HR,工作地点为SY。
insert into dept(deptno,dname,loc)
values (50,‘HR’,‘SY’)
select *from dept
2.向部门表新增一个部门,部门编号为60,部门名称为MARKET。
insert into dept(deptno,dname)
values (60,‘MARKET’)

--------------------练习2----------------------------------------------
1.向员工表中新增一个员工,员工编号为8888,姓名为BOB,岗位为CLERK,经理为号7788,入职日期为1985-03-03,薪资3000,奖金和部门为空。
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (‘8888’,‘BOB’,‘CLERK’,‘7788’,to_date(‘1985-03-03’,‘yyyy-mm-dd’),‘3000’,’’,’’)
select *from emp
--------------------练习3----------------------------------------------
1.使用CREATE TABLE emp_back as
SELECT * FROM EMP WHERE 1=0,创建emp_back表,拷贝下来即可。

    create table emp_back as
    select *from emp where 1=0-------------------创建emp_back表,把emp表的列标题(只是拿表的结构)拷贝下来了。
    
    select *from emp_back

2.把emp表中入职日期大于1982年1月1日之前的员工信息复制到emp_back表中。
insert into emp_back
select *from emp where hiredate<to_date(‘1982-01-01’,‘yyyy-mm-dd’)

--------------------练习4----------------------------------------------
1.修改部门20的员工信息,把82年之后入职的员工入职日期向后调整10天
update emp
set hiredate = hiredate +10
where deptno = 20 and hiredate > to_date(‘1982-12-31’, ‘yyyy-mm-dd’);
select * from emp;

2.修改奖金为null的员工,奖金设置为0
update emp
set comm=0
where comm is null
select *from emp

3.修改工作地点在NEW YORK或CHICAGO的员工工资,工资增加500
update emp
set sal=sal+500
where ename in(select e.ename
from emp e,dept d
where e.deptno=d.deptno and d.loc=‘NEW YORK’ or d.loc=‘CHICAGO’
)
select *from emp
select *from dept
--------------------练习6----------------------------------------------
1.删除经理编号为7566的员工记录
delete from emp where mgr=7566
select *from emp
2.删除工作在NEW YORK的员工记录
----------EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False--------
EXISTS 指定一个子查询,检测 行 的存在。
delete from emp e
where exists (select d.loc
from dept d
where e.deptno=d.deptno and d.loc=‘NEW YORK’
)
select *from dept
select *from emp
3.删除工资大于所在部门平均工资的员工记录
--------------------课后作业----------------------------------------------
1.使用如下语句,创建学生表student和班级表class
create table student ( --学生表
xh char(4),–学号
xm varchar2(10),–姓名
sex char(2),–性别
birthday date,–出生日期
sal number(7,2), --奖学金
studentcid number(2) --学生班级号
)

Create table class ( --班级表
classid number(2), --班级编号
cname varchar2(20),–班级名称
ccount number(3) --班级人数
)

--------------------课后作业----------------------------------------------
2.基于上述学生表和班级表,完成如下问题
(1)添加三个班级信息为:1,JAVA1班,null
2,JAVA2班,null
3,JAVA3班,null
select *from class
insert into class
values(1,‘JAVA1班’,null)
insert into class
values(2,‘JAVA2班’,null)
insert into class
values(3,‘JAVA3班’,null)

(2)添加学生信息如下:‘A001’,‘张三’,‘男’,‘01-5月-05’,100,1
insert into student
values(‘A001’,‘张三’,‘男’,to_date(‘2001-05-05’,‘yyyy-mm-dd’),100,1)

select *from student

(3)添加学生信息如下:‘A002’,‘MIKE’,‘男’,‘1905-05-06’,10
insert into student
values(‘A002’,‘MIKE’,‘男’,to_date(‘1905-05-06’,‘yyyy-mm-dd’),10,’’)

(4)插入部分学生信息: ‘A003’,‘JOHN’,‘女’
insert into student
values(‘A003’,‘JOHN’,‘女’,’’,’’,’’)
(5)将A001学生性别修改为’女‘
update student
set sex=‘女’
where xh=‘A001’
(6)将A001学生信息修改如下:性别为男,生日设置为1980-04-01
update student
set sex=‘男’ , birthday=to_date(‘1980-04-01’,‘yyyy-mm-dd’)---------注意多条语句set,他们之间用逗号隔开
where xh=‘A001’
(7)将生日为空的学生班级修改为Java3班
update student
set studentcid=3
where birthday is null
(8)请使用一条SQL语句,使用子查询,更新班级表中每个班级的人数字段

update class c
set ccount=(select count(xh)from student where studentcid=c.classid)

select *from class

--------------------课后作业----------------------------------------------
3.使用如下语句,建立以下表
CREATE TABLE copy_emp (
empno number(4),
ename varchar2(20),
hiredate date default sysdate ,
deptno number(2),
sal number(8,2))
select *from copy_emp
--------------------课后作业----------------------------------------------
4.在第三题表的基础上,完成下列问题
(1)在表copy_emp中插入数据,要求sal字段插入空值,部门号50,参加工作时间为2000年1月1日,其他字段随意
insert into copy_emp
values(1,‘mary’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),50,’’ )
(2)在表copy_emp中插入数据,要求把emp表中部门号为10号部门的员工信息插入
-----------------插入多行数据:不必书写values子句INSERT子句和数据类型必须和子查询中列的数量和类型相匹配中列的数量---------------------------------------------------------
insert into copy_emp
select empno,ename,hiredate,deptno,sal from emp where deptno=10
select from emp
(3)修改copy_emp表中数据,要求10号部门所有员工涨20%的工资
update copy_emp
set sal=sal
1.2
where deptno=10

select *from copy_emp

(4)修改copy_emp表中sal为空的记录,工资修改为平均工资
update copy_emp
set sal=(select avg(sal)avg_sal from copy_emp)
where sal is null
(5)把工资为平均工资的员工,工资修改为空
update copy_emp
set sal=’’
where sal in(select avg(sal)avg_sal from copy_emp)
(7)执行commit,窗口2中再次查看以上信息
select *from copy_emp
(8)删除工资为空的员工信息
delete from copy_emp
where sal is null
(9)执行rollback

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值