03 SQL查询数据 实验报告                                          

                                                                   广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室418B室         2018年05月 17 日

学院

计算机科学与教育软件

年级、专业、班

网络***

姓名

卟咚君

学号

1606100***

实验课程名称

数据库原理实验

成绩

实验项目名称

SQL查询数据

指导老师

***

                 

实验目的

插入、删除、修改是数据库中更新数据的基本方法,对数据库进行数据更新操作必须满足数据的完整性

要求。通过本次实验,掌握数据库中插入数据、修改数据、删除数据的基本语法,理解和掌握完整性约

束条件的作用和使用方法。

实验要求

熟悉实验室实验环境,阅读实验预备知识,掌握本实验内容涉及知识点的基本用法,了解实验中故障排

除的基本方法。实验中根据实验步骤进行,根据步骤要求撰写实验报告。

实验环境

Oracle 10g,windows 2003;

实验内容和步骤

1.列出Teacher表的所有约束,并说明每个约束的具体含义及其对表列取值的影响;

select table_name,constraint_name,constraint_type from user_constraints where table_name like 'TEACHER';

约束条件:

table_name constraint_name constraint_type

TEACHER  FK_TEACHER_TSEX    C

TEACHER  SYS_C0011387  C

TEACHER  SYS_C0011388  C

TEACHER  SYS_C0011389  C

TEACHER  SYS_C0011390  C

TEACHER  SYS_C0011391  C

TEACHER  PK_TEACHER  P

TEACHER  FK_TEACHER_BELONGTO_DEPARTME    R

C:check on a table

P:primary key

R:referential AKA foreign key

2.书写SQL语句,在Teacher表中插入2条元组,元组内容任意设置,要求能取空值的列均设置为空(提示

:如果插入失败,则查看是否满足基本表的约束条件);

insert into teacher(tno, tname, tsex, tsalary, tbirthday, dno) values('t010', '刘小备', '男', null, To_date('7-7月-1977', 'DD-mon-yyyy'), 'd001');

insert into teacher(tno, tname, tsex, tsalary, tbirthday, dno) values('t011', '曹小操', '男',  null, To_date('7-7月-1977', 'DD-mon-yyyy'), 'd001');

3.利用“create table teacher2 as select * from teacher”语句创建表teacher2,并列出Teacher2表的所有约束,比较Teacher2表与Teacher表的约束差异;

create table teacher2 as select * from teacher;

  1. 任取teacher表中的一条元组,把这条元组分别插入到teacher2和Teacher表中,比较两次插入操作的运行结果并分析原因(要求插入失败时必须指出违反了哪类完整性约束条件);

insert into teacher(tno, tname, tsex,  tsalary, tbirthday, dno) values('t002', '李四', '女', 3600, To_date('21-10月-1979', 'DD-mon-yyyy'), 'd001');

--插入teacher表时会失败,违反了实体完整性(主码取唯一值)

nsert into teacher2(tno, tname, tsex,  tsalary, tbirthday, dno) values('t002', '李四', '女', 3600, To_date('21-10月-1979', 'DD-mon-yyyy'), 'd001');

5.使用带子查询的插入语句把teacher表中的所有男教师插入到teacher2表中;

insert into teacher2(tno, tname, tsex,  tsalary, tbirthday, dno)select tno, tname, tsex,  tsalary, tbirthday, dno from teacher where tsex='男' ;

6.为表Teacher添加check约束,使性别的取值只能为“男”或者“女”;

alter table teacher add constraint fk_teacher_tsex check(tsex in ('男','女') );

7.删除teacher2表中工资等于6000的教师信息;

delete teacher2 where tno in(select tno from teacher2 where tsalary=6000);

8.删除teacher2表中“计算机科学系”的所有教师;

delete teacher2 where tno in(select teacher2.tno from teacher2, department where teacher2.dno=department.dno and department.dname like '计算机科学系');

select *from department;

9.删除teacher2表中的所有教师;

delete teacher2;

10.修改teacher2表,使列tno为主码,主码约束名字为PK_teacher2;

alter table teacher2 add constraint PK_teacher2 primary key(tno);

11.为teacher2表添加唯一约束,使tname的取值不能重复;

alter table teacher2 add constraint un_teacher2_tname unique(tname);

12.修改teacher2表,使列dno成为外码,引用department表的主码dno,当删除department表中的元组时,级联删除Teacher2表中的元组(提示:删除并重新创建外码约束,使用ON DELETE CASCADE选项);

alter table teacher2 add constraint fk_teacher2_to_department foreign key (dno)references department (dno) on delete cascade;

13.在department表中插入一个新系,系号为“xyz”,在Teacher2表中为该新系添加两个教师信息;

insert into department(dno,dname) values('xyz', '网络安全');

insert into teacher2(tno, tname, tsex, tsalary, tbirthday, dno) values('t012', '张小飞', '男', 3000, To_date('7-7月-1977', 'DD-mon-yyyy'), 'xyz');

insert into teacher2(tno, tname, tsex,  tsalary, tbirthday, dno) values('t013', '关小羽', '男', 3600, To_date('21-10月-1979', 'DD-mon-yyyy'), 'xyz');

14.分别写出删除department表中系号为d001和xyz的记录的SQL语句并执行,比较并分析执行结果(提示:在Teacher表和Teacher2表中的外码定义是不同的);

delete department where dno='d001';

--删除department表中系号为d001会报错,违反完整约束条件

delete department where dno='xyz';

15.在tm中插入一条元组,只设置tno、pno的值;

insert into tm(tno, pno) values('t010', 'p0001');

16.给teacher表中的所有教师的工资增加100;

update teacher set tsalary= tsalary+100;

17.给teacher表中的“计算机科学系”教师的工资增加100;

update teacher set tsalary=tsalary+100 where tno in(select teacher.tno from department,teacher where teacher.dno=department.dno and department.dname like '计算机科学系');

18.创建两个视图VT、VT2,两个视图均为包含所有teacher表的男教师的信息,但视图VT2的定义带有with check option选项,设置一条女教师信息记录,指出通过哪个视图可以成功插入记录,并说明with check option选项的作用;

create view VT as select *from teacher where tsex='男';

create view VT2 as select *from teacher where tsex='男' with check option;

insert into VT2(tno,tname,tsex,tsalary,tbirthday,dno) values('t014','貂小蝉','男',3000,To_date('17-10月-1985', 'DD-mon-yyyy'), 'd001');

--在定义视图的时候加上with check option 子句,这样在视图上插入,删除,修改数据时,RDBMS会检查视图定义的条件,若不满足条件则拒绝执行该操作。

实验总结

总结实验过程中涉及到的知识点、实验过程中遇到的问题及解决方法。

通过本次实验,掌握数据库中插入数据、修改数据、删除数据的基本语法,理解和掌握完整性约束条件的作用和使用方法。在select table_name,constraint_name,constraint_type from user_constraints where table_name like '表名称' 使用语句进行查询的时候,需要注意的是,表名称需要英文大写的字符串,查询的结果会出现的一些约束条件的缩写,其他的比如not null,not quite语句的约束条件不会出现,通过sqldevelpor的查询用户中的表的约束条件时可以很明显的查询出来。

在创建视图的时候,如果创建的时候带有with check option的选项,可以通过对视图的修改来修改基本表的信息。

03 SQL查询数据 实验报告相关推荐

  1. 数据库实验三 SQL查询数据

    实验三 SQL查询数据 实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图书的数量无限制,并且 ...

  2. 实验三 SQL查询数据

    SQL查询数据 一.实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 二.实验原理 基于数据库系统概论,熟悉实验环境,熟悉SQL查询数据等本次实验的基 ...

  3. sql 查询手动创建的表_学习SQL:使用SQL查询手动创建报告

    sql 查询手动创建的表 In the previous two articles, we've practiced SQL queries and went through a few more e ...

  4. c语言飞机票实验报告格式,c语言航班信息查询系统实验报告

    <c语言航班信息查询系统实验报告>由会员分享,可在线阅读,更多相关<c语言航班信息查询系统实验报告(21页珍藏版)>请在人人文库网上搜索. 1.希昌丸會软件学院大作业任务书题目 ...

  5. c语言课设航班信息管理软件管理系统,c语言航班信息查询系统实验报告.doc

    c语言航班信息查询系统实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  6. c语言程序设计航空查询系统,c语言航班信息查询系统实验报告.doc

    c语言航班信息查询系统实验报告 PAGE 13 - 软件学院大作业任务书 题 目:航班信息查询系统 专 业: 班 级: 姓 名: 学 号: 完成人数: 起讫日期: 任课教师: 职称: 讲师 部分管主任 ...

  7. SQL查询数据并插入新表

    SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename--如果导入数据并生成表 select * into 表 from ...

  8. 大数据实验报告【全集】

    所用教材↑,配套PPT和厦门大学林子雨配套MOOC内容和书里的内容差不多. [意味着课上不好好听,课下你还能看教科书补(╹ڡ╹ )]建议先实验再听课或看书. 若对你有帮助的话,记得点赞.关注我哦!实验 ...

  9. pythonpandas用sql查询数据表_pandas从数据库读取数据

    因为本周有一个是需要使用pandos做一个数据分析的需求,所以在这里做一下记录. Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构, 这里我们主要介绍Pandas如何读 ...

最新文章

  1. 激光打标软件_走向工业自动化生产之路——激光飞行打标
  2. 超图桌面开发VC++ 入门程序
  3. java中super()_Java 泛型中 extends 和 super 的区别是什么?
  4. TreeView Checkbox选中
  5. 声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)
  6. 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
  7. 国科大高级人工智能-总结
  8. 在Ubuntu中搭建.NET开发环境
  9. UPSNet论文笔记
  10. 全向移动机器人参数校准方法思路
  11. 守护你一生-守护线程(Java)
  12. junit4同一时候測试多个測试类
  13. jQuery 实现点击页面其他地方隐藏菜单
  14. Navicat数据传输
  15. 国际短信平台的收费标准是什么?
  16. 软件系统 - 网址大全
  17. 目标检测算法之AAAI2019 Oral论文GHM Loss
  18. 第一课.极大似然估计与有偏性无偏性
  19. 实验:使用SSMS创建并管理数据库及其基本表
  20. DelayQueue,网吧记时

热门文章

  1. 为WPF的Grid添加边框线
  2. 51单片机实时时钟显示
  3. 高速场景下自动驾驶车辆定位方法综述
  4. 华为mate40发布会哪里看
  5. C语言——switch....case函数用法
  6. HTML怎么设置页面上下间距,html上下间距怎么调
  7. 四个很短的故事,受用一生
  8. 百度Apollo7.0中的路由段是什么
  9. java初级面试题整理汇总-附答案
  10. 【Android开发】常见的数学函数