湘潭大学数据库实验二

文章目录

  • 前言
  • 如何在命令行隐藏自己的口令
  • 创建表格
  • [1. 为上面的三个表补充定义主码、外码(级联删除)。请写出相应的SQL语句并执行。( 提交SQL语句 )](#1. 为上面的三个表补充定义主码、外码(级联删除)。请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [2. 为上面创建的emp表补充定义如下check约束,请写出相应的SQL语句并执行。( 提交SQL语句 )](#2. 为上面创建的emp表补充定义如下check约束,请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [3.公司与湘潭市达成协议,在湘潭市设立一个生产部门,部门编号为:50,部门名称为:PRODUCTION。请写出相应的SQL语句并执行。( 提交SQL语句 )](#3.公司与湘潭市达成协议,在湘潭市设立一个生产部门,部门编号为:50,部门名称为:PRODUCTION。请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [4.2022年5月1日,公司决定聘请你担任PRODUCTION部门的经理(职工编号为'9'+你学号的最后3位数,如你的学号为202001020304,则职工编号为:9304,工资自定,没有佣金),并为你招聘了下列职工,开始创业。请写出相应的SQL语句并执行。( 提交SQL语句 )](#4.2022年5月1日,公司决定聘请你担任PRODUCTION部门的经理(职工编号为'9'+你学号的最后3位数,如你的学号为202001020304,则职工编号为:9304,工资自定,没有佣金),并为你招聘了下列职工,开始创业。请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • 5.为了扩大生产,2022年5月10日,公司将与你同姓的人都招聘到你的部门工作。待聘人员名单在视图"待聘人员"中。
  • [6.DEPT表中的部门人数、部门职工收入总和两列还没有填写。请写出相应的SQL语句并执行。( 提交SQL语句 )](#6.DEPT表中的部门人数、部门职工收入总和两列还没有填写。请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [7.删除20号部门,请写出相应的SQL语句并执行。( 提交SQL语句 )](#7.删除20号部门,请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [8.删除工资低于15000的职工,请写出相应的SQL语句并执行。( 提交SQL语句 )](#8.删除工资低于15000的职工,请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • [9.所有职工的工资增加5000,请写出相应的SQL语句并执行。( 提交SQL语句 )](#9.所有职工的工资增加5000,请写出相应的SQL语句并执行。( 提交SQL语句 ))
  • 下面是出现的错误以及处理方案
  • 假设我第四题第一句代码直接复制的,没有修改,应该怎么处理?

前言

对比了一下,实验二和往年的题目一模一样,下面我需要做的主要是把代码写在下面,以及手动制造两个错误(实验报告需要用)

另外实验指导里面貌似可以直接提交sql语句,是不是这样子提交就完事了?

笔者的建议是,首先复制下面的代码在交作业的网站上面,实验指导里面提交相应的sql语句,然后在自己的sqlplus上面操作,下面的命令,注意先创建表格才能进行操作,记得截图,记得制造一些错误并截图

第二题有三个语句,在提交的时候,放一块儿提交就好

第四题需要修改代码,因为要把自己的学号啥的填上去(另外这个可能作业网站本身有一些限制,需要把五条语句之间的空行删除,才能成功保存)

如何在命令行隐藏自己的口令

sql 复制代码
sqlplus A加自己的学号@172.22.112.234/orcl

按下回车,就可以输入口令,这样子截屏的时候就不会显示自己的口令,比较好

创建表格

先创建表格再输入后面的命令

sql 复制代码
 create table COUNTRIES as select * from univ.COUNTRIES;
 create table DEPT as select * from univ.DEPT;
create table EMP as select * from univ.EMP;

1. 为上面的三个表补充定义主码、外码(级联删除)。请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
alter table countries add primary key(cid);
alter table dept add primary key(deptno);
alter table emp add primary key(empno);
alter table dept add constraint d1 foreign key(CID) references countries on delete cascade;
alter table emp add constraint e1 foreign key(deptno) references dept on delete cascade;

2. 为上面创建的emp表补充定义如下check约束,请写出相应的SQL语句并执行。( 提交SQL语句 )

工资介于5000到100000之间,约束名:chk_emp1

sql 复制代码
alter table emp add constraint e2 check(sal>=5000 and sal<=100000);

雇佣日期大于2002-02-02,约束名:chk_emp2

sql 复制代码
alter table emp add constraint e3 check(hiredate>to_date('2002-02-02','yyyy-mm-dd'));

工作类型的取值只能是:clerk,salesman,analyst,manager,president,约束名:chk_emp3

sql 复制代码
alter table emp add constraint e4 check(job in ('clerk','salesman','analyst','manager','president'));

3.公司与湘潭市达成协议,在湘潭市设立一个生产部门,部门编号为:50,部门名称为:PRODUCTION。请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
insert into dept(deptno,dname,cid,loc) values(50,'production','CN','湘潭市');

4.2022年5月1日,公司决定聘请你担任PRODUCTION部门的经理(职工编号为'9'+你学号的最后3位数,如你的学号为202001020304,则职工编号为:9304,工资自定,没有佣金),并为你招聘了下列职工,开始创业。请写出相应的SQL语句并执行。( 提交SQL语句 )

这个可能作业网站本身有一些限制,需要把五条语句之间的空行删除,才能成功保存

sql 复制代码
insert into emp(empno,ename,job,sal,hiredate,comm,deptno) values(9324,'张三','manager',10000,to_date('2022-05-01','yyyy-mm-dd'),0,50);

insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(9001,'唐僧','clerk',9324,to_date('2022-05-02 00:00:00','yyyy-mm-dd hh24:mi:ss'),34000,0,50);

insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(9002,'孙悟空','clerk',9324,to_date('2022-05-03 00:00:00','yyyy-mm-dd hh24:mi:ss'),50000,0,50);

insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(9003,'猪八戒','clerk',9324,to_date('2022-05-04 00:00:00','yyyy-mm-dd hh24:mi:ss'),20000,0,50);

insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(9004,'沙僧','clerk',9324,to_date('2022-05-06 00:00:00','yyyy-mm-dd hh24:mi:ss'),10000,0,50);

5.为了扩大生产,2022年5月10日,公司将与你同姓的人都招聘到你的部门工作。待聘人员名单在视图"待聘人员"中。

要求:用临时编号作为职工编号,工作类型为"clerk",工资15000。

请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
insert into emp
select 临时编号,姓名,'clerk',9324,to_date('2022-05-10','yyyy-mm-dd'),15000,0,50
from 待聘人员
where 姓名 like '旷%';

6.DEPT表中的部门人数、部门职工收入总和两列还没有填写。请写出相应的SQL语句并执行。( 提交SQL语句 )

说明:部门职工收入总和是职工工资与佣金的总和

sql 复制代码
update dept
set emps = (
 select count(emp.empno)
 from emp
 where dept.deptno=emp.deptno);

update dept
set income = (
 select sum(sal)+sum(coalesce(comm,0))
 from emp
 where dept.deptno=emp.deptno);

7.删除20号部门,请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
delete from emp where deptno=20;
delete from dept where deptno=20;

8.删除工资低于15000的职工,请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
delete from emp where sal<15000;

9.所有职工的工资增加5000,请写出相应的SQL语句并执行。( 提交SQL语句 )

sql 复制代码
update emp set sal = sal+5000;

下面是出现的错误以及处理方案

假设我第四题第一句代码直接复制的,没有修改,应该怎么处理?

首先,可以先把后面的几句代码复制过去

第二步,查询表格里面的名字有哪些,使用下面这条命令

sql 复制代码
select ename from emp;

第三步,删除名字是张三的那一行,注意是单引号,最后需要加分号

sql 复制代码
DELETE FROM EMP WHERE ENAME='张三';

第四步,检查表格,使用第二步的sql语句

另外一个错误我是创建了一个重复的表格,这个确实不是很容易出现错误,到这儿,这个实验就做完了

相关推荐
莫叫石榴姐13 分钟前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
小技与小术1 小时前
数据库表设计范式
数据库·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer1 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体1 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪2 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿2 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员
无敌岩雀2 小时前
MySQL中的索引
数据库·mysql
a_安徒生2 小时前
linux安装TDengine
linux·数据库·tdengine