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

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

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

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

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

Contents

1 用户 std01 把查询 Student 表权限授给用户 std02,std02 执行相应的查询

create user Student02 IDENTIFIED by sxsfyswhc123;
grant connect to Student02;

结果:
User STUDENT02 已创建。Grant 成功。

grant select on Student to Student02;
grant select on Course to Student02;

结果:
Grant 成功。Grant 成功。
用 Student02 用户登录,登录成功。

1.1 查询 std01 用户的全体学生的详细记录

select * from STD_4132.STUDENT;

结果:

1.2 查询 std01 用户的年龄不在 20 至 23 岁之间的学生姓名、系别和年龄

select sname,sdept,sage from STD_4132.student where sage not between 20 and 23;

结果:

1.3 查询 std01 用户的所有姓刘的学生的姓名、学号和性别

select sname,sno,ssex from STD_4132.student where sname like '刘%';

结果:

1.4 查询 std01 用户的名字中第二字为“阳”字的学生的姓名和学号

select sname,sno,ssex from STD_4132.student where sname like '_阳%';

结果;

2 std01 把对 Student 表和 Course 表的全部权限授予用户 std02 ,std02 修改 std01 的数据

Grant all privileges on course to Student02;
Grant all privileges on student to Student02;

结果;
Grant 成功。Grant 成功。

update  STD_4132.STUDENT set SSEX='女' where SNAME='李勇';

结果:1 行已更新。

3 std01 把对表 SC 的查询权限授予所有用户

Grant select on SC to public;

结果:
Grant 成功。

3.1 查询选修了 3 号课程的学生的学号及其成绩,查询结果按分数的降序排列

select sno,grade from STD_4132.SC where cno=3 order by grade desc;

结果:

3.2 查询各个课程号与相应的选课人数

select cno,count(cno) from STD_4132.SC group by cno;

结果;

4 用户 std01 把 Student 表和修改学生学号的权限授给用户 std02

grant update(Sno) on Student to Student02;

结果:
Grant 成功。

5 从用户 std02 把授予出的的权限一一收回

revoke all on Student from Student02;
revoke all on SC from Student02;
revoke all on Course from Student02;

结果:
Revoke 成功。Revoke 成功。Revoke 成功。

5.1 建立部门表 DEPT,要求部门名称 Dname 列值取值唯一,部门编号 Depno 列为主码

Create table DEPT
(
    Deptno char(7)
    constraint PK_dept primary key,
    dname char(20) unique
);

结果:
Table DEPT 已创建。

5.2 建立学生登记表 student,要求学号在 900000 至 999999 之间,年龄<29,,性别只能是’男’或’女’,姓名非空

Create table S
(
    Sno number constraint PK_s check (sno between 900000 and 999999),
    Sname char(20) not null,
    Ssex char(2),
    Sage number,
    Constraint ck_sex check (Ssex in ('男','女')),
    Constraint ck_sage check (Sage<29)
);

结果:
Table S 已创建。

5.3 建立职工表 EMP,要求每个职工的应发工资不得超过 3000 元。应发工资实际上就是实际发工资列 Sal 与扣除项 Deduct 之和

Create table EMP
(
    a1 number,
    Sal number,
    Deduct number,
    constraint PK_s9 check (a1<3000 )
);

结果:
Table EMP 已创建。

6 修改学生成绩数据库的 3 个表的定义,分别为每个表建立主码和外码,并输入数据,验证实体完整性和参照完整性

对 DEPT 表的操作:

alter table DEPT drop primary key;
alter table DEPT add constraint PK_dept primary key (Deptno);

结果:
Table DEPT 已变更。
Table DEPT 已变更。
输入数据:

insert into DEPT values ('1','产品部门');

结果:
1 行已插入。

对 S 表的操作:

alter table Student add constraint FK_Student_S  foreign key (Sno) references Student(Sno) ;

结果:
Table STUDENT 已变更。
输入数据:

insert into S values (200215121,'陈旭','女',20);

结果:
错误报告 –
ORA-02290: 违反检查约束条件 (STD_4132.PK_S)

对 EMP 表的操作:

alter table EMP add constraint PK_EMP primary key (Sal);

结果:
Table EMP 已变更。
输入数据:

insert into EMP values(100,200,300);

结果:
1 行已插入。

7 对上述新建立和修改定义的表,每个表输入 3 条数据,其中 1 条数据符合完整性约束,2 条违反约束条件的,验证和体会 Oracle 完整性

insert into DEPT values ('2','管理部门');

结果:
1 行已插入。

insert into DEPT values ('2','生活部门');

结果:
错误报告 –
ORA-00001: 违反唯一约束条件 (STD_4132.PK_DEPT)

insert into DEPT values ('1','财务处');

错误报告 –
ORA-00001: 违反唯一约束条件 (STD_4132.PK_DEPT)

insert into S values (900005,'赫伦','女',20);

结果:
1 行已插入。

insert into S values (9005,'里伦','女',30);

结果:
错误报告 –
ORA-02290: 违反检查约束条件 (STD_4132.CK_SAGE)

insert into S values (20125,'山大','男',30);

结果:
错误报告 –
ORA-02290: 违反检查约束条件 (STD_4132.CK_SAGE)

insert into EMP values(20,30,1);

结果:
1 行已插入。

insert into EMP values(200,200000,30);

结果:
错误报告 –
ORA-01438: 值大于为此列指定的允许精度

insert into EMP values(200,30,3);

结果:
错误报告 –
ORA-02291: 违反完整约束条件 (STD_4132.SYS_C0013788) – 未找到父项关键字

8 其他

查看表的字段信息

desc 表名;

查看表的所有信息

show create table 表名;

添加主键约束

alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);

添加外键约束

alter table 从表 add constraint 外键(形如:FK从表主表) foreign key 从表(外键字段) references 主表(主键字段);

删除主键约束

alter table 表名 drop primary key;

删除外键约束

alter table 表名 drop foreign key 外键(区分大小写);

0
Posted in Database

Leave a Comment:

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

  1. I seriously love your website.. Great colors
    & theme. Did you develop this web site yourself? Please reply back as
    I’m wanting to create my very own site and would like to learn where you got this from or exactly what the
    theme is called. Thanks!

    0

    回复

    1. 花梓

      hello,
      wordpress + RCG Forest theme
      I change the theme color and delete some parts.
      Thanks.

      0

      回复