版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三第三章章 关系数据库标准语言关系数据库标准语言SQL一、一、SQL语言概述语言概述SQLStructured Query Language 1974年由年由Boyce和和Chamberlin提出的。提出的。 1975年年1979年年IBM公司公司San Jose Research Laboratory研制出关系数据库管理系统原型研制出关系数据库管理系统原型System R,实现了,实现了SQL语言语言 1986年美国国家标准局的数据库委员会年美国国家标准局的数据库委员会X3H2批准了批准了SQL作为关系数据库语言的美国标准作为关系数据库语言的美国标准 1987年国际标准化组织(年国际标准化
2、组织(ISO)通过)通过SQL标准标准一、一、SQL语言概述语言概述特点特点SQL特点特点综合统一综合统一集数据定义语言、数据操纵语言、数据控制集数据定义语言、数据操纵语言、数据控制语言的功能于一体语言的功能于一体实体和实体之间的联系均用关系来表示,使实体和实体之间的联系均用关系来表示,使数据操作符统一。数据操作符统一。学院学院班级班级教研室教研室学生学生教师教师学院学院班级班级教研室教研室教研室教研室教师教师班级班级学生学生学生信息表(学生信息表(学号学号,姓名,性,姓名,性别,出生日期,家庭地址,所别,出生日期,家庭地址,所学专业,学专业,身份证号身份证号)班级(班级名称,班级人数)班级(
3、班级名称,班级人数)学生所在班级(学号,班级名学生所在班级(学号,班级名称)称)教师信息表(教师信息表(教工号教工号,姓名,姓名,性别,出生日期,家庭地址,性别,出生日期,家庭地址,所学专业,所学专业,身份证号身份证号)教研室信息表(教研室信息表(教研室名称教研室名称,教研室人数,教研室人数,学院名称学院名称)教师隶属教研室(教工号,教教师隶属教研室(教工号,教研室名称)研室名称)一、一、SQL语言概述语言概述SQL特点特点高高度度非非过过程程化化非关系数据模型面向过程,查询时必须指定非关系数据模型面向过程,查询时必须指定存取路径,而存取路径,而SQL语句只需要提语句只需要提“做什么做什么”而
4、而无须指明无须指明“怎么做怎么做”学院学院班级班级教研室教研室学生学生教师教师学院学院班级班级教研室教研室教研室教研室教师教师班级班级学生学生学生信息表(学生信息表(学号学号,姓名,性,姓名,性别,出生日期,家庭地址,所别,出生日期,家庭地址,所学专业,学专业,身份证号身份证号)班级(班级名称,班级人数)班级(班级名称,班级人数)学生所在班级(学号,班级名学生所在班级(学号,班级名称)称)教师信息表(教师信息表(教工号教工号,姓名,姓名,性别,出生日期,家庭地址,性别,出生日期,家庭地址,所学专业,所学专业,身份证号身份证号)教研室信息表(教研室信息表(教研室名称教研室名称,教研室人数,教研室
5、人数,学院名称学院名称)教师隶属教研室(教工号,教教师隶属教研室(教工号,教研室名称)研室名称)一、一、SQL语言概述语言概述SQL特点特点面向集合的操作方式面向集合的操作方式学院学院教研室教研室教师教师C1 C2 G1 G2 G3 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 学号学号*姓名姓名性别性别出生日期出生日期家庭地址家庭地址所学专业所学专业45020315李瑞新男1982.11.03辽宁鞍山信息管理45020101金名男1983.03.12四川成都计算机45030403王兵男1983.08.08辽宁盘锦信息管理46030117丁芳女1983.07.24辽宁大连电子商
6、务学生信息表学生信息表一、一、SQL语言概述语言概述SQL特点特点以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式自含式语言自含式语言嵌入式语言嵌入式语言语言简捷,易学易用语言简捷,易学易用一、一、SQL语言概述语言概述基本概念基本概念学生信息表(学生信息表(学号学号,姓名,性别,出生日期,姓名,性别,出生日期,家庭地址,所学专业,家庭地址,所学专业,身份证号,班级名称身份证号,班级名称)教师信息表(教师信息表(教工号教工号,姓名,性别,出生日期,姓名,性别,出生日期,家庭地址,所学专业,家庭地址,所学专业,身份证号,教研室名称身份证号,教研室名称)学生选课表(学生选课表(学号
7、,课程号学号,课程号,成绩),成绩)课程信息表(课程信息表(课程号课程号,课程名称,学时数,课程名称,学时数,学分数,上机时数,考试方式)学分数,上机时数,考试方式)学生信息表(学生信息表(学号学号,姓名,性别,姓名,性别,所学专业,所学专业,班级名称班级名称)教师信息表(教师信息表(教工号教工号,姓名),姓名)学生选课表(学生选课表(学号,课程号学号,课程号,姓名、课程名称,姓名、课程名称,成绩)成绩)应用应用1应用应用2应用应用3应用应用5应用应用4外模式外模式/模式映象模式映象内模式内模式数据库数据库内模式内模式/模式映象模式映象视图视图1视图视图2视图视图3视图视图4基本表基本表1基本
8、表基本表2基本表基本表3基本表基本表4SQL1SQL2SQL3SQL4SQL5SQL存储文件存储文件1 存储文件存储文件2一、一、SQL语言概述语言概述基本概念基本概念基本表基本表1(学生信息表学生信息表)基本表基本表3(学院信息表学院信息表)基本表基本表2(学生选课表学生选课表)基本表基本表4(课程信息表课程信息表)基本表基本表5(教师信息表教师信息表)存储文件存储文件1存储文件存储文件2内模式内模式(文件文件)模式模式(基本表基本表)视图视图1(选课名单选课名单)视图视图2(教师课表教师课表)SQL语句语句外模式外模式(视图视图)SQL语句语句SQL语句语句一、一、SQL语言概述语言概述基
9、本概念基本概念学号学号*课程号课程号*成绩成绩学号学号课程号课程号成绩成绩45020315010014502031501002450304030100145030403010034503040301004学生选课表学生选课表学号学号*姓名姓名班级名称班级名称学号学号姓名姓名班级名称班级名称0401001张明张明信息信息04-10401002李进李进信息信息05-20401003王山时王山时计算机计算机04-146030117贾航贾航计算机计算机05-2学生信息表学生信息表模式模式学号学号*姓名姓名课程号课程号*成绩成绩选课名单选课名单外模式外模式SQL语句语句学号学号*姓名姓名课程号课程号*成
10、绩成绩45020315王行王行0100145030403李利李利01001选课名单选课名单内模式内模式(文件文件)一、一、SQL语言概述语言概述基本概念基本概念基本表基本表本身独立存在的表本身独立存在的表一个关系对应一个表,一个关系对应一个表,一个表可以带若干索引一个表可以带若干索引视图视图虚表虚表从一个或几个基本表导出的表。本身不独立存从一个或几个基本表导出的表。本身不独立存储在数据库中,只存放导出的定义。储在数据库中,只存放导出的定义。存储文件存储文件内模式内模式一个表可以对应一个存储文件,若干个表也可一个表可以对应一个存储文件,若干个表也可以对应一个存储文件以对应一个存储文件二、数据定义
11、二、数据定义建立数据结构建立数据结构表的定义表的定义 创建表、删除表、修改表创建表、删除表、修改表视图的定义视图的定义 创建视图、删除视图创建视图、删除视图索引的定义索引的定义 创建索引、删除索引创建索引、删除索引二、数据定义二、数据定义基本表基本表定义表定义表CREATE TABLE CREATE TABLE (列级完整性约束列级完整性约束 , ,列级完整性约束列级完整性约束 , ) );学生信息表(学生信息表(学号学号,姓名,性别,出生日期,家庭地址,所学专业,姓名,性别,出生日期,家庭地址,所学专业,身份证号身份证号)CREATE TABLE student (sno char(10)
12、, CREATE TABLE student (sno char(10) , name char (8), name char (8), sex char(2), sex char(2), birthday date, birthday date, address varchar(100), address varchar(100), special varchar(30), special varchar(30), identify_card char(18) identify_card char(18)NOT NULL UNIQUENOT NULL UNIQUE例:例:二、数据定义二、数据
13、定义基本表基本表教工号教工号姓名姓名性别性别出生日期出生日期家庭地址家庭地址所学专业所学专业教师信息表教师信息表teacher_no char (10) not null uniqueteacher_no char (10) not null uniqueteacher_name varchar (8)teacher_name varchar (8)sex char (2)sex char (2)birthday datebirthday dateaddress varchar(100)address varchar(100)special varchar (40)special varcha
14、r (40)teacherteacher学号学号姓名姓名性别性别出生日期出生日期家庭地址家庭地址所学专业所学专业学生信息表学生信息表student_no char (10) not null uniquestudent_no char (10) not null uniquestudent_name varchar (8)student_name varchar (8)sex char (2)sex char (2)birthday datebirthday dateaddress varchar(100)address varchar(100)special varchar (40)spec
15、ial varchar (40)studentstudent二、数据定义二、数据定义基本表基本表课程号课程号课程名称课程名称学时数学时数学分数学分数上机时数上机时数考试方式考试方式课程信息表课程信息表course_no char (10) not null uniquecourse_no char (10) not null uniquecourse_name varchar (40)course_name varchar (40)period_hour decimal (2)period_hour decimal (2)credit decimal (3,1)credit decimal (
16、3,1)computer_hour decimal (2)computer_hour decimal (2)examine_form varchar (10)examine_form varchar (10)coursecourse学号学号课程号课程号成绩成绩学生选课信息表学生选课信息表student_no char (10) not nullstudent_no char (10) not nullcourse_no char (10) not nullcourse_no char (10) not nullgrade decimal (3)grade decimal (3)Student_
17、courseStudent_course二、数据定义二、数据定义基本表基本表常用数据类型:常用数据类型:二进制数值型:二进制数值型:SMALLINTSMALLINT,INTEGER INTEGER 或或 INTINT十进制数值型:十进制数值型:DECIMALDECIMAL(pp,qq),),NUMERICAL(p,q, FLOATNUMERICAL(p,q, FLOAT字符型:字符型:CHARTERCHARTER(n n)或)或 CHARCHAR(n n) VARCHARVARCHAR(n n)图形字符串型:图形字符串型:TRAPHICTRAPHIC(n n)VARGRAPHICVARGRAP
18、HIC(n n)日期时间型:日期时间型:DATE TIME TIMESTAMPDATE TIME TIMESTAMP二、数据定义二、数据定义基本表基本表修改基本表修改基本表ALTER TABLE ALTER TABLE ADDADD 完整性约束完整性约束 DROPDROP MODIFYMODIFY ;ALTER TABLE student ADD telphone varchar(18)ALTER TABLE student ADD telphone varchar(18);例:例:ALTER TABLE student DROP identify_unit varchar(50)ALTER
19、TABLE student DROP identify_unit varchar(50)ALTER TABLE student MODIFY special varchar(50)ALTER TABLE student MODIFY special varchar(50)二、数据定义二、数据定义基本表基本表删除基本表删除基本表DROP TABLE DROP TABLE ;CREATE TABLE student (sno char(10) not null, CREATE TABLE student (sno char(10) not null, name char (8), name cha
20、r (8), sex char(2), sex char(2), birthday date, birthday date, address varchar(100), address varchar(100), special varchar(30), special varchar(30), identify_card char(18), identify_card char(18), identify_unit varchar(100); identify_unit varchar(100);DORP TABLE student;DORP TABLE student;例:例:二、数据定义
21、二、数据定义索引索引建立索引建立索引CREATE UNIQUE CLUSTER INDES CREATE UNIQUE CLUSTER INDES ONON ( ,次序次序););UNIQUEUNIQUE:此索引的每一个索引值只对应唯一的数据记录:此索引的每一个索引值只对应唯一的数据记录CLUSTERCLUSTER:索引为聚簇索引:索引为聚簇索引索引项的顺序与表中记录的索引项的顺序与表中记录的物理顺序一致。物理顺序一致。注意:注意:1 1、一个基本表最多只能建立一个聚簇索引、一个基本表最多只能建立一个聚簇索引2 2、代价大、代价大二、数据定义二、数据定义索引索引例:例:CREATE UNIQU
22、E INDEX studno ON student(student_no);CREATE UNIQUE INDEX studno ON student(student_no DESC);CREATE UNIQUE INDEX sc ON student_course (student_no ASC, course_no DESC );三、查询三、查询SELECT ALLDISTINCTSELECT ALLDISTINCT,FROM FROM , WHERE WHERE GROUP BY GROUP BY HAVING HAVINGORDER BY ORDER BY ASC2 ASCDESCDE
23、SC;根据根据WHEREWHERE子句中的子句中的 ,从从FROMFROM子句所指定的基本表或视图中查子句所指定的基本表或视图中查找满足条件的元组,找满足条件的元组,按照按照SELECTSELECT子句中子句中 ,选出元组中,选出元组中的属性值的属性值, ,形成结果表形成结果表( (即查询表即查询表) )。查询结果可以按查询结果可以按GROUPGROUP子句中子句中 1进行分组进行分组查询结果可以按查询结果可以按ORDERORDER子句中子句中 2进行排序进行排序选择运算投影运算选择条件三、查询三、查询单表查询单表查询例:例:查询全体学生学号,姓名,所学专业查询全体学生学号,姓名,所学专业学号
24、,姓名,所学专业(学生信息表)学号,姓名,所学专业(学生信息表)Student_noStudent_namespecial040001李红李红信息专业信息专业040002王名王名信息专业信息专业040003刘丽刘丽信息专业信息专业040004张力张力信息专业信息专业040005武晓武晓信息专业信息专业040006黄平黄平信息专业信息专业A重要结论:重要结论:查询的结果仍然是一查询的结果仍然是一个表,我们称之为个表,我们称之为“查询表查询表”,得到的结果是记录的集合。得到的结果是记录的集合。SELECT *FROM student ;结果:查询全部学生的信息。结果:查询全部学生的信息。SELEC
25、T student_no, student_name, specialFROM student ;结果:查询全部学生的学生学号和姓名。结果:查询全部学生的学生学号和姓名。三、查询三、查询单表查询单表查询课程号,课程名称,学分,考试方式(课程信息)课程号,课程名称,学分,考试方式(课程信息)SELECT course_no, course_name, credit, examine_formFROM course ;课程号,课程名称,学分,学时数,周学时数,上机时数,考试方式(课程信息)课程号,课程名称,学分,学时数,周学时数,上机时数,考试方式(课程信息)SELECT course_no, c
26、ourse_name, credit, period_hour, week_hourse, computer_hour, examine_form FROM course ;课程号,课程名称,考试方式,学分,学时数,周学时数,上机时数,开课学期课程号,课程名称,考试方式,学分,学时数,周学时数,上机时数,开课学期(课程信息)(课程信息)SELECT * FROM course投影运算三、查询三、查询单表查询单表查询查询全部女生信息查询全部女生信息例:例:SELECT *FROM student WHERE sex=女女 ;查询查询“信息管理信息管理”专业全部女生信息专业全部女生信息SELECT
27、 *FROM student WHERE sex=女女 and special=信息管理信息管理;OR选择运算三、查询三、查询单表查询单表查询查询信息管理专业女生的学号和姓名查询信息管理专业女生的学号和姓名学号,姓名(学号,姓名( (所学专业(所学专业“信息管理信息管理” 性别性别“女女”)()(R) )SELECT student_no, student_name FROM studentWHERE special=信息管理信息管理 and sex=女女出生日期大于等于出生日期大于等于1983.01.01的信息管理专业的学生学号、姓名和的信息管理专业的学生学号、姓名和性别性别学号,姓名,性别
28、(学号,姓名,性别( (所学专业(所学专业“信息管理信息管理” 出生日期出生日期=“1983.01.01”)()(R) )SELECT student_no, student_name, sex FROM studentWHERE special=信息管理信息管理 and birthday=date(1983/01/01)选择投影混合运算三、查询三、查询单表查询单表查询查询选修了课程号为查询选修了课程号为“050101”且且把成绩除把成绩除3加加40的学生学号和计算后的成绩。的学生学号和计算后的成绩。SELECT student_no, (grade/3+40)FROM student_cou
29、rseWHERE course_no=“050101”查询学生的学号和年龄查询学生的学号和年龄SELECT student_no, year(Date()-SELECT student_no, year(Date()-year(birthday)year(birthday)查询经过计算的值三、查询三、查询单表查询单表查询查询选修了课程的学生学号。查询选修了课程的学生学号。Student_noCourse_namegrade040001C语言语言040001数据库数据库040001计算机计算机040002C语言语言040002数据库数据库040002计算机计算机Student_courseStu
30、dent_no040001040001040001040002040002040002SELECT student_no FROM student_courseSELECT student_no FROM student_courseStudent_no040001040002SELECT DISTINCT student_no FROM student_course去掉重复的元组三、查询三、查询单表查询单表查询查询选修了查询选修了“050102”课程且成绩小于课程且成绩小于60的学生学号。的学生学号。Select student_noFrom student_courseWhere cour
31、se_no=“050102” and grade60查询成绩在查询成绩在6060到到7070分的学生学号。分的学生学号。Select student_noFrom student_courseWhere course_no between 60 and 70distinct比较运算确定范围运算三、查询三、查询单表查询单表查询查询选修了课程号为查询选修了课程号为“050001”050001”、“050002”050002”、“050003”050003”的学生学号的学生学号Select student_noFrom student_courseWhere course_no IN ( 05000
32、1, 050002, 050003)Select DISTINCT student_noFrom student_courseWhere course_no IN ( 050001, 050002, 050003)确定集合范围三、查询三、查询单表查询单表查询查询课程名称中含有查询课程名称中含有“语言语言”二字的课程信息二字的课程信息Select *From courseWhere course_name LIKE %语言语言%LIKE、NOT LIKE%,_NOT LIKE ESCAPE DB_%i_ ESCAPE ;表示以表示以DB_ 开头,且倒数开头,且倒数第第3个字母为个字母为i字符匹配
33、三、查询三、查询单表查询单表查询查询学生选课中没有成绩的学生学号和课程号。查询学生选课中没有成绩的学生学号和课程号。Select student_no,course_noFrom student_courseWhere grade IS NULL注意:空值注意:空值 空格空格空值查询三、查询三、查询单表查询单表查询查询选修课程号为查询选修课程号为”050001”050001”的学生学号及成绩的学生学号及成绩并按成绩的降序排序并按成绩的降序排序Select student_no, gradeFrom student_courseWhere course_no=“050001”Select stu
34、dent_no, gradeFrom student_courseWhere course_no=“050001”Order by grade DESC查询结果排序三、查询三、查询单表查询单表查询查询选修了课程号为查询选修了课程号为“050001”的学生平均成绩的学生平均成绩Select avg(grade)From student_courseWhere course_no=050001Select max(grade)From student_courseWhere course_no=050001查询选修了课程号为查询选修了课程号为“050001”的学生最高成绩的学生最高成绩使用集合函数
35、三、查询三、查询单表查询单表查询COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL )SUM(DISTINCT|ALL )AVG (DISTINCT|ALL )MAX (DISTINCT|ALL )MIN (DISTINCT|ALL )常用集合函数常用集合函数三、查询三、查询单表查询单表查询求选修了课程的学生的学生学号和总分求选修了课程的学生的学生学号和总分Student_noCourse_namegrade040001C语言语言89040001数据库数据库77040001计算机计算机91040002C语言语言67040002数据库数据库72040002计算机计算机7
36、8Student_course学号为学号为“040001”的学生选了的学生选了3门门课,总分为:课,总分为:89+77+91=257学号为学号为“040002”的学生选了的学生选了3门门课,总分为:课,总分为:67+72+78=217Select student_no, sum (grade)From student_courseGroup by student_no查询结果分组三、查询三、查询单表查询单表查询按学号分组结果按学号分组结果 SQLSQL的单表数据查询练习的单表数据查询练习学生信息表(学生信息表(学号学号,姓名,性别,出生日期,家庭地址,所学专业,身份证号,班级名称),姓名,性别
37、,出生日期,家庭地址,所学专业,身份证号,班级名称)Student(student_no,student_name, sex, brithday, family_address, special, identify, class_name)教师信息表(教师信息表(教工号教工号,姓名,性别,出生日期,家庭地址,所学专业,身份证号,教研室名称),姓名,性别,出生日期,家庭地址,所学专业,身份证号,教研室名称)Teacher(teacher_no, name, sex, birthday, family_address, special, identify, staff)课程信息表(课程信息表(课程
38、号课程号,课程名称,学时数,学分数,上机时数,考试方式),课程名称,学时数,学分数,上机时数,考试方式)Course(course_no, course_name, periode_hour, credit, computer_hour, examine_form)学生选课表(学生选课表(学号,课程号学号,课程号,成绩),成绩)Student_course(student_no, course_no, grade)1、求、求“信息管理信息管理”专业的学生学号,姓名,性别专业的学生学号,姓名,性别2、求家庭地址是、求家庭地址是“辽宁辽宁”的学生学号,姓名,性别的学生学号,姓名,性别3、求学分数大
39、于、求学分数大于3的课程号,课程名称,考试方式的课程号,课程名称,考试方式4、求上机时数不为空的课程信息、求上机时数不为空的课程信息5、求上机时数在、求上机时数在20到到40之间的课程名称、学时数、上机时数之间的课程名称、学时数、上机时数6、求成绩在、求成绩在70到到80之间的学生学号之间的学生学号7、求、求“信息管理信息管理”专业且家庭地址是专业且家庭地址是“辽宁辽宁”的学生人数的学生人数8、求姓刘的教师信息、求姓刘的教师信息9、在教师信息表中增加一、在教师信息表中增加一个个“联系电话联系电话”。10、将家庭地址属性长度修、将家庭地址属性长度修改为改为200。11、建立一个教师任课信息、建立
40、一个教师任课信息表(教工号,课程号)表(教工号,课程号)三、查询三、查询连接查询连接查询Select aa.*, bb.*From aa,bb;广义笛卡尔积广义笛卡尔积(两个表的广义笛卡尔积(两个表的广义笛卡尔积两个表中元组的交叉乘积)两个表中元组的交叉乘积)三、查询三、查询连接查询连接查询等值连接等值连接Select aa.*, bb.*From aa,bbWhere aa.a1=bb.a4连接条件或连接谓词的一般格式:连接条件或连接谓词的一般格式:. . = = = = != 三、查询三、查询连接查询连接查询自然连接自然连接Select aa.a1, aa.a2, aa.a3, bb.a5
41、, bb.a6From aa, bbWhere aa.a1=bb.a1去掉相同字段名的等值连接去掉相同字段名的等值连接三、查询三、查询对比对比等值连接和自然连接等值连接和自然连接三、查询三、查询连接查询连接查询自身连接自身连接求每门课的课号,先行课号,及先行课的学时数求每门课的课号,先行课号,及先行课的学时数Select c1.course_no, c1.pre_course_no, c2.course_hour From aa c1, aa c2Where c1.pre_course_no=c2.course_no三、查询三、查询连接查询连接查询外连接外连接S_noS_namespecial
42、040001李红李红信息专业信息专业040002王名王名信息专业信息专业040003刘丽刘丽信息专业信息专业040004张力张力信息专业信息专业studentS_noC_namegrade040001C语言语言89040001数据库数据库77040001计算机计算机91040002C语言语言67040002数据库数据库72040002计算机计算机78Student_course查询学生基本信息查询学生基本信息及其选课的成绩及其选课的成绩S_noS_namespecialC_namegrade040001李红李红信息专业信息专业C语言语言89040001李红李红信息专业信息专业数据库数据库770
43、40001李红李红信息专业信息专业计算机计算机91040002王名王名信息专业信息专业C语言语言67040002王名王名信息专业信息专业数据库数据库72040002王名王名信息专业信息专业计算机计算机78040003刘丽刘丽信息专业信息专业040004张力张力信息专业信息专业Select student.s_no, s_name, special, c_name, gradeFrom student, student_courseWhere student.s_no=student_course.s_no(*)三、查询三、查询连接查询连接查询复合条件连接复合条件连接求学号为求学号为“04000
44、1”的学生所选修课程的课程名称的学生所选修课程的课程名称Course(course_no, course_name, periode_hour, credit)Student_course(student_no, course_no, grade)Select course_nameFrom course, student_courseWhere student_course.course_no=course.course_no and student_no=040001三、查询三、查询连接查询连接查询多表连接多表连接求姓名为求姓名为“林红林红”的学生所选修课程的课程名称的学生所选修课程的课程
45、名称Student(student_no, name, sex, special)Course(course_no, course_name, periode_hour, credit)Student_course(student_no, course_no, grade)Select course_nameFrom course, student_course, studentWhere student.student_no=student_course.student_no and student_course.course_no=course.course_no and student_
46、name=林红林红三、查询三、查询嵌套查询嵌套查询求学号为求学号为“040001”的学生所选修课程的课程名称的学生所选修课程的课程名称Course(course_no, course_name, periode_hour, credit)Student_course(student_no, course_no, grade)Select course_nameFrom course, student_courseWhere student_course.course_no=course.course_no and student_no=040001Select course_nameFrom
47、courseWhere course_no IN Select course_no From student_course Where student_no=040001三、查询三、查询嵌套查询嵌套查询求姓名为求姓名为“林红林红”的学生所选修课程的课程名称的学生所选修课程的课程名称Student(student_no, name, sex, special)Course(course_no, course_name, periode_hour, credit)Student_course(student_no, course_no, grade)Select course_nameFrom c
48、ourse, student_courseWhere student.student_no=student_course.student_no and student_course.course_no=course.course_no and student_name=林红林红Select course_nameFrom courseWhere course_no In Select course_noFrom student_courseWhere student_no In Select student_noFrom studentWhere student_name=林红林红三、查询三、
49、查询嵌套查询嵌套查询求与求与“林红林红”在一个专业的学生学号、姓名、性别在一个专业的学生学号、姓名、性别Select student_no, name,sexFrom studentWhere specialIn Select specialFrom studentWhere name=“林红林红”Student(student_no, name, sex, special)Course(course_no, course_name, periode_hour, credit)Student_course(student_no, course_no, grade)三、查询三、查询带有比较运算符
50、的查询带有比较运算符的查询 = = !=求求“林红林红”学生所选修课程的课程号学生所选修课程的课程号Student(student_no, name, sex, special)Student_course(student_no, course_no, grade)Select course_noFrom courseWhere student_no= Select studnet_noFrom studentWhere student_name=林红林红注意:注意:1、使用该方式查询的条件是不能有重名,必须保证查询结果是惟一的、使用该方式查询的条件是不能有重名,必须保证查询结果是惟一的2、子
51、查询必须跟在比较符之后、子查询必须跟在比较符之后三、查询三、查询带有带有ANYANY或或ALLALL的查询的查询求比学号为求比学号为“040001”040001”的学生所有成绩低的学生学号的学生所有成绩低的学生学号Select student_noFrom student_courseWhere grade ALL ( select grade from studnet_course where student_no=040001)求比学号为求比学号为“040001”040001”的学生某一个成绩低的学生学号的学生某一个成绩低的学生学号Select student_noFrom student
52、_courseWhere grade ANY ANY 大于查询结果中的某个值大于查询结果中的某个值ALL ALL 大于查询结果中的所有值大于查询结果中的所有值ANY ANY 小于查询结果中的某个值小于查询结果中的某个值ALL ALL 小于查询结果中的所有值小于查询结果中的所有值=ANY =ANY 等于查询结果中的某个值等于查询结果中的某个值=ALL =ALL 等于查询结果中的所有值等于查询结果中的所有值三、查询三、查询带有带有EXISTSEXISTS谓词的查询(存在量词的查询)谓词的查询(存在量词的查询)求学号为求学号为“040001”040001”的学生所选修课程的课程名称的学生所选修课程的
53、课程名称和学分和学分Select course_name,creditFrom courseWhere exists (select * from student_course where course_no=course.course_no and student_no=“040001”三、查询三、查询带有带有EXISTSEXISTS谓词的查询(存在量词的查询)谓词的查询(存在量词的查询)C_noC_namecredit040001C语言语言4040002数据库数据库4040003计算机计算机4040004管理学管理学3courseS_noC_nograde04000104000189040
54、0010400027704000104000391040002040001670400020400027204000204000378Student_courseC_namecreditSelect c_name, creditFrom courseWhere exists (select * from student_course where c_no=course.course.c_no and s_no=“040001”C语言语言4数据库数据库4计算机计算机4若内层查询结果非空若内层查询结果非空 则则 外层外层WHEREWHERE子句返回真值,子句返回真值,否则否则 返回假值返回假值由由
55、EXISTSEXISTS引出的子查询,其目标列引出的子查询,其目标列表达式通常都用表达式通常都用* *,因为它返回真,因为它返回真假值,给出列无实际意义。假值,给出列无实际意义。三、查询三、查询求学号为求学号为“040001”040001”的学生所选修课程的课程名称的学生所选修课程的课程名称Select course_nameSelect course_nameFrom course, student_courseFrom course, student_courseWhere student_course.course_no=course.course_no Where student_co
56、urse.course_no=course.course_no and student_no=040001 and student_no=040001Select course_nameSelect course_nameFrom courseFrom courseWhere existsWhere exists (select (select * * from student_course from student_course where course_no=course.course.course_no where course_no=course.course.course_no an
57、d student_no=“040001” and student_no=“040001”Select course_nameSelect course_nameFrom courseFrom courseWhere course_no InWhere course_no In Select course_no Select course_no From student_course From student_course Where student_no=040001 Where student_no=040001三、查询三、查询集合查询集合查询“信息管理信息管理”专业或性别为专业或性别为“
58、女女”的学生信息的学生信息Select *From studentWhere special=信息管理信息管理UnionSelect *From studentWhere sex=女女Select distinct *From studentWhere special=信息管理信息管理 or sex=女女SQLSQL的多表数据查询练习的多表数据查询练习1、班级名称是、班级名称是“04信息信息1班班”年龄大于年龄大于21的学生信息的学生信息2、学时数大于等于、学时数大于等于60且考试方式为且考试方式为“考查考查”的课程信息的课程信息3、学号为、学号为“040001”的学生所选修课程的课程号的学生
59、所选修课程的课程号4、学号为、学号为“040001”的学生所选修课程的全部课程信息的学生所选修课程的全部课程信息5、学号为、学号为“040001”的学生所选修课程的课程号,课程名称,学分数的学生所选修课程的课程号,课程名称,学分数6、求、求“信息管理信息管理”教研室所上的课的课程号,课程名称教研室所上的课的课程号,课程名称7、求学分数为、求学分数为4的所有学生的学号,成绩的所有学生的学号,成绩8、求班级名称为、求班级名称为“04001”的学生学号,姓名,所选课程的课程号,成绩的学生学号,姓名,所选课程的课程号,成绩学生信息表(学生信息表(学号学号,姓名,性别,出生日期,家庭地址,所学专业,身份
60、证号,班级名称),姓名,性别,出生日期,家庭地址,所学专业,身份证号,班级名称)Student(student_no,student_name, sex, brithday, family_address, special, identify, class_name)教师信息表(教师信息表(教工号教工号,姓名,性别,出生日期,家庭地址,所学专业,身份证号,教研室名称),姓名,性别,出生日期,家庭地址,所学专业,身份证号,教研室名称)Teacher(teacher_no, name, sex, birthday, family_address, special, identify, staff)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025杭州电子科技大学教师招聘考试题目及答案
- 2025抚顺师范高等专科学校教师招聘考试题目及答案
- 2026年江西PHP复习题核心及答案
- 罗城教师招聘考试试题及答案
- 2026湖北武汉人才服务发展有限公司招聘西药师派往江岸区某社区卫生服务中心招聘1人建设笔试参考题库及答案解析
- 2026江苏徐州市中医院招聘非在编人员106人建设笔试参考题库及答案解析
- 2026湖北咸宁市嘉鱼县教师招聘48人建设笔试模拟试题及答案解析
- 2026南平工业园区开发建设有限公司 工作人员招聘1人建设笔试备考试题及答案解析
- 2026年河南推拿职学院招聘人事代理工作人员4名建设考试备考题库及答案解析
- 2026武汉工程大学招聘非事业编制工作人员1人(二)建设笔试备考题库及答案解析
- 2025重庆市属事业单位第四季度招聘工作人员335人笔试考试备考试题及答案解析
- 2025年少先队辅导员技能大赛考试基础知识测试题附参考答案(共三套)
- 埃安购车销售合同范本
- 线束基础知识培训计划课件
- 水利施工安全管理制度
- 盾构机司机安全培训课件
- 高校劳动教育课题申报书
- 自来水厂安全生产题库及答案解析
- 锻造加热工作业指导书
- GB/T 45903.2-2025船舶与海上技术引航员软梯第2部分:维护、使用、勘测和检查
- 植筋工程施工验收记录表范例
评论
0/150
提交评论