目录标题

  • 实验三 DMDBMS表查询操作
    • 一、实验目的:
    • 二、实验要求:
    • 三、实验重点和难点:
    • 四、实验内容:
    • 五、实验步骤与结果:
      • 1. 表创建
      • 2. 数据填充
      • 3. 数据查询
        • 3.1查出选修了2003这门课(sco),不及格的同学的名字(stuinfo)
        • 3.2查出选修了2003这门课不及格的(sco),但是2004这门课及格了的学生的姓名(stuinfo)
        • 3.3查询教师所有的专业及不重复的depart列
        • 3.4查询score表中成绩在60-80之间的所有记录
        • 3.5查询score表中成绩为85,67或87的记录
        • 3.6查询student表中95031班,或性别为女的同学的记录
        • 3.7以class降序查询student表的所有记录
        • 3.8查询95031班的学生人数
        • 3.9查询score表中最高分的学生学号和课程号
        • 3.10查询每门课的平均分
        • 3.11查询score表中至少有两名学生选修的并以3开头的课
        • 3.12查询所有学生的sname,cno和degree列
        • 3.13查询所有学生的sname,cname和degree列
        • 3.14查询95031班学生每门课的平均分
        • 3.15查询选修‘3-105’课程的成绩高于105号学生的'3-105’课程成绩的所有同学的记录
        • 3.16查询成绩高于学号为‘109’,课程号为'3-105’的成绩的所有记录
        • 3.17查询吴教师任课的学生成绩
        • 3.19查询选修课程为3-105,且成绩高于选修编号为3-106课程的同学的cno,sno和degree
        • 3.20查询student表中不姓‘成’的同学的记录
        • 3.21查询男教师及其所上的课程

实验三 DMDBMS表查询操作

一、实验目的:

1.掌握查询中操作符的应用;
2.掌握对复杂查询的查询要求拆解分析;
3.掌握SQL语言对数据库信息及用户信息进行查询;
4.理解和掌握SQL语言: 能够熟练地使用distinct、AS some_name(别名)、join、group by、order by、having、limit、like相关命令对表数据进行复杂查询。
5.完成对范例数据的复杂查询,包括对表数据的查询、去重、分组、数据限制、连接查询等。

二、实验要求:

1.掌握对复杂查询的查询要求拆解分析
2.掌握查询中操作符的应用
3.熟悉DQL语言中各参数的使用方法及应用场景
4.理解和掌握SQL语言: 能够熟练地使用distinct、AS some_name(别名)、join、group by、order by、having、limit、like相关命令对表数据进行复杂查询。
5.熟悉例题查询思路。

三、实验重点和难点:

实验重点:别名的使用、条件查询、连接查询、子查询、数据分组、数据排序
实验难点:连接查询、子查询、分组查询、函数的使用

四、实验内容:

  1. 数据库信息、用户信息查询
  2. 表数据查询
    2.1.去重查询
    2.2. 查询列的选择
    2.3.别名的使用
    2.4. 条件查询
    2.5. 连接查询
    2.6. 子查询
    2.7. 数据分组
    2.8.数据排序
    2.9.数据限制

五、实验步骤与结果:

说明:每一部分实验内容,请描述实验过程,并搭配实验结果截图

1. 表创建

//截图SQL指令及输入结果

数据准备:
创建Stuinfo、Sco、Student、Teacher、Course、Score表,并根据实际情况合理的定义主键、联合主键、外键以及相关约束。
表结构如下:
1、Stuinfo

2、Sco

3、Student

4、Teacher

5、Course

6、Score

create table Stuinfo(SSNO INT NOT NULL,SNAME VARCHAR(20) DEFAULT NULL,SAGE INT DEFAULT NULL,PRIMARY KEY(SSNO)
);
create table Sco(SNO INT ,CNO INT DEFAULT NULL,DEGREE INT DEFAULT NULL,FOREIGN KEY(SNO) REFERENCES Stuinfo(SSNO)
);
create TABLE Student(SNO VARCHAR(20) NOT NULL,SNAME VARCHAR(20) NOT NULL,SSEX VARCHAR(20) NOT NULL,SBIRTH DATETIME(6),CLASS VARCHAR(20),PRIMARY KEY(SNO)
);
create TABLE Teacher(TNO VARCHAR(20) NOT NULL,TNAME VARCHAR(20) NOT NULL,TSEX VARCHAR(20) NOT NULL,TBIR DATETIME(6),PROF VARCHAR(20),DEPART VARCHAR(20) NOT NULL,PRIMARY KEY(TNO)
);
create table Course(CNO VARCHAR(20) NOT NULL,CNAME VARCHAR(20) NOT NULL,TNO VARCHAR(20) NOT NULL,PRIMARY KEY(CNO),FOREIGN KEY(TNO) REFERENCES Teacher(TNO)
);
create table Score(SNO VARCHAR(20) NOT NULL,CNO VARCHAR(20) NOT NULL,DEGREE DECIMAL, FOREIGN KEY(CNO) REFERENCES Course(CNO),FOREIGN KEY(SNO) REFERENCES Student(SNO)
);

2. 数据填充

//截图SQL指令及输入结果
按照如下信息,将数据插入到对应表中,若无法插入请说明原因
Stuinfo:
1001,aa,12
1002,bb,16
1003,cc,14
1004,dd,14
1005,ee,15

insert INTO EXP3.STUINFO(SSNO,SNAME,SAGE) VALUES (1001,'aa',12);
insert INTO EXP3.STUINFO(SSNO,SNAME,SAGE) VALUES (1002,'bb',13);
insert INTO EXP3.STUINFO(SSNO,SNAME,SAGE) VALUES (1003,'cc',14);
insert INTO EXP3.STUINFO(SSNO,SNAME,SAGE) VALUES (1004,'dd',15);
insert INTO EXP3.STUINFO(SSNO,SNAME,SAGE) VALUES (1005,'ee',16);

Sco:
1001,2003,60
1002,2003,53
1003,2003,48
1003,2004,85
1004,2004,96
1005,2003,88
1006,2004,77

insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1001,2003,60);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1002,2003,53);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1003,2003,48);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1003,2004,85);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1004,2004,96);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1005,2003,88);
insert INTO EXP3.Sco(SNO,CNO,DEGREE) VALUES (1006,2004,77);

第七句产生问题:违反外键约束

Student:
101,朱超,男,1997-09-01,95033
102,刘法治,男,1998-10-02,95031
103,成文彬,女,1997-01-01,95033
104,罗聪,男,1996-11-01,95033
105,董俊杰,女,1975-02-01,95031
106,李衡,女,1998-06-01,95031

insert INTO EXP3.Student VALUES ('101','朱超','男','1997-09-01','95033');
insert INTO EXP3.Student VALUES ('102','刘法治','男','1998-10-02','95031');
insert INTO EXP3.Student VALUES ('103','成文彬','女','1997-01-01','95033');
insert INTO EXP3.Student VALUES ('104','罗聪','男','1996-11-01','95033');
insert INTO EXP3.Student VALUES ('105','董俊杰','女','1975-02-01','95031');
insert INTO EXP3.Student VALUES ('106','李衡','女','1998-06-01','95031');

Teacher:
804,李,男,1985-12-02,副教授,计算机系
805,王,女,1975-10-02,助教,计算机系
806,张,男,1995-11-02,教授,电子工程
807,吴,女,1997-1-02,讲师,计算机系

insert INTO EXP3.Teacher VALUES ('804','李','男','1985-12-02','副教授','计算机系');
insert INTO EXP3.Teacher VALUES ('805','王','女','1975-10-02','助教','计算机系');
insert INTO EXP3.Teacher VALUES ('806','张','男','1995-11-02','教授','电子工程');
insert INTO EXP3.Teacher VALUES ('807','吴','女','1997-1-02','讲师','计算机系');

Course:
3-106,高等数学,804
3-105,C语言,805
4-107,操作系统,806
5-108,大数据,807

insert INTO EXP3.Course VALUES ('3-106','高等数学','804');
insert INTO EXP3.Course VALUES ('3-105','C语言','805');
insert INTO EXP3.Course VALUES ('4-107','操作系统','806');
insert INTO EXP3.Course VALUES ('5-108','大数据','807');

Score:
103,3-106,80
103,3-105,85
104,3-106,64
104,4-107,91
105,5-108,78
105,3-106,65
105,3-105,67
106,3-106,87
106,4-107,56
107,5-108,76
107,4-107,87
108,5-108,98

insert INTO EXP3.Score VALUES ('103','3-106',80);
insert INTO EXP3.Score VALUES ('103','3-105',85);
insert INTO EXP3.Score VALUES ('104','3-106',64);
insert INTO EXP3.Score VALUES ('104','4-107',91);
insert INTO EXP3.Score VALUES ('105','5-108',78);
insert INTO EXP3.Score VALUES ('105','3-106',65);
insert INTO EXP3.Score VALUES ('105','3-105',67);
insert INTO EXP3.Score VALUES ('106','3-106',87);
insert INTO EXP3.Score VALUES ('106','4-107',56);
insert INTO EXP3.Score VALUES ('107','5-108',76);
insert INTO EXP3.Score VALUES ('107','4-107',87);
insert INTO EXP3.Score VALUES ('108','5-108',98);

句10,11,12错误:违反外键约束

3. 数据查询

//截图SQL指令及输入结果

3.1查出选修了2003这门课(sco),不及格的同学的名字(stuinfo)

select SNAME FROM EXP3.STUINFO WHERE SSNO in (select SNO FROM EXP3.SCO WHERE(SCO.CNO = 2003 AND SCO.DEGREE < 60));

3.2查出选修了2003这门课不及格的(sco),但是2004这门课及格了的学生的姓名(stuinfo)

select SNAME FROM EXP3.STUINFO WHERE SSNO in (select SNO FROM EXP3.SCO WHERESNO IN(SELECT SNO FROM EXP3.SCO WHERE SCO.CNO = 2003 AND SCO.DEGREE < 60 ) AND  (SELECT SNO WHERE (SCO.CNO = 2004 AND SCO.DEGREE >= 60)));

下列查询涉及的表均为Student、Teacher、Course、Score

3.3查询教师所有的专业及不重复的depart列

select PROF FROM EXP3.TEACHER;select DISTINCT DEPART FROM EXP3.TEACHER;

3.4查询score表中成绩在60-80之间的所有记录

select * FROM EXP3.SCORE WHERE SCORE.DEGREE BETWEEN 60 AND 80;

3.5查询score表中成绩为85,67或87的记录

select * FROM EXP3.SCORE WHERE SCORE.DEGREE IN (85,67,87);

3.6查询student表中95031班,或性别为女的同学的记录

select * FROM EXP3.STUDENT WHERE STUDENT.CLASS = '95031' OR STUDENT.SSEX = '女';

3.7以class降序查询student表的所有记录

select * FROM EXP3.STUDENT ORDER BY STUDENT.CLASS DESC ;

3.8查询95031班的学生人数

select COUNT(CLASS) FROM EXP3.STUDENT WHERE STUDENT.CLASS='95031';

3.9查询score表中最高分的学生学号和课程号

select SNO,CNO FROM EXP3.SCORE WHERE SCORE.DEGREE in (SELECT MAX(SCORE.DEGREE) FROM EXP3.SCORE) ;

3.10查询每门课的平均分

SELECT SCORE.CNO,AVG(DEGREE) AS AVG FROM EXP3.SCORE GROUP BY SCORE.CNO;

3.11查询score表中至少有两名学生选修的并以3开头的课

SELECT DISTINCT CNO FROM EXP3.SCORE WHERECNO IN( SELECT CNO FROM(SELECT CNO,COUNT(SCORE.CNO)as CNT FROM EXP3.SCORE GROUP BY SCORE.CNO) WHERE CNT >= 2)AND CNO LIKE '3%';

3.12查询所有学生的sname,cno和degree列

select SNAME,CNO,DEGREE FROM STUDENT INNER JOIN EXP3.SCORE ON STUDENT.SNO=SCORE.SNO;

3.13查询所有学生的sname,cname和degree列

select SNAME,CNAME,DEGREE FROM STUDENT INNER JOIN EXP3.SCORE ON STUDENT.SNO=SCORE.SNO INNER JOIN EXP3.COURSE ON SCORE.CNO = COURSE.CNO;

3.14查询95031班学生每门课的平均分

select CNAME,AVG(DEGREE)AS AVG FROM ( SELECT SNAME,CNAME,DEGREE FROM STUDENTINNER JOIN EXP3.SCORE ON STUDENT.SNO = SCORE.SNO INNER JOIN EXP3.COURSE ON SCORE.CNO = COURSE.CNOWHERE STUDENT.CLASS = '95031')GROUP BY CNAME;

3.15查询选修‘3-105’课程的成绩高于105号学生的’3-105’课程成绩的所有同学的记录

SELECT * FROM EXP3.SCORE WHERE SCORE.CNO = '3-105' AND SCORE.DEGREE > (select MAX(DEGREE) FROM (select DEGREE FROM EXP3.SCORE WHERE SCORE.CNO='3-105' AND SCORE.SNO='105'));

3.16查询成绩高于学号为‘109’,课程号为’3-105’的成绩的所有记录

SELECT * FROM EXP3.SCORE WHERE
SCORE.DEGREE > (select MAX(DEGREE) FROM (select DEGREE FROM EXP3.SCORE WHERE SCORE.CNO='3-105' AND SCORE.SNO='109'));

3.17查询吴教师任课的学生成绩

select SNAME,COURSE.CNO,CNAME,DEGREE FROM STUDENT INNER JOIN EXP3.SCORE ON STUDENT.SNO=SCORE.SNO INNER JOIN EXP3.COURSE ON SCORE.CNO = COURSE.CNOINNER JOIN EXP3.TEACHER ON COURSE.TNO = TEACHER.TNOWHERE TEACHER.TNAME = '吴';
#### 3.18查询选修某门课程的同学人数大于2人的教师的名字
SELECT DISTINCT TT FROM (SELECT SCORE.CNO AS SC,TEACHER.TNAME AS TT FROM (EXP3.SCORE INNER JOIN EXP3.COURSE ON SCORE.CNO=COURSE.CNOINNER JOIN EXP3.TEACHER ON COURSE.TNO = TEACHER.TNO))WHERE TT IN (SELECT TT FROM (SELECT TT,COUNT(SC) AS CNT FROM (SELECT SCORE.CNO AS SC,TEACHER.TNAME AS TT FROM (EXP3.SCORE INNER JOIN EXP3.COURSE ON SCORE.CNO=COURSE.CNOINNER JOIN EXP3.TEACHER ON COURSE.TNO = TEACHER.TNO))GROUP BY SC)WHERE CNT >=2)

3.19查询选修课程为3-105,且成绩高于选修编号为3-106课程的同学的cno,sno和degree

select CNO,SNO,DEGREE from EXP3.SCORE WHERE CNO='3-105' AND DEGREE > all(SELECT DEGREE FROM SCORE where SCORE.CNO='3-106');

3.20查询student表中不姓‘成’的同学的记录

SELECT * FROM EXP3.STUDENT WHERE NOT STUDENT.SNAME LIKE '成';

3.21查询男教师及其所上的课程

select TEACHER.TNO,TNAME,COURSE.CNO,CNAME FROM EXP3.TEACHER
INNER JOIN EXP3.COURSE ON COURSE.TNO = TEACHER.TNO
WHERE TEACHER.TSEX= '男';

达梦数据库实验三:DMDBMS表查询操作相关推荐

  1. 达梦数据库(DM)——表空间管理命令大全

    达梦数据库表空间管理中几乎可以说与oracle基本一致,最近梳理了常见的表空间管理的SQL命令,当然在oracle中执行也是可以的,主要是因为DM 还兼容 Oracle 11g 的部分语言特性. 表空 ...

  2. 达梦数据库实验五:DBMS综合设计

    目录标题 实验五 DBMS综合设计 一.实验目的: 二.实验要求: 三.实验重点和难点: 四.实验内容: 五.实验步骤与结果: 1. 概念设计 2. 逻辑设计 2.1根据ER图转换为世界的关系模型,找 ...

  3. 【数据库】将Excel导入达梦数据库,并执行表合并

    1.将EXCEL中不需要的列删除 2.将EXCEL留下列的标题栏命名为数据库表的字段名 3.替换掉文件中的#REF!和#N/A等错误字符. 4.用达梦数据迁移工具将EXCEL文件导入到数据库中,创建新 ...

  4. 数据库实验三--OpenGauss(查询和更新数据)

    文章目录 实验内容 实验过程 查询 不带where的简单查询 带where的查询 LIKE表达式 排序和分组 排序 聚集函数 分组 连接查询 嵌套查询 IN-子查询 集合比较-子查询 存在量词--子查 ...

  5. 【数据库实验】 单表查询

    [例3.19] 查全体学生的姓名及其出生年份. select Sname,2021-Sage from student; [例3.20] 查询全体学生的姓名.出生年份和所在的院系,要求用小写字母表示系 ...

  6. 达梦数据库查看当前执行的查询并杀死session

    查看正在执行的语句: select * from v$sessions where state = 'ACTIVE'; 终止正在执行的语句: --sess_id是上面查询出的结果列 call sp_c ...

  7. 关于DM达梦数据库,获取用户表信息、数据表结构、数据表创建语句、主键等信息的sql

    1.获取数据表中的字段名.类型.长度.描述 select name,reftype,length,descrip from ( select distinct A.COLUMN_ID as id, A ...

  8. oracle数据库dblink创建语句_「运维实验」——达梦数据库DBlink连接Oracle配置

    经过昨天达梦数据库间DBlink配置(具体操作可回看上一篇文章),今天做延伸实验. 实验环境说明 Oracle数据库1:192.168.80.40 ora11g RHEL 6.5 64位 达梦数据库1 ...

  9. 达梦数据库中各种表的管理

    上海蒙马软件技术有限公司 2021年7月28日 达梦数据库有:普通表.分区表.临时表.堆表(rowid).列存表(HUGE).外部表等 默认的普通表是索引组织部表(索引组织表,无主键利用 rowid, ...

最新文章

  1. android 桌面图标创建,android创建桌面图标
  2. python正则去除换行符,关于python:用于删除换行符的正则表达式
  3. python2clock_控制fps的时钟Clock类源码
  4. Codeforces Round #496 (Div. 3 ) E1. Median on Segments (Permutations Edition)(中位数计数)
  5. JQuery 数组按指定长度分组
  6. 零百1.8秒的电动车竟然是威马... | 云逛成都车展
  7. Visual Studio 2013 编译Notepad++源码
  8. paip.提升用户体验---论文本编辑器的色彩方案
  9. [2]Selenium学习系列---- FirePath的安装和使用
  10. 把大写数字转换成阿拉伯数字后排序
  11. java基于微信小程序的英语学习激励系统-计算机毕业设计
  12. python第二十四天
  13. [Luogu] 逆序数P5149 会议座位
  14. 新媒体运营教程:完整的用户增长5步方案!
  15. Intel体系MMX指令指令说明
  16. 可穿戴式柔性电子应变传感器(二)
  17. Android开关机定制(动画,声音)
  18. 关于电脑鼠标不受控乱动的问题
  19. 国家信息化计算机教育证书是国家职业资格证书吗
  20. 与服务器斗智斗勇之文件内容

热门文章

  1. SUPPORTS, REQUIRED ,REQUIRES_NEW的区别
  2. SRv6----网络指令
  3. 送人玫瑰,手留余香——2015年技术分享交流小结
  4. VScode编辑器——配置可编写MDK keil工程
  5. 关于seata的详细使用成功案例
  6. trick:CSS 3+checkbox实现JQuery的6个基本动画效果
  7. Android如何将采集到的音频PCM文件转为WAV并保存
  8. 论“结婚生孩子要趁早”,否则真正的是“上有老下小”
  9. 【技术解决方案】企业如何从SpringBoot应用平滑迁移到云原生K8s平台
  10. 测试一款LMV358, DIP8封装