数据库实验四:SQL数据查询
数据库实验四

数据库实验四在学习数据库的过程中,实验是帮助我们深入理解和掌握相关知识的重要环节。
本次数据库实验四主要围绕着数据库的查询、更新以及数据完整性等方面展开。
实验的目的是让我们通过实际操作,更加熟练地运用 SQL 语句来处理数据库中的数据,同时加深对数据库原理和概念的理解。
在实验开始之前,我们首先需要准备好相关的数据库环境。
这包括安装数据库管理系统,如 MySQL 或 SQL Server 等,并创建好实验所需的数据库和数据表。
本次实验中,我们创建了一个名为“students”的数据库表,用于存储学生的基本信息,如学号、姓名、年龄、性别和所在班级等。
同时,还创建了一个名为“courses”的表,用于存储课程的信息,包括课程编号、课程名称和授课教师等。
接下来,就是实验的核心部分——数据查询操作。
通过使用 SQL 的 SELECT 语句,我们可以从数据库中获取所需的数据。
例如,要查询所有年龄大于 20 岁的学生信息,可以使用以下语句:```sqlSELECT FROM students WHERE age > 20;```除了简单的条件查询,我们还学习了如何进行多表连接查询。
比如,要获取同时选修了“数据库原理”和“操作系统”两门课程的学生信息,就需要将“students”表、“courses”表以及选课关系表进行连接查询。
数据更新操作也是实验中的重要内容。
通过使用 UPDATE 语句,我们可以对数据库中的数据进行修改。
但在进行数据更新时,一定要谨慎操作,确保更新的结果符合预期,避免造成数据的错误或丢失。
例如,如果要将某个学生的年龄增加一岁,可以使用以下语句:```sqlUPDATE students SET age = age + 1 WHERE student_id ='_____';```在实验过程中,数据完整性的维护也是至关重要的。
我们通过设置主键、外键以及各种约束条件,来确保数据的准确性和一致性。
实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。
二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。
了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。
SQL数据库实验报告数据查询

SQL数据库实验报告数据查询南京信息工程大学实验(实习)报告实验(实习)名称数据查询实验(实习)日期11.25 得分指导教师系计算机系专业网络工程年级班次姓名学号一.实验目的1. 观察查询结果, 体会S ELECT 语句实际应用;2. 要求学生能够在查询分析器中使用S ELECT 语句进行简单查询。
3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二.实验内容1. 简单查询操作2. 连接查询操作三.实验步骤原始数据图学生表:课程表:选课表① 求计算机系的学生学号和姓名;② 求选修了课程的学生学号;③ 求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列④ 求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;⑤求计算机系和数学系的姓张的学生的信息;⑥求缺少了成绩的学生的学号和课程号。
查询每个学生的情况以及他(她)所选修的课程;求生的学号、姓名、选修的课程名及成绩选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;查询每一门课的间接先行课。
内容二一.实验目的1.掌握子查询的表示。
2.进一步掌握S QL Server 查询分析器的使用方法,加深对S QL 语言的嵌套查询语句的理解二.实验内容1)求选修了高等数学的学生学号和姓名;2)求C1 课程的成绩高于张三的学生学号和成绩3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生))求其他系中比计算机系学生年龄都小的学生信5)求选修了C2 课程的学生姓名;6)求没有选修C2 课程的学生姓名;7)查询选修了全部课程的学生的姓名)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。
2.提高操作实验1) 求供应项目j4 红色零件的供应商号及名称2) 求没有上海供应商生成的零件的项目号3)至少使用了供应商S5 所供应全部零件的项目号内容三:一.实验目的1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
![数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]](https://img.taocdn.com/s3/m/3c9fb119fad6195f312ba66a.png)
实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
实验四 在SQL Server中进行数据查询

实验四在SQL Server中进行数据查询一、实验目的1.掌握SELECT语句的基本语法。
2.掌握子查询的应用。
3.掌握连接查询的应用。
4.掌握SELECT语句的统计函数的作用和使用方法。
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
二、实验要求1.了解SELECT语句的基本语法格式。
2.了解SELECT语句的执行方法。
3.了解子查询的表示方法。
4.了解SELECT语句的统计函数的作用。
5.了解SELECT语句的GROUP BY和ORDER BY子句的作用。
三、实验内容:使用的数据库实验二、实验三、实验四录入数据的学生情况表Student 课程名称表Course教师授课表Teach 成绩表Score等四张基本表。
(一)基本查询:1.(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
2.(不选择重复行) 求选修了课程的学生学号。
3.(使用表达式) 求全体学生的学号、姓名和出生年份。
(二)条件查询:4.(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。
5.(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
6.(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。
7.(匹配查询) 求选修课程001或002或003,成绩在70至85之间,学号为04xxx 的学生的学号、课程号和成绩。
8.(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。
(三)聚合函数查询:9.(组函数) 求学生总人数。
10.(组函数) 求选修了课程的学生人数。
11.(组函数) 求选修了课程001的最高、最低与平均成绩。
12.(分组查询) 求各系、各班级的人数和平均年龄。
四、实验编程结果或过程(用截图方式或SQL语句表示,语句用蓝色字体标出)(一)基本查询:1.(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
Select SNO,SNAME,SSEX,SAGEFrom student2.(不选择重复行) 求选修了课程的学生学号。
sql 数据库 实验四:管理SQL Server数据表的数据

实验四:管理SQL Server数据表的数据一、实验目的1.熟悉数据表结构及使用特点;2.熟悉使用Management Stuio界面方式管理数据表数据;3.熟悉使用T-SQL语句管理数据表数据。
二、实验学时2学时三、实验要求1.了解SQL Server数据表数据的管理方法;2.了解SQL Server数据类型;3.完成实验报告(部分题只需给出关键语句)。
四、实验内容依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:1.向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)2.查看数据表信息1)查看数据表Student所有记录2)查看数据表Student中字段sno、sname的所有记录3.修改数据表信息1)修改student表,将cs系姓名为“李咏”的学生姓名为“李勇”;2)将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;3)修改course表,将“数据处理”的学分改为3学分;4)修改CS表,将选修课程“1”的同学成绩加5分;5)删除数据表student中无专业的学生记录;6)删除数据表course中学分低于1学分的课程信息;注:第2题与第3题需要在实验报告册中写出每道题的T-SQL语句。
五、实验步骤1. 向各个数据表中插入如下记录:方法一:用Management Studio实现数据添加(1)启动SQL Server Management Studio。
(2)在资源对象管理器中选择“表”,单击鼠标右键,然后从弹出的快捷菜单中选择“编辑前200行”命令。
(3)在表窗口中,显示出当前表中数据,单击表格中最后一行,填写相应数据信息。
方法二:用T-SQL 语句实现数据添加如:对于student表来说插入第一条数据的命令是INSERT INTO Student VALUES(‘200515001’,’赵菁菁’,’女’, 23,‘CS’)或INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept) VALUES (200515001’,’赵菁菁’,’女’, 23,‘CS’)2.查看数据表信息命令方式:在【SQL Server Management Studio】窗口左上方选择【新建查询】按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击【执行】按钮。
数据库实验报告-SQL语句查询

《数据库原理》实验报告(实验名称:SQL查询语句)一、实验目的数据查询语句是SQL语句的重要组成部分,是编程人员与数据库管理人员必不可少的工具,通过实验达到以下目的:(1)掌握SELECT 语句的基本语法,加深学生对查询语句基本概念的理解。
(2)掌握简单的单表查询。
(3)掌握连接查询。
二、实验内容:实验数据:实验二所建的数据库及表,实验三录入表中的数据。
1、简单查询(1)若干列或行的选择(2)*、distinc、between…and… 、 in、 like等运算符的使用(3)计算列、常量或空值的查询(4)查询结果排序和分组2、连接查询(1)内连接和自身连接(2)外连接(3)复合条件连接(4)多表连接(5)对表和列使用别名三、实验环境SQL server 2000,pc机一台四、程序源码与运行结果1.查询所有学生的全部信息2. 查询全体学生的学号与姓名3 查询年龄在20岁以下的学生姓名及其出生年份,并为出生年份加上标题4 查询选修了课程的学生学号,并消除重复行5 查询年龄在20~23岁的学生信息(用between… and…表示查询条件)6 查询全体学生情况,查询结果按班级编号升序排列,同一班的学生按年龄降序排列7 查询所有姓赵学生的姓名、学号和性别8 查询名字中第2个字为“小”字的学生姓名9 查询电气信息工程学院(dx) 和计算机学院(jsj)的学生(要求:使用IN关键字表示查询条件10 查询没有考试成绩的学生学号和课程号11 查询有2门以上课程是90分以上的学生的学号及(90分以上的)课程数(先用group by 分组,再用Having限定分组条件)12 查询学生总人数13 查询学号为‘’学生的平均成绩和总成绩,并为总成绩和平均成绩取别名。
14 查询c01号课程的最高分数和最低分15 查询没有考试成绩的学生学号和课程号16 查询全体学生的姓名、选修的课程名及成绩17 查询每个学生及其选修课程情况的所有信息(用*表示字段18 查询某门课程考试成绩相同的学生学号和课程名,并为各个表取别名19 查询与“张三”在一个系学习的学生(IN)20 查询选修了“数据结构”的学生学号和姓名五、实验总结列名写错:修改列名:心得体会:通过实验,了解了一些基本的查询操作,会一些的基本操作。
sql查询实验报告

sql查询实验报告SQL查询实验报告一、引言SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
在数据库管理系统中,SQL查询是一项重要的操作,通过使用SQL查询语句可以从数据库中检索所需的数据。
本实验旨在通过实际操作,掌握SQL查询的基本语法和常用技巧。
二、实验目的1. 熟悉SQL查询语句的基本结构和语法;2. 掌握SQL查询中的条件筛选、排序和聚合等操作;3. 学会使用SQL查询语句从数据库中检索所需的数据。
三、实验环境本次实验使用MySQL数据库管理系统,通过MySQL Workbench进行操作。
四、实验步骤1. 连接数据库:打开MySQL Workbench,点击“新建连接”,输入数据库连接信息,成功连接到目标数据库。
2. 创建测试表:创建一个名为“students”的表,包含字段“id”(学生编号)、“name”(学生姓名)、“gender”(学生性别)、“age”(学生年龄)和“score”(学生成绩)。
3. 插入测试数据:向“students”表中插入若干测试数据,包括学生的编号、姓名、性别、年龄和成绩。
4. 执行SQL查询语句:使用SQL查询语句从“students”表中检索所需的数据。
五、实验结果与分析1. 查询所有学生的信息:SELECT * FROM students;通过执行以上查询语句,可以获取到“students”表中所有学生的信息,包括学生的编号、姓名、性别、年龄和成绩。
2. 查询成绩大于80分的学生信息:SELECT * FROM students WHERE score > 80;以上查询语句中的WHERE子句用于筛选成绩大于80分的学生信息,通过执行该语句,可以获取到符合条件的学生的信息。
3. 查询男生的平均成绩:SELECT AVG(score) FROM students WHERE gender = '男';以上查询语句中的AVG函数用于计算符合条件的学生的平均成绩,通过执行该语句,可以获取到男生的平均成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验四:S Q L数据查询数据库实验四:SQL数据查询一、实验目的与要求:1.实验目的熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。
实验内容:在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化:1、一般简单查询(1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。
(2)查询某个表中的所有记录。
(3)使用单个条件的简单查询。
(4)使用多个条件(AND关系)的查询。
(5)使用多个条件(OR关系)的查询。
(6)使用多个条件(混合AND和OR关系)的查询。
(7)使用带NOT运算的查询。
(8)使用BETWEEN···AND···的查询。
(9)使用NOT···BETWEEN···AND···的查询。
(10)使用LIKE运算符的字符串匹配查询。
(11)使用LIKE运算符的模板匹配查询。
(12)查询空值和非空值的查询(13)结果要求排序的查询(14)查询结果按多列排序,并分别要求升序和降序的查询。
(15)使用TOP显示前若干记录的查询。
(16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。
2、连接查询(17)两个关系的连接查询。
(18)带其他查询条件的两个关系的连接查询。
(19)多个关系(三个以上)的连接查询。
(20)两个关系的广义笛卡尔积运算结果。
(21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。
(22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。
(23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不是任何课程责任教师的教师信息)。
(24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教师的课程信息。
(25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师的教师信息,又能反映目前没有确定责任教师的课程信息。
提示:(22)~(25)分别用内连接、左连接、右连接完成,分析它们的效果。
3、嵌套查询(注意使用ANY、ALL和EXISTS)(26)使用IN运算的简单嵌套查询。
(27)使用NOT IN运算的简单嵌套查询。
(28)使用关系运算(如等于)的简单嵌套查询。
(29)使用ANY或SOME的简单嵌套查询。
(30)使用ALL的简单嵌套查询。
(31)查询院系名称含“计算机”、职称为教授、所负责教程为必修课的教师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接查询完成,分析各自的效率)。
(32)设计两个内外层互相关的嵌套查询。
(33)使用EXISTS的嵌套查询。
(34)使用NOT EXISTS的嵌套查询。
4、汇总和分组查询(35)使用COUNT统计数目的查询。
(36)使用SUM计算合计的查询。
(37)一次完成求和、计数、计算平均值的查询。
(38)查询所有课程的成绩都大于60分的学生的平均分最高的学生信息。
(39)查询数据库课程的成绩大于70分的、所有课程平均分最高的学生信息。
(40)查询每个学生的平均成绩。
(41)查询每个学生的所有成绩的最高成绩、最低成绩、平均成绩和所考课程的门数。
(42)查询至少有10门必修课程考试成绩的每个学生的平均成绩。
(43)设计2个使用COMPUTE···BY和COMPUTE的查询。
(44)设计1个使用COMPUTE的查询。
(45)设计1个使用COMPUTE···BY的查询。
二、实验内容1、实验原理SQL SELECT查询语句的一般格式是:SELECT [ALL | DISTINCT] < 表达式>[, <表达式>…]FROM <表名>[,<表名>…][WHERE <逻辑表达式>][GROUP BY <列名>[, <列名>…][HAVING<谓词>]][ORDER BY <列名> [ASC | DESC], [ <列名> [ASC | DESC]] …]2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL Server Management Studio。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
实验过程及相关程序:1、一般简单查询(1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。
select distinct 学号 from 选课select 学号 from 选课(2)查询某个表中的所有记录查询教师表中的所有记录(3)使用单个条件的简单查询查询成绩大于50的学生的学号select 学号 from 选课where 成绩>50(4)使用多个条件(AND关系)的查询select工资from教师where工资>200 and工资<500(5)使用多个条件(OR关系)的查询select工资from教师where工资<200 or工资>500(6)使用多个条件(混合AND和OR关系)的查询select*from学生where (院系='2'and生源='淮南')or(院系='6'and生源='淮北')(7)使用带NOT运算的查询select * from 学生where not (生源='合肥')(8)使用BETWEEN•••AND•••的查询select * from 选课where 成绩 between 86 and 93(9)使用NOT•••BETWEEN•••AND•••的查询select * from 选课where 成绩 not between 76 and93(10)使用LIKE运算符的字符串匹配查询。
select * from 课程where 课程性质 like '专业__'(11)使用LIKE运算符的模板匹配查询。
select*from院系where办公地点like'4_1'(12)查询空值和非空值的select * from 教师where 工资 is nullselect * from 教师where 工资 is not null(13)结果要求排序的查询select * from 选课 --升序order by 成绩select * from 选课 --降序order by 成绩 desc(14)查询结果按多列排序,并分别要求升序和降序的查询。
select * from 选课order by 学号, 成绩select * from 选课order by 学号, 成绩 desc(15)使用TOP显示前若干记录的查询select top 3 * from 学生(16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示select top 3 * from 学生where 生源='淮南'(17)两个关系的连接查询。
select * from 学生 cross join 选课(18)带其他查询条件的两个关系的连接查询select 学生.学号,院系,姓名,性别,生源,课程编号,成绩from 学生 join 选课on 选课.学号= 学生.学号(19)多个关系(三个以上)的连接查询select * from 学生,课程,选课where 学生.学号= 选课.学号and 课程.课程编号= 选课.课程编号(20)两个关系的广义笛卡尔积运算结果。
select * from 学生 cross join 选课(21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自连接的结果select e.学号,院系,姓名,性别,生源,课程编号,成绩from 学生 e join 选课 won e.学号= w.学号(22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等个字段select 姓名,职称,课程名称,课程性质from 教师 inner join 课程on 教师.教师编号=课程.责任教师(23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等个字段,要求结果中列出所有教师信息(即包括不是任何课程责任教师的教师信息)select 姓名,职称,课程名称,课程性质from 教师 left join 课程on 教师.教师编号=课程.责任教师(24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等个字段,要求结果中能够反映目前没有确定责任教师的课程信息。
select 姓名,职称,课程名称,课程性质from 教师 right join 课程on 教师.教师编号=课程.责任教师(25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师的教师信息,又能反映目前没有确定责任教师的课程信息select姓名,职称,课程名称,课程性质from教师full join课程on课程.责任教师=教师.教师编号(26)使用IN运算的简单嵌套查询。
select 教师.姓名from 教师where 教师.教师编号 in (select 课程.责任教师from 课程where 课程性质='专业基础')(27)使用NOT IN运算的简单嵌套查询select 教师.姓名from 教师where 教师.教师编号 not in ( select 课程.责任教师from 课程where 课程性质='专业基础')(28)使用关系运算(如等于)的简单嵌套查询select 教师.姓名from 教师where 教师.教师编号=(select 课程.责任教师from 课程where 课程编号='02')(29)使用ANY或SOME的简单嵌套查询select姓名from教师where工资>=any(select工资from教师where教师编号=20118)select*from教师(30)使用ALL的简单嵌套查询。