NEFU数据库实验题。若有版权问题,版权归NEFU。如果侵犯了版权,请及时联系我。这里仅供学习参考。

实验的设计实在是太棒了,三次实验基本涉及了SQL数据库经常用到的操作。方便同学熟悉SQL操作,准备相关面试环节或工作之用。

数据库SQL的基本操作1:建立表、修改表、删除表、建立索引、删除索引、数据增删改查

数据库SQL的基本操作2:单表查找、多表查找、嵌套查询、视图等

数据库SQL的基本操作3:模糊查询、oracle的安全性和完整性控制

1 建立表、修改表、删除表

1.1 建立基本表

1.1.1 学生表

学生表:Student (Sno, Sname, Ssex, Sdept)其中学号 Sno 主码

create table Student
(
    Sno int primary key,
    Sname varchar(20),
    Ssex  varchar(2),
    Sdept varchar(4)
);

结果:Table STUDENT 已创建。

1.1.2 课程表

课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号 Cno 主码;先行课为外码参照 Course 表中 Cno 字段。

create table Course
(
    Cno int primary key,
    Cname varchar(20),
    Cpno  varchar(4),
    Ccredit int,
    foreign key(Cpno) references Course(Cno)
);

结果:Table COURSE 已创建。

1.1.3 学生选课表

学生选课表:SC(Sno, Cno, Grade)其中学号 Sno、课程号 Cno 为主码;Sno 为外码参照 Student 表中 sno 字段;Cno 为外码参照 Course 表中 cno 字段。

create table SC
(
    Sno int,
    Cno int,
    Grade int,
    primary key(Sno,Cno),
    foreign key(Sno) references Student(Sno),
    foreign key(Cno) references Course(Cno)
);

结果:Table SC 已创建。

1.2 修改基本表

1.2.1 在 Student 表中加入属性

在 Student 表中加入属性 Sage(number 型)。

alter table Student add Sage number(6);

结果:Table STUDENT 已变更。


可以看出 Student 表中增加了一列为 Sage。

1.2.2 修改某个表的属性的数据类型

alter table Student modify Sage  varchar(5);

结果:Table STUDENT 已变更。

可见 Sage 的数据类型已经变为 varchar(n)型。

1.3 删除基本表

1.3.1 删除基本表 Student

drop table Student cascade constraints;

结果:Table STUDENT 已删除。

1.3.2 删除基本表 SC

drop table SC cascade constraints;

结果:Table SC 已删除。

表中仅有 Course 表,Student 表和 SC 表已经被删除。

2 建立索引、删除索引

2.1 建立索引

2.1.1 在 Student 表上建立关于 Sname 的唯一索引 stusnam

create unique index stusnam on Student(Sname);

结果:Index STUSNAM 已创建。

2.1.2 在 SC 表上建立关于 Sno 升序、Cno 降序的唯一索引 i_sc

create unique index i_sc on SC(Sno ASC,Cno DESC);

结果:Index I_SC 已创建。

2.2 删除索引

2.2.1 删除 Student 表上的索引 stusnam

drop index stusnam;

结果:Index STUSNAM 已删除。

2.2.2 删除 Course 表上的索引 i_sc

drop index i_sc;

结果:Index I_SC 已删除。

3 数据增删改查

3.1 增:插入数据

3.1.1 向 Student 表中插入数据

insert into student values  (200215121,'力勇','男','CS',20);
insert into student values  (200215122,'刘晨','女','CS',19);
insert into student values  (200215123,'王敏','女','MA',20);
insert into student values  (200215125,'张立','男','IS',19);

结果:
1 行已插入。
1 行已插入。
1 行已插入。
1 行已插入。

3.1.2 向 Course 表中插入数据

insert into Course values  (1,'数据库','5',4);
insert into Course values  (2,'数学',null,2);
insert into Course values  (3,'信息系统','1',4);
insert into Course values  (4,'操作系统',   '6',3);
insert into Course values  (5,'数据结构',   '7',4);
insert into Course values  (6,'数据处理',   null,2);
insert into Course values  (7,'PASCAL语言','6',4);

结果:
1 行已插入。
1 行已插入。
1 行已插入。
1 行已插入。
1 行已插入。
1 行已插入。
1 行已插入。

3.1.3 向 SC 表中插入数据

insert into SC values (200215121,1,92);
insert into SC values (200215121,2,85);
insert into SC values (200215121,3,88);
insert into SC values (200215122,4,90);
insert into SC values (200215122,3,80);

3.2 改:修改数据

3.2.1 修改 SC 表中学号为 200215121 的同学的成绩为 90

update SC set Grade=90 where Sno=200215121;

结果:
3 行已更新。

3.3 删:删除数据

3.3.1 删除 SC 表中学号为 200215121 的学生数据

delete from SC where Sno=200215121;

3 行已删除。

4 实战

现有三个表:
雇员表(emp)
记录了每个雇员的基本信息
NO 字段 类型 描述
1 empno Number(4) 雇员编号
2 ename Varchar2(10) 雇员姓名
3 job Varchar2(9) 工作职位
4 mgr Number(4) 雇员的领导(经理)编号
5 hierdate date 入职日期
6 sal Number(7,2) 月薪/工资
7 comm Number(7,2) 奖金
8 deptno Number(2) 雇员所属部门的编号
部门表(dept)
记录了每个部门的基本信息
NO 字段 类型 描述
1 deptno Number(2) 部门编号(唯一)
2 dname Varchar2(14) 部门名称
3 loc Varchar2(13) 地址

工资等级表 (salgrade)
一个公司的工资等级制,用来表示同一等级的工资下限及上限
NO 字段 类型 描述
1 Grade number 等级名称
2 Losal number 此等级的最低工资
3 hisal number 此等级的最高工资

4.1 建立基本表

create table emp
(
    empno number(4),
    ename varchar(10),
    job varchar(9),
    mgr number(4),
    hierdate date,
    sal number(7,2),
    comm number(7,2),
    deptno number(2)
);
create table dept
(
    deptno number(2) primary key,
    dname varchar(14),
    loc   varchar(13)
);
create table salgrade
(
    Grade number,
    Losal number,
    hisal number
);

结果:
Table EMP 已创建。
Table DEPT 已创建。
Table SALGRADE 已创建。



4.2 修改基本表

为 emp 表增加新列 adress;修改 dept 表中的 dname 列的宽度,并加入默认值;

alter table emp add adress char(20);

结果:
Table EMP 已变更。

alter table dept modify dname varchar(20);

结果:Table DEPT 已变更。

4.3 删除基本表

删除基本表 emp;删除基本表 salgrade

drop table emp cascade constraints;

结果:Table EMP 已删除。

drop table salgrade cascade constraints;

结果:Table SALGRADE 已删除。

可见,表 emp 和表 salgrade 已经被删除。

4.4 索引操作

建立索引:在 emp 表上建立关于 ename 的唯一索引 emp_sname;在 dept 表上建立关于 deptno 升序、dname 降序的唯一索引 e_de

create unique index emp_sname on emp(ename);

结果:Index EMP_SNAME 已创建。

create unique index e_de on dept(deptno ASC,dname DESC);

结果:Index E_DE 已创建。

删除索引:删除 emp 表上的索引 emp_sname;删除 dept 表上的索引 e_de

drop index emp_sname;

结果:Index EMP_SNAME 已删除。

drop index e_de;

结果:Index E_DE 已删除。

4.5 数据更新

4.5.1 向 dept 表中插入数据;向 emp 表中插入数据;

插入数据:

insert into emp values (5,'叶良辰','程序员',7,to_date('2017-11-1','YYYY-MM-DD'),12345.55,500.00,1);

结果:1 行已插入。

insert into dept values (1,'生活部','NEFU');

结果:1 行已插入。

4.5.2 修改数据

update dept set dname='文学部' where deptno=1;

结果:1 行已更新。

4.5.3 删除数据

delete from dept where deptno=1;

结果:1 行已删除。

5 其他

5.1 一个列上有外码约束如何实现

例如,建立表 SC 的外键约束 Sno

alter table SC
  add constraint fk_Sno
   foreign key (Sno) references S(Sno)
go

5.2 删除表时,表中某一列是另外一个表的外键,此表如何删除

答:级联删除
例如,删除 Student 表。

drop table Student cascade constraints;

5.3 对表中某一列的数据类型进行修改时,要修改的列是否必须为空列

答:是。因为数据类型改变了。如果要修改的列不为空,则数据类型不能改变。

0
Posted in Database

Leave a Comment:

电子邮件地址不会被公开。

  1. I just couldn’t depart your site prior to suggesting that I extremely enjoyed the standard info a person provide for your visitors? Is going to be back often in order to check up on new posts

    0

    回复