数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
数据库原理及应用实验指导

数据库原理及应用实验指导数据库原理及应用实验指导一、实验目的:1. 了解数据库的基本概念和原理;2. 掌握SQL语言的基本使用和操作方法;3. 学会使用数据库管理系统进行数据库的创建、插入、查询、修改和删除等操作。
二、实验内容:本次实验将围绕数据库的原理及应用展开,包括数据库的基本概念、数据库的设计原则、数据库的范式理论、SQL语言基础、数据库管理系统的使用等内容。
通过实际操作,学生能够更深入地理解数据库的工作原理,并且掌握数据库的基本操作方法。
三、实验步骤:1. 数据库基本概念1.1 什么是数据库?数据库是指一个按照数据模型组织、描述和存储数据的计算机软件,具有较好的数据管理性能。
数据库是实现数据共享和数据集成、并进行数据分析和决策的重要工具。
1.2 数据库的分类根据数据模型的不同,数据库可以分为层次数据库、网状数据库和关系数据库等不同类型。
1.3 数据库的特点数据库具有数据的共享性、冗余性小、数据独立性、数据一致性、数据安全性和故障恢复等特点。
2. 数据库设计原则2.1 单一职责原则每个数据表应该有一个明确的用途,只负责存储某一类数据。
2.2 数据冗余原则尽量避免数据冗余,减少存储空间和数据更新时的复杂度。
2.3 数据库范式理论范式理论是数据库设计的基础,包括第一范式、第二范式、第三范式等。
通过标准化设计,可以减少数据冗余,提高数据库的性能和可维护性。
3. SQL语言基础3.1 SQL语言的基本介绍SQL是结构化查询语言的缩写,是一种用于数据库管理系统的查询和程序设计语言。
3.2 SQL语句的分类SQL语句可以分为数据定义语句(DDL)、数据操作语句(DML)和数据查询语句(DQL)等不同类型。
3.3 SQL语句的基本操作方法包括数据库的创建、数据表的创建、数据插入与删除、数据查询和更新等操作。
四、数据库管理系统的使用4.1 数据库管理系统的概念数据库管理系统是一种用于管理数据库的软件系统,包括数据库的创建、数据的插入、查询、更新和删除等操作。
数据库原理及应用实验教案

数据库原理及应用实验教案一、实验目的1. 理解数据库的基本概念,掌握数据库的基本操作。
2. 熟悉数据库管理系统,了解数据库设计原则。
3. 学会使用SQL语言进行数据的增、删、改、查等操作。
4. 掌握数据库的索引、视图和存储过程等高级功能。
5. 培养实际操作数据库的能力,提高解决实际问题的技能。
二、实验内容1. 数据库的创建与管理创建新数据库打开现有数据库数据库的备份与恢复2. 表的创建与管理表的创建表结构的修改表的删除表的数据插入、删除和修改3. SQL语言基础数据定义语句(CREATE、ALTER、DROP)数据查询语句(SELECT)数据操纵语句(INSERT、UPDATE、DELETE)数据控制语句(GRANT、REVOKE)4. 索引与约束索引的创建、修改和删除主键、外键的设置与维护唯一约束和检查约束的设置5. 视图与存储过程视图的创建、修改和删除存储过程的创建、修改和删除存储过程的调用三、实验环境1. 硬件环境:计算机实验室,每台计算机配备数据库管理系统软件。
2. 软件环境:数据库管理系统软件(如MySQL、Oracle、SQL Server 等),编程语言环境(如Python、Java等),文本编辑器或集成开发环境(如Visual Studio Code、Eclipse等)。
四、实验步骤1. 实验准备:安装并配置数据库管理系统软件,了解实验内容和要求。
2. 实验一:数据库的创建与管理创建一个名为“实验数据库”的新数据库。
打开已存在的数据库,进行备份和恢复操作。
3. 实验二:表的创建与管理创建一个名为“学生”的表,包括学号、姓名、年龄、性别等字段。
插入、删除和修改表中的数据。
4. 实验三:SQL语言基础使用SELECT语句查询学生表中的数据。
使用INSERT、UPDATE和DELETE语句操作学生表数据。
5. 实验四:索引与约束为学生表的学号字段创建索引。
设置主键、外键、唯一约束和检查约束。
实验四SELECT语句的使用

实验四 SELECT语句的使用实验目的:1、掌握SELECT语句的基本语法。
2、了解SELECT语句中各子句的作用和特点。
3、掌握SELECT语句的统计函数的作用和方法。
4、掌握子查询的用法。
5、掌握连接查询的用法。
实验准备:1、熟悉SELECT语句的基本语法格式。
2、了解SELECT语句的执行方法。
3、明确SELECT语句各子句的区别。
实验任务:内容一:SELECT语句的简单查询一、数据需求分析查询是对存储于Microsoft SQL Server 2000中的数据的请求,通过查询用户可以获得所需要的数据。
查询可以通过执行SELECT语句实现。
二、内容要点分析1、SELECT语句的基本语法格式:SELECT 字段列表[ INTO 新表 ]FROM 数据源[ WHERE 搜索条件 ][ GROUP BY 分组表达式 ][ HAVING 搜索表达式 ][ ORDER BY 排序表达式 [ ASC | DESC ] ]说明:SELECT子句:用于指定输出字段(必选)。
INTO子句:用于将查询结果存储到一个新的数据库表中。
FROM子句:用于指定查询的数据来源(必选)。
WHERE子句:用于指定对记录的查询条件。
GROUP BY子句:对查询到的记录进行分组。
HAVING子句:与GROUP BY子句一起使用,指定对分组后的记录的查询条件。
ORDER BY子句:对查询到的记录进行排序。
2、SELECT子句的用法(1)选取全部字段●除了使用“*”号外,还可在SELECT子句后面依次列出各个字段。
(2)选取部分字段●在SELECT子句后依次列出部分字段,并用英文逗号隔开。
(3)为结果集内的列指定别名●原字段名 AS 字段别名●字段别名 = 原字段名(4)消除结果集中取值重复的行●DISTINCT 字段名(加在有重复值的字段前面)(5)显示表中前面若干条记录●TOP N|TOP N PERCENT 字段列表3、WHERE<查询条件> 的用法(1)使用单一查询条件过滤记录(比较大小)<表达式><比较运算符><表达式>(2)确定查询条件范围列表达式 [NOT]BETWEEN 初始值 AND 终止值●范围运算符BETWEEN…AND…和NOT BETWEEN…AND…查询列值在(或不在)指定范围内的记录。
实验4--SQL语言--SELECT查询操作

实验4--SQL语言--SELECT查询操作实验4--SQL语言--SELECT查询操作1、基于?教学管理?数据库jxgl,试用SQL的查询语句表达下列查询。
(1)--检索年龄大于23的男学生的学号和姓名--select sno,sn from s where sex='男'and age > 23(2)--检索至少选修一门课程的女学生姓名--select sn from S,SCwhere sex='女' AND S.Sno=SC.Snogroup by S.Sn having count(*)>=1;(3)--检索王同学没有选修的课程的课程号--select cno from cwhere /doc/2c12171134.html,o not in(select cno from sc,swhere sc.sno=s.sno and sn like'王%')(4)--检索至少选修两门课程的学生学号--select distinct s.sno from s,scwhere sc.sno=s.snogroup by s.snohaving count(*)>=2;(5)--检索全部学生都选修的课程的课程号与课程名--select cno,cn from cwhere not exists(select*from swhere not exists(select*from scwhere s.sno=sc.sno and /doc/2c12171134.html,o=/doc /2c12171134.html,o))(6)--检索选修了所有3学分课程的学生学号和姓名--select distinct s.sno,s.sn from s,scwhere exists(select*from cwhere ct='3'and s.sno=sc.sno and /doc/2c12171134.html,o=/doc /2c12171134.html,o)2、基于“教学管理”数据库jxgl,试用SQL的查询语句表达下列查询。
实验四SQL语言——SELECT查询操作

基于数据库jxgl,使用SQL的查询语句。
3.实验预备知识
SQL是一种被称为结构化查询语言的通用数据库数据操作语言,T-SQL是唯一可以和SQL Server的数据库管理系统进行交互的语言。SELECT语句是DML中也是T-SQL中最重要的一条命令,是从数据库中获取信息的一个基本的语句。简单查询包括:1、SELECT语句的使用形式;2、WHERE子句的用法;3、GROUP BY与HAVING的使用;4、用ORDER子句为结果排序等。
实验内容
1、在SQL Server Management Studio的查询子窗口中创建数据库jxgl;
2、选择jxgl数据库,在SQL操作窗口中,创建Student、SC、Course、TeSQL的查询语句完成查询要求。
1.实验结果
完成查询要求
2.疑难与需解决的问题
怎么检索全部学生都选修的课程号
3.实验体会
多表查询比较复杂
教师评语及成绩
数据库*实验报告
实验项目名称:SQL语言——SELECT查询操作
成绩:
信息技术学院软件技术与数据库教研室
实验概述:对数据库进行查询操作
1.实验目的
了解查询的概念和方法;掌握SQL Server集成管理器查询子窗口中执行SELECT操作的方法;掌握SELECT语句在单表查询中得应用;掌握SELECT语句在多表查询中得应用;掌握SELECT语句在复杂查询中得使用方法。
数据库原理及应用实验指导实验SQL语言SELECT查询操作

实实验验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),FOREIGN 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语句——SELECT查询操作

实验报告【实验名称】SQL语言——SELECT查询操作姓名:学号:班级:日期:10月26日【实验目的】掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询。
2. 掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等。
【实验环境】SQL SERVER 2008【实验内容】针对SQL Server数据库设计各种单表查询语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。
理解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
2. 针对SQL Server数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。
【实验代码】--在选课系统下进行以下查询--单表查询SELECT *FROM StudentSELECT Sname,2014-SageFROM StudentSELECT Sname,'Year of Birth:',2014-Sage,LOWER (Sdept)FROM StudentSELECT Sname NAME,'Year of Birth:'BIRTH,2014-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT --改变查询结果的列标题FROM StudentSELECT DISTINCT Sno --去掉结果表中的重复行FROM SCSELECT Sname,Sdept,SageFROM StudentWHERE Sdept IN ('CS','MA','IS') --确定集合SELECT *FROM StudentWHERE Sno LIKE '1' --字符匹配SELECT Sname,Sno,SsexFROM StudentWHERE Sname LIKE '刘%'SELECT SnameFROM StudentWHERE Sname LIKE '李_'SELECT Sno,CnoFROM SCWHERE Grade IS NOT NULLSELECT Sno,Grade FROM SCWHERE Cno='3'ORDER BY Grade DESCSELECT COUNT(*)FROM StudentSELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*)>1--等值与非等值连接查询SELECT ,SnameFROM Student,SCWHERE = AND ='2'AND >90--自身连接SELECT ,FROM Course FIRST,Course SECOND WHERE =--外连接SELECT ,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUTER JOIN SC ON =--多表连接SELECT ,Sname,Cname,GradeFROM Student,SC,CourseWHERE = AND =--嵌套查询SELECT Sname,SageFROM StudentWHERE Sage<ANY(SELECT SageFROM StudentWHERE Sdept='CS') AND Sdept<>'CS'--集合查询SELECT SnoFROM SCWHERE Cno='1'UNIONSELECT SnoFROM SCWHERE Cno='2'--基于派生表的查询SELECT SnameFROM Student,(SELECT Sno FROM SC WHERE Cno='1')AS SC1 WHERE =【查询结果】【实验心得】数据查询是数据库的核心操作。
SQL语句——SELECT查询操作

实验报告【实验名称】SQL语言——SELECT查询操作姓名:学号:班级:日期:10月26日【实验目的】1.掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询。
2. 掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等。
【实验环境】SQL SERVER 2008【实验内容】1.针对SQL Server数据库设计各种单表查询语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。
理解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
2. 针对SQL Server数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。
【实验代码】--在选课系统下进行以下查询--单表查询SELECT *FROM StudentSELECT Sname,2014-SageFROM StudentSELECT Sname,'Year of Birth:',2014-Sage,LOWER (Sdept)FROM StudentSELECT Sname NAME,'Year of Birth:'BIRTH,2014-Sage BIRTHDAY,LOWER(Sdept)DEPARTMENT --改变查询结果的列标题FROM StudentSELECT DISTINCT Sno --去掉结果表中的重复行FROM SCSELECT Sname,Sdept,SageFROM StudentWHERE Sdept IN ('CS','MA','IS') --确定集合SELECT *FROM StudentWHERE Sno LIKE '201215121' --字符匹配SELECT Sname,Sno,SsexFROM StudentWHERE Sname LIKE '刘%'SELECT SnameFROM StudentWHERE Sname LIKE '李_'SELECT Sno,CnoFROM SCWHERE Grade IS NOT NULLSELECT Sno,GradeFROM SCWHERE Cno='3'ORDER BY Grade DESCSELECT COUNT(*)FROM StudentSELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*)>1--等值与非等值连接查询SELECT Student.Sno,SnameFROM Student,SCWHERE Student.Sno=SC.Sno AND o='2'AND SC.Grade>90 --自身连接SELECT o,SECOND.CpnoFROM Course FIRST,Course SECONDWHERE FIRST.Cpno=o--外连接SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno) --多表连接SELECT Student.Sno,Sname,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND o=o--嵌套查询SELECT Sname,SageFROM StudentWHERE Sage<ANY(SELECT SageFROM StudentWHERE Sdept='CS')AND Sdept<>'CS'--集合查询SELECT SnoFROM SCWHERE Cno='1'UNIONSELECT SnoFROM SCWHERE Cno='2'--基于派生表的查询SELECT SnameFROM Student,(SELECT Sno FROM SC WHERE Cno='1')AS SC1 WHERE Student.Sno=SC1.Sno【查询结果】【实验心得】数据查询是数据库的核心操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验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的学生的学号。
SELECT DISTINCT SnoFROM SCWHERE Grade>=90;这里使用了DISTINCT 短语,当一个学生有多门课程成绩大于等于90时,他的学号也只列一次。
执行结果如图4-1所示。
图4-1 在查询分析器中的查询执行情况[例2] 查年龄大于18,并不是信息系(IS )与数学系(MA )的学生的姓名和性别。
SELECT Sname,SsexFROM StudentWHERE Sage>18 AND Sdept NOT IN ('IS', 'MA');在企业管理器中的执行情况如图4-2所示。
图4-2 在企业管理器中的查询执行情况[说明](1)在企业管理器中打开子窗口的方法:先选中数据库→选中表→在任一表上,按鼠标右键→从快捷菜单中选择“打开表”→点击“返回所有行”子菜单项→在打开返回表内容的子窗口后,按企业管理器工具栏上的“SQL ”图标,即能把子窗口分为上下两部分,上面部分能输入不同的SQL 命令来执行,执行时按企业管理器工具栏上的“运行”图标即可;(2)限于篇幅,其它查询命令的执行窗口与运行情况类似于上两图,原则将实验4 SQL 语言——SELECT 查询操作3不再列出。
[例3] 查以”MIS_”开头,且倒数第二个汉字为“导”字的课程的详细情况。
SELECT * FROM CourseWHERE Cname LIKE ’MIS#_%导_’ ESCAPE ’#’;[例4] 查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno) /* 加DISTINCT 去掉重复值后计数 */FROM SC;[例5] 查询计算机系(CS )选修了2门及以上课程的学生的学号。
SELECT Student.SnoFROM Student,SCWHERE Sdept='CS' AND Student.Sno=SC.SnoGROUP BY Student.Sno HAVING COUNT(*)>=2;[例6] 查询Student 表与SC 表的广义笛卡尔积。
Select Student.*,SC.*From Student,SC;或 Select Student.*,SC.*From Student Cross Join SC;[例7] 查询Student 表与SC 表基于学号SNO 的等值连接。
Select *From Student,SCWHERE Student.Sno=SC.Sno;[例8] 查询Student 表与SC 表基于学号SNO 的自然连接。
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student, SC WHERE Student.Sno=SC.Sno;或 SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student INNER JOIN SC ON Student.Sno=SC.Sno;[例9] 查询课程之先修课的先修课(自身连接例)。
SELECT o, SECOND.PcnoFROM Course FIRST, Course SECONDWHERE FIRST.Pcno=o;我们为Course 表取两个别名FIRST 与SECOND ,这样就可以在SELECT 子句和WHERE 子句中的属性名前分别用这两个别名加以区分。
[例10] 查询学生及其课程、成绩等情况(不管是否选课,均需列出学生信息)。
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student Left Outer JOIN SC ON Student.Sno=SC.Sno;数据库原理与应用实验指导4[例11] 查询学生及其课程成绩与课程及其学生选修成绩的明细情况(要求学生与课程均需全部列出)。
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, o, Grade, cname, cpno, ccreditFROM Student Left Outer JOIN SC ON Student.Sno=SC.Sno Full Outer join Course on o=o;[例12] 查询性别为男、课程成绩及格的学生信息及课程号、成绩。
SELECT Student.*,Cno,GradeFROM STUDENT INNER JOIN ON Student.Sno=SC.SnoWHERE SSEX=’男’ AND GRADE >=60[例13] 查询与“钱横”在同一个系学习的学生信息。
SELECT * FROM StudentWHERE Sdept IN(SELECT SdeptFROM StudentWHERE Sname='钱横');或 SELECT * FROM StudentWHERE Sdept =( SELECT SdeptFROM StudentWHERE Sname='钱横'); -- 当子查询为单列单行值时可以用“=”或 SELECT S1.*FROM Student S1,Student S2WHERE S1.Sdept=S2.Sdept AND S2.Sname='钱横';一般来说,连接查询可以替换大多数的嵌套子查询。