实验三 嵌套查询和视图操作

实验目的:

1.  通过本实验能够熟练应用sql语言使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

2.  掌握视图的定义、查询、修改。

实验要求:

1. 在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写好相应的代码。

2. 认真填写实验报告,记录所有实验用例。

实验内容:

(一)       嵌套查询

1.求选修了’MA’的学号和姓名。(信息系统)

select sno, sname from student where sno in (select sno from sc where cnoin (select cno from course where cname='信息系统'));

SNO SNAME

--------- --------

20070001 李佳

20070003 王添

2.查询与刘晨在同一个系学习的学生。

SQL> select * from student where sdept=(select sdept from student wheresname='李佳');

SNO SNAME    SSEX SAGE SDEPT

--------- -------- ---- ---- --------------------

20070001 李佳     女     20 MA

20070003 王添     男     18 MA

20070006 张力     男     19 MA

224129 庞阿男   男     22 MA

3.                       求选修1号课程的成绩高于刘晨的成绩(指刘晨选修的所有的课程的成绩)的学生学号及成绩。(李佳)

SQL> select sno,grade from sc where cno='1' and grade >(selectmax(grade) from sc where sno=(select sno from student where sname='李佳'));

SNO GRADE

--------- -----

224128   100

4.                       求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)。

select * from student where sdept<>'MA' and sage<(selectmax(sage) from student where sdept='MA');

SNO SNAME    SSEX SAGE SDEPT

--------- -------- ---- ---- --------------------

20070004 张力     女     21 IS

20070005 张力     女     19 CS

224128 庞振男  女    20 IT

5.   求其他系中比计算机系学生年龄都小的学生姓名及年龄。

SQL> select sname, Sage from student where sdept<>'CS' andsage<(select min(sage) from student where sdept='CS');

SNAME    SAGE

-------- ----

王添       18

6.   求没有选修3号课程的学生姓名。

SQL> select sname from student where sno not in(select sno from scwhere cno='3');

SNAME

--------

张力

张力

张力

庞振男

庞阿男

nana

6 rows selected

7.   查询选修了全部课程的学生姓名。

SQL语言中没有全称量词∨(,all)。但是可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。(∨x)P≡∟(exists x(∟P))

SQL> select sname from student where not exists (select * from coursewhere not exists (select * from sc where sno=student.sno and cno=course.cno));

SNAME

--------

李佳

试做:查询所有学生都选修的课程名

试做:

SQL> select cname from course where not exists(select * from studentwhere not exists (select * from sc where sno=student.sno and cno=course.cno));

CNAME

--------------------

数据库原理

DB

8.                       求至少选修了学号为“200215121”的学生所选修全部课程的学生学号和姓名。

首先看学号为“200215122”的学生是否选修了学号为“200215121”这个学生所修的全部课程;

即:当200215122号学生没有没选200215121所选的课程时,即200215122全选了200215121同学选修的全部课程。

select * from sc a wherea.sno='200215121' and not exists(select * from sc b where b.sno='200215122' anda.cno=b.cno);

扩展到所有的学生

select sno,sname from student where not exists (select * from sc a wherea.sno='200215122' and not exists(select * from sc b where b.sno=student.sno anda.cno=b.cno));

9.   求选修课程超过2门的学生的学号和姓名。

SQL> select sno,sname from student where sno in (select a.sno from sca,sc b where a.sno=b.sno and a.cno<>b.cno);

SNO SNAME

--------- --------

20070001 李佳

20070003 王添

借助于笛卡尔积(求的是选修课程大于等于两门的学生)

SQL> select sno,sname from student where sno in (select sno from scgroup by sno having count(*)>2);

SNO SNAME

--------- --------

20070003 王添

20070001 李佳

借助于聚集函数,此种方法更好一些

二、数据更新

1.插入数据

1)向Student表中插入2行数据,1行为你的信息,另一行自定。

SQL> insert into student (sno,sname,ssex,sage,sdept) values (224128,'庞振男','女',20,'IT');

1 row inserted

SQL> insert into student (sno,sname,ssex,sage,sdept) values (224129,'庞阿男','男',22,'MA');

1 row inserted

SQL> commit;

Commit complete

2)向Course表中插入2行数据,1行为本门课程的信息,另一行自定。

SQL> insert into course (cno,cname,cpno,ccredit)values(001,'DB','002',3);

1 row inserted

SQL> insert into course (cno,cname,cpno,ccredit)values(002,'OS','003',4);

1 row inserted

SQL> commit;

Commit complete

3)向SC表中插入数据,插入你的这门课程的选课信息。

SQL> insert into sc (sno,cno,grade) values(224128,001,100);

1 row inserted

SQL> commit;

Commit complete

2.修改数据

1)将姓刘的同学删除。

SQL> delete from student where sno in (select sno from student wheresname like '刘%');

1 row deleted

SQL> commit;

Commit complete

或者:

deletefrom student where sname like '刘%';

2)将’CS’系同学的选课信息中的成绩置0。

SQL> update sc set grade=0 where sno in (select sno from student wheresdept='CS');

1 row updated

SQL> commit;

Commitcomplete

3.删除数据

1)删除和’ 刘晨’在同一个系的学生的信息。

SQL> delete from student where sdept=(select sdept from student wheresname='李佳');

4 rowsdeleted

SQL> commit;

Commitcomplete

2)删除’CS’系同学的选课信息。

SQL> delete from sc where sno in (select sno from student wheresdept='CS');

1 row deleted

SQL> commit;

Commitcomplete

在插入修改删除数据时,一定不要忘记commit;

数据库实验三 嵌套查询和视图操作相关推荐

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

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

  2. 数据库之多表查询与视图操作

    步骤: 在上一次的基础上对已经创建的jwg数据库中的数据表进行各种查询操作 多表查询 1.进行多表查询 从student.course.student_course三个表中检索出学生的学号.姓名.学习 ...

  3. 数据库实验三 数据查询一

    第1关:按条件查询单表的所有字段 任务描述 本关任务:按条件查询数据表的所有字段 为了完成本关任务,你需要掌握: 如何查询数据表的所有字段 相关知识 查询数据表 命令格式: select * from ...

  4. MySQL数据库实验三 MySQL查询

    一.实验项目: MySQL查询. 二.实验目的 掌握MySQL的查询操作. 三.实验内容 (一): 1.查询lineitem表中商品编号(productid)和单价(unitprice),要求消除重复 ...

  5. 数据库实验三 数据查询二

    第1关:多表查询 任务描述 本关任务:查询来自借阅.图书.读者数据表的数据 为了完成本关任务,你需要掌握: 如何多表查询 相关知识 查询多个数据表 在实际应用中,查询经常会涉及到几个数据表. 基于多个 ...

  6. 数据库实验:数据库和表、查询、视图与安全性、存储过程及游标、触发器、综合实验-水果商店进阶

    数据库实验:数据库和表.查询.视图与安全性.存储过程及游标.触发器.综合实验-水果商店进阶 实验一.数据库和表 源码1: 源码2: 小结 实验二.查询 源码 小结 实验三.视图.安全性 源码: 小结 ...

  7. 数据库 ----- 实验三:SQL的查询

    实验三 SQL的查询 [实验目的和要求] 1.掌握SQL Server Management Studio中SQL 查询操作: 2.掌握SQL 的单表查询命令: 3.掌握SQL 的连接查询操作: 4. ...

  8. 数据库原理及应用(MySQL版)——实验三 MySQL查询

    实验三 MySQL查询 1.实验目的 2.实验内容及要求 1.实验目的 熟悉SELECT语句的语法结构: 熟练掌握组合使用where.group by.having和order by等子句: 熟悉聚合 ...

  9. 太原理工大学软件学院19级数据库实验三(2021.4.19)

    太原理工大学数据库实验三(2021.4.19) 以下代码需按步骤复制到查询控制台 博主用的软件是DataGrip,与SQL Server Management Studio在操作上有些差别 1.以Wi ...

最新文章

  1. 3.Spring Security 自定义用户认证
  2. shell for循环命令行_精心汇总的24道shell脚本面试题
  3. 【转】How Many Boyfriends
  4. Docker源码修改工作总结(三)
  5. VC++ 添加UNICODE和_UNICODE预处理选项
  6. mysql必_MySQL必知必会(一)
  7. JAVA设计模式 - 代理模式
  8. redis复制key的数据_Redis常见面试题
  9. 29.优化 MySQL Server
  10. win7 计算机设置命令,win7系统如何设置自动关机?
  11. AI机器学习实战の电磁导航智能车中神经网络应用的问题与思考-交流向-本科生竞赛
  12. codeforces1467E. Distinctive Roots in a Tree
  13. 女程序员的工位,藏着她们鲜衣怒码的人生 | 3·8特辑
  14. python语言支持中文输出_python2输出汉字的解决办法暨python2/python3的编码环境参数的查看-Go语言中文社区...
  15. 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
  16. WLAN 双链路+HSB高可靠性
  17. BI数据分析师工作说明
  18. linux服务器视频转换,linux下视频格式转换工具
  19. 大型语言模型综述(二)
  20. component组件中的is属性居然有大用?

热门文章

  1. element 修改分页样式_vue想改变element分页样式
  2. 分享一个蓝月传奇手游辅助脚本,想回味传奇游戏又不想费太多时间练级的可以试试
  3. 华为OD面试【前】经验分享,包含面试准备的各个细节
  4. GIS论坛网站推荐!
  5. 硬盘分几个区最好?硬盘分区和库的关系
  6. 文件夹删不掉?有种文件夹叫 畸形文件夹
  7. 12.嵌入式控制器EC实战 SMBus概述
  8. jforum无法发布帖子问题
  9. Windows XP Service Pack 3 (Windows XP SP3)简体中文版本正式发布(附下载地址)
  10. SEO推广技术是什么意思?SEO是什么职业?