版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13讲数据怎样管理-数据库哈尔滨工业大学计算学部教学委员会主任国家教学名师战德臣第13讲数据怎样管理-数据库一、什么是数据库与数据库系统二、关系模型与关系运算三、利用关系运算表达数据查询需求传统社会:业务工作信息社会:业务工作+计算机支持网络/Internet
数据库EverythingOverDBEverythingWithInternet什么是数据库与数据库系统为什么需要数据库--工作方式的转变不要相信经验,一切以数据说话什么是数据库?什么是数据库与数据库系统各式各样的数据库学生成绩单关系数据库工程数据库图像数据库网页数据库文档数据库
结构化数据库
【如:关系数据库】半结构化数据库
【如:文档数据库/XML数据库】非结构化数据库
【如:图像数据库/工程数据库】以表达数据的模型来分类关于数据库,你的认识是_______。数据库指的是数据的集合A数据库指的是管理数据的一种软件B数据库既指数据的集合,又指管理数据的软件C数据库是一种包含软件和数据的一种应用系统D提交投票最多可选1项数据库系统(工作环境)数据库(DB):Database数据库管理系统(DBMS):DatabaseManagementSystem数据库应用(DBAP):DataBaseApplication数据库管理员(DBA):DataBaseAdministrator计算机基本系统DBMS管理数据库的一种系统软件DBA完成某一功能的应用程序1应用程序2应用程序nDBAP1DBAP2DBAPn相互有关联关系的表形式数据的集合数据库//Database什么是数据库与数据库系统数据库系统的构成DBMSOracle或SQLServer或DB2或PolarDB或MySQL或GaussDBDBATable1:出版社T2:出版社图书目录T3:采买记录T4:图书;T5:读者T6:借阅登记T7:工作人员数据库//Database图书采买管理程序图书借阅管理程序读者管理程序DBAP1DBAP3DBAPn采买员借还管理员借书证管理员图书编目管理程序DBAP2编目员DBMS如何支持用户操纵数据库?关于数据库系统和数据库管理系统,下列说法正确的是___。数据库系统和数据库管理系统指的是同一软件产品;A数据库系统和数据库管理系统指的是不同软件产品;B数据库管理系统是软件产品,而数据库系统不仅仅是软件产品;C数据库系统是软件产品,而数据库管理系统不仅仅是软件产品。D提交单选题1分学生成绩单表名表标题(格式)表内容(值)列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)关系模式表/关系数据库起源于规范化“表(Table)”的处理Table:以按行按列形式组织及展现的数据。什么是数据库与数据库系统基本形式的数据:“表”和“关系”这组概念很重要,要熟悉并记住表名表标题(格式)数据库定义:定义数据库中数据表的名称、标题(内含的属性名称及对该属性的值的要求)等。
DBMS提供一套数据定义语言(DDL:DataDefinitionLanguage)给用户用户使用DDL描述其所要建立表的格式
DBMS依照用户的定义,创建数据库及其中的Table用户DBAPDBMS1.执行定义操作,创建数据库数据库什么是数据库与数据库系统数据库管理系统的基本功能数据库操纵:向数据库的Table中增加/删除/更新数据及对数据进行查询、检索、统计等
DBMS提供一套数据操纵语言(DML:DataManipulationLanguage)给用户用户使用DML描述其所要进行的增、删、改、查等操作
DBMS依照用户的操作描述,实际执行这些操作用户DBAPDBMS2.对表的内容执行增加、删除、更新、检索等操作数据库什么是数据库与数据库系统数据库管理系统的基本功能数据库控制:控制数据库中数据的使用---哪些用户可以使用,哪些不可以
DBMS提供一套数据控制语言(DCL:DataControlLanguage)给用户用户使用DCL描述其对数据库所要实施的控制
DBMS依照用户的描述,实际进行控制用户DBAPDBMS3.依照定义信息,对数据库的使用实施控制数据库数据安全性完整性定义信息谁,能访问哪些数据,权利DBADBMS定义控制信息什么是数据库与数据库系统数据库管理系统的基本功能数据库维护:转储/恢复/重组/性能监测/分析…DBMS提供一系列程序(实用程序/例行程序)
给用户在这些程序中提供了对数据库维护的各种功能用户使用这些程序进行各种数据库维护操作数据库维护的实用程序,一般都是由数据库管理员(DBA)来使用和掌握的用户DBAPDBMS4.数据库维护,如转储…数据库DBA什么是数据库与数据库系统数据库管理系统的基本功能用于对表中数据增、删、改进行表述的语言是
(L1);用于对表的格式进行描述的语言是(L2);用于对数据库能否被用户读写进行审查的语言是(L3)。
则下列说法正确的是_____。L1是DDL,L2是DML,L3是DCLAL1是DML,L2是DCL,L3是DDLBL1是DML,L2是DDL,L3是DCLCL1是DCL,L2是DDL,L3是DMLD提交单选题1分第13讲数据怎样管理-数据库一、什么是数据库与数据库系统二、关系模型与关系运算三、利用关系运算表达数据查询需求怎样把一张【表】定义清楚呢?2.【值域】(Domain)说清楚每一列数据可能的取值1.指出有多少【列】4.指出所有可能的元组—【笛卡尔积】值域中值的所有可能的组合--笛卡尔积关系中元组是有意义的组合,即这种组合具有“关系”----笛卡尔积的子集5.指出关系中的元组--【关系】关系模型与关系运算如何用数学来定义【表】呢?3.指出什么是一个【元组】元组是从每个值域中取一个值所形成的一个组合,即一行首先定义“列”的取值范围“域(Domain)”域(Domain)一组值的集合,这组值具有相同的数据类型如整数的集合、字符串的集合、全体学生的集合再如,由8位数字组成的数字串的集合,由0到100组成的整数集合集合中元素的个数称为域的基数(Cardinality)D1=男人集合(MAN)={李基,张鹏}D2=女人集合(WOMAN)={王芳,刘玉}D3=儿童集合(CHILD)={李健,张睿,张峰}关系模型与关系运算如何用数学来定义关系呢?再定义“元组”及所有可能组合成的元组:笛卡尔积笛卡尔积(CartesianProduct)一组域D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)D1=男人D2=女人D3=儿童{李基,张鹏}{王芳,刘玉}{李健,张睿,张峰}关系模型与关系运算如何用数学来定义关系呢?由于笛卡尔积中的所有元组并不都是有意义的,因此…关系(Relation)一组域D1,D2,…,Dn的笛卡尔积的子集:笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名。不同列名的列值可以来自相同域。例如:家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)列名(属性名)列值:来自域关系模型与关系运算如何用数学来定义关系呢?列是同质的(Homogeneous),即每一列中的分量是同一类型数据,来自同一个域不同的列可出自同一个域,每一列称为属性,要给予不同的属性名列的顺序可以任意交换,行的顺序也可以任意交换任意两个元组不能完全相同每一分量必须是不可分的数据项丈夫 妻子 孩子 第一个第二个李基 王芳 李健 张鹏 刘玉 张睿 张峰981101数据库01张三100981101数据库02张四90981101数据库03张五80981101计算机01张三89981101计算机02张四98981101计算机03张五72981102数据库01王三30981102数据库02王四90981102数据库03王武78学生成绩单班级课程学号姓名成绩关系模型与关系运算关系有什么性质?前文讲述中,“家庭(丈夫:男人,妻子:女人,子女:儿童)”,其中的“男人”“女人”“儿童”指的是下列哪种概念,正确的是_______属性A特性B域C类型D提交单选题1分关系的定义中有很多术语,下列表述正确的是_______【字段】指的是“行”,而【元组】指的是“列”A【字段】指的是“行”,而【记录】指的是“行”B【字段】指的是“列”,而【元组】指的是“行”C【元组】指的是“列”,而【记录】指的是“行”D提交单选题1分已知三个域:男人={李基,张鹏},女人={王方,刘玉},子女={李键,张睿,张峰}。这一组域(男人,女人,子女)的笛卡尔积的基数为_______27A9B7C12D提交单选题1分关于关系模式与关系,说法不正确的是_______同一关系模式下,可有很多的关系A关系模式是关系的结构,关系是关系模式在某一时刻的数据B关系模式是稳定的;同一关系模式下,只有一种关系C关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的D提交单选题1分关于关系的特性,说法不正确的是______关系的任意两个元组不能完全相同A关系的任意两列上不能完全相同B元组相同是指两个元组的每个分量都相同C在同一个关系中如存在相同的元组,则仅保留其中的一个D提交单选题1分下列四项中说法正确的是_______关系模式和关系都是不随时间变化的AR(A1,A2,…,An),这种描述又被称为关系模式,其中Ai是指属性所对应的域B关系的任何属性都是不可再分的C同一关系模式下关系是唯一的D提交单选题1分候选码(CandidateKey)/候选键关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。一个关系,当有若干候选码时,可选择一个候选码作为主码(PrimaryKey)/主键学生(S#,Sname,Sage,Sclass)课程(C#,Cname,Credit,T#)关系模型与关系运算【候选键/候选码/主键/主码】外码(ForeignKey)/外键关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。外码是两个关系(数据表)的连接纽带外码主码主码两个关系可以靠外码联接起来关系模型与关系运算【外键/外码】某关系R的外键是指______是其它关系的候选键,本关系中其值是唯一的
A是该关系除主键之外的另一个候选键B是其它关系的候选键,本关系中其值不一定是唯一的
C是其它关系的任意属性D提交单选题1分若某属性非该关系的主键,却是另外一个关系的主键,则该属性称为_______候选键A外键B索引键C主码D提交单选题1分有哪些运算?并:RS差:RS积:RS选择:
(R)投影:(R)连接:RS交:RS关系模型与关系运算什么是关系运算?并(Union)R
S
定义:设关系R和关系S是并相容的(即:属性数目相同,其对应的域也相同),则关系R与关系S的并运算结果也是一个关系,记作:R∪S,它由或者出现在关系R中,或者出现在S中的元组构成数学描述:R
S={t|t
RtS},其中t是元组
R∪S与S∪R运算的结果是同一个关系RS关系模型与关系运算什么情况用并运算呢?R(参加体育队的学生)S(参加文艺队的学生)R∪S(或者参加体育队或者文艺队的学生)并(Union)关系模型与关系运算什么情况用并运算呢?
定义:假设关系R和关系S是并相容的,则关系R与关系S的差运算结果也是一个关系,记作:R
S,它由出现在关系R中但不出现在关系S中的元组构成
数学描述:R
S={t|t
R
t
S}
,其中t是元组注意:R
S与S
R是不同的RSR
SRSS
R差(Difference)关系模型与关系运算什么情况用差运算呢?R(参加体育队的学生)S(参加文艺队的学生)R-S(参加体育队而未参加文艺队的学生)S-R(参加文艺队而未参加体育队的学生)差(Difference)关系模型与关系运算什么情况用差运算呢?
定义:假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也是一个关系,记作:R∩S,它由同时出现在关系R和关系S中的元组构成
数学描述:R
S={t|t
R
t
S}
,其中t是元组
R∩S和S∩R运算的结果是同一个关系交运算可以通过差运算来实现:
R
S=R
(R
S)=S
(S
R)RSR
S交(Intersection)关系模型与关系运算什么情况用交运算呢?交(Intersection)R(参加体育队的学生)S(参加文艺队的学生)R∩S(既参加体育队又参加文艺队的学生)关系模型与关系运算什么情况用交运算呢?
定义:关系R(<a1,
a2,…,an>)与关系S(<b1,b2,…,bm>)的广义笛卡尔积(简称广义积)运算结果也是一个关系,记作:RxS,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成。
笛卡尔积可将两个表串接起来作为一个表进行操作
数学描述:Rx
S={<a1,
a2,…,an,b1,b2,…,bm>|<a1,
a2,…,an>
R
<b1,b2,…,bm>
S}广义笛卡尔积(CartesianProduct)关系模型与关系运算什么情况用笛卡尔积运算呢?广义笛卡尔积(CartesianProduct)关系模型与关系运算什么情况用笛卡尔积运算呢?
定义:给定一个关系R,同时给定一个选择的条件condition(简记con),选择运算结果也是一个关系,记作
con(R)
,它从关系R中选择出满足给定条件condition的元组构成数学描述:
con(R)={t|tR
con(t)=‘真’}
,
设R(A1,A2,…,An),t是R的元组,t的分量记为t[Ai],或简写为Ai
条件con由逻辑运算符连接算术/比较表达式组成逻辑运算符:,,或写为and,or,not
算术/比较表达式:XY,其中X,Y是t的分量、常量或简单函数,
是比较运算符,{,,,,,≠}选择(Selection)关系模型与关系运算什么情况用选择运算呢?选择(Selection)R(学生表)
Sage<20(R)查询所有年龄小于20同学的信息
D#=“03”νD#=“05”(R)查询所有3系或5系的同学信息关系模型与关系运算什么情况用选择运算呢?
定义:给定一个关系R,投影运算结果也是一个关系,记作
A(R)
,它从关系R中选出属性包含在A中的列构成数学描述:
Ai1,Ai2,…,Aik(R)={<t[Ai1],t[Ai2],…,t[Aik]>|tR}
设R(A1,A2
,…,An){Ai1,Ai2,…,Aik
}
{A1,A2
,…,An
}t[Ai]表示元组t中相应于属性Ai的分量投影运算可以对原关系的列在投影后重新排列投影(Projection)关系模型与关系运算什么情况用投影运算呢?投影(Projection)R(学生表)
Sname,Sage(R)查询所有学生的姓名和年龄
Sname,D#(R)查询所有学生的姓名及其所在的系关系模型与关系运算什么情况用投影运算呢?
定义:给定关系R和关系S,R与S的
连接运算结果也是一个关系,记作,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B之间满足
条件的元组构成。数学描述:
设R(A1,A2
,…,An),A
{A1,A2
,…,An
}
S(B1,B2
,…,Bm),B
{B1,B2
,…,Bm
}t是关系R中的元组,s是关系S中的元组属性A和属性B具有可比性
是比较运算符,{,,,,,≠}在实际应用中,
-连接操作经常与投影、选择操作一起使用
-连接(
-Join)关系模型与关系运算什么情况用连接运算呢?
定义:给定关系R和关系S,R与S的自然连接运算结果也是一个关系,记作,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。数学描述:
自然连接是一种特殊的连接运算要求关系R和关系S必须有相同的属性组B(如R,S共有一个属性B1,则B是B1,如R,S共有一组属性B1,B2,…,Bn,则B是这些共有的所有属性)R,S属性相同,值必须相等才能连接,即
R.B1=S.B1andR.B2=S.B2…andR.Bn=S.Bn才能连接要在结果中去掉重复的属性列(因结果中R.Bi始终是等于S.Bi所以可只保留一列即可)自然连接(Natural-Join)关系模型与关系运算什么情况用连接运算呢?
-连接
vs.连接vs.笛卡尔积关系模型与关系运算什么情况用连接运算呢?如下列表所示,两个关系R1和R2,它们进行______运算后可以得到R3。ABCD提交R1
R2R1
R2R1
R2单选题1分设关系R和S的元组个数分别为100和300,关系T是R与S的笛卡尔积,则T的元组个数是________。30000A400B10000C90000D提交单选题1分设关系R和S的属性个数分别为n和m,那么R×S操作结果的属性个数为_____。n+mAn-mBn×mCmax(n,m)D提交单选题1分AB提交CR
S,S-R,RS,R-S,RS,的元组个数是______?5,4,2,4,12,27,2,2,2,12,25,2,2,1,12,27,1,2,1,2,12D单选题1分AB提交C有两个关系R和S,分别包括15个和10个元组,则在R
S,R-S,RS中不可能出现的元组数目是______?15,5,1018,7,721,11,425,15,0D单选题1分关系R与关系S只有一个公共属性,T1是R与S做θ连接的结果,T2是R与S自然连接的结果,则下列说法正确的是_______T1的属性个数大于T2的属性个数AT1的属性个数等于T2的属性个数BT1的属性个数小于T2的属性个数CT1的属性个数大于或等于T2的属性个数D提交单选题1分第13讲数据怎样管理-数据库一、什么是数据库与数据库系统二、关系模型与关系运算三、利用关系运算表达数据查询需求查询表达式组合各种运算查询学习课程号为002的学生学号和成绩πS#,Score(
)查询学习课程号为001的学生学号、姓名πS#,Sname()查询学习课程名称为数据结构的学生学号、姓名和这门课程的成绩πS#,Sname,Score(σCname=“数据结构”(Student
SC
Course))SC
C#=“002”()
C#=“001”()StudentSCStudent
SCCourseσCname=“数据结构”(Student
SCCourse)关系模型与关系运算
利用关系运算进行查询?查询表达式注意连接与积的差别查询学习课程号为001的学生学号、姓名πS#,Sname()
C#=“001”()StudentSCπS#,Sname()
C#=“001”Student.S#=SC.S#()Student
SC连接条件关系模型与关系运算利用关系运算进行查询?关系如下图所示,查询既学习课程号为001课程又学习课程号为002号课程的学生的学号,正确的是_______ABCD提交单选题1分关系如下图所示。的含义为_________查询没有学习过课程号为002号课程的学生姓名和年龄A查询不仅仅学习课程号为002号课程的学生姓名和年龄B查询学习课程号为002号课程的学生姓名和年龄C其他全不对D提交πSname,Sage(S)
πSname,Sage
(σC#=“002”(S
SC))单选题1分已知关系S(S#,Sname,Sage,Sclass),SC(S#,C#,Score)。如下所示关系代数表达式的含义是________。其他全不对A查询没有学习过课程号为002号课程的学生姓名和年龄B查询不仅仅学习课程号为002号课程的学生姓名和年龄C查询学习课程号为002号课程的学生姓名和年龄D提交πSname,Sage(S)
πSname,Sage
(σC#=“002”(S
SC))单选题1分已知关系:学生(学号,姓名,性别,年龄),课程(课程号,课程名,学分),选课(课程号,学号,成绩)。表示“查询没有选修数据库课程的学生姓名”的关系代数操作是________。ABCD提交单选题1分第13讲数据怎样管理-数据库一、什么是数据库二、什么是数据库系统三、怎样操纵数据库四、数据库的思维:从语言到系统,从抽象到理论与设计数据格式数据981102数据库李四99秋02王四90谁能访问数据更新数据有什么要求…………
用户定义的数据安全性约束条件阶段1:User/DBAP通过数据定义语言(DDL)定义数据表的格式阶段2:User/DBAP通过数据操纵语言(DML)操纵数据进出数据库User/DBA通过数据控制语言(DCL)定义数据安全性班级课程教师学期学号姓名成绩981101数据库李四98秋01张三100981101数据库李四98秋02张四90981101数据库李四98秋03张五80981101计算机李五98秋01张三89981101计算机李五98秋02张四98981101计算机李五98秋03张五72981102数据库李四99秋01王三30981102数据库李四99秋02王四90981102数据库李四99秋03王武78学生成绩单DBUserDBMS检查用户合法性检查数据合法性按用户要求的操作执行并返回结果。DBAP数据库的思维:从语言到系统,从抽象到理论与设计回顾:数据库系统的概念SQL:StructuralQueryLanguageSQL语言是数据库系统的标准语言,它可以定义数据库、操纵数据库和进行数据库控制。SQL语言主要由以下9个单词引导的操作语句来构成,但每一种语句都能表达复杂的操作请求。
DDL语句引导词:Create(建立),Alter(修改),Drop(撤消)定义Database,Table,View,IndexDML语句引导词:Insert(插入),Update(更新),Delete(删除),Select(查询)各种方式的更新与检索操作各种条件的查询操作,如连接查找,模糊查找,分组查找,嵌套查找等各种聚集操作,求平均、求和、…等,分组聚集,分组过滤等
DCL语句引导词:Grant,Revoke安全性控制---授权和撤消授权数据库的思维:从语言到系统,从抽象到理论与设计什么是结构化数据库语言SQL创建课程学习数据库:SCT
CreateDatabase
SCT;SCT定义学生表:StudentCreateTable
Student(S#
char(8)notnull,Sname
char(10),
Ssex
char(2),Sage
integer,D#
char(2),Sclass
char(6));定义课程表:Course
CreateTableCourse(C#char(3),Cnamechar(12),
Choursinteger,Creditfloat(1),T#char(3)
);同学可自己定义其他的表:Dept,Teacher,SCStudentCoursecreatetable
表名(列名数据类型[notnull][,列名数据类型,…]);数据库的思维:从语言到系统,从抽象到理论与设计用SQL语言创建数据库并定义表-简介insertinto表名[(列名[,列名]…]
values
(值[,值],…);追加学生表中的元组InsertIntoStudentValues(‘98030101’,‘张三’,‘男’,20,’03’,‘980301’);InsertIntoStudent(S#,Sname,Ssex,Sage,D#,Sclass)Values(‘98030102’,‘张四’,‘女’,20,’03’,‘980301’);追加课程表中的元组InsertIntoCourse/*所有列名省略,须与定义或存储的列名顺序一致Values(‘001’,‘数据库’,40,6,’001’);
/*如列名未省略,须与语句中列名的顺序一致InsertIntoCourse(Cname,C#,Credit,Chours,T#);Values(‘数据库’,‘001’,6,20,‘001’);数据库的思维:从语言到系统,从抽象到理论与设计用SQL语言在所定义表中增加记录-简介由关系模型到结构化数据库语言SQL数据库语言SQL(结构化的查询语言)
Select列名[[,列名]…]
From表名1[[,表名2],…][Where检索条件];语义:将From后面的所有表串接起来,检索出满足“检索条件”的元组,并按给定的列名及顺序进行投影显示。
列名,…,列名(
检索条件(表名1
表名2…))关系运算式πS#,Sname,Score(σCname=“数据结构”
Student.S#=SC.S#
Course.C#=SC.C#(Student
SC
Course))SelectS#,Sname,ScoreFromStudent,SC,CourseWhere
Cname=‘数据结构’andStudent.S#=SC.S#andCourse.C#=SC.C#;数据库的思维:从语言到系统,从抽象到理论与设计SQL语言有丰富的表达能力-如嵌套查询、模糊查询、统计、分组统计、分组过滤等,同学可继续自学之…基本动作对基本动作
的抽象【并】操作
【差】操作
【积】操作
【选择】操作
【投影】操作
解释这种组合,并按次序调用基本动作予以执行程序执行机构程序指令基本动作SelectSnameFromStudent,SCWhereStudent.S#=SC.S#andSC.C#=‘001’OrderByScoreDESC;
Sname(student.s#=sc.s#(StudentSC))关系模型基本运算关系模型基本运算的各种组合SQL语言数据库管理系统复杂动作=基本动作的各种方式的组合数据库的思维:从语言到系统,从抽象到理论与设计关系运算
数据库语言
关系数据库管理系统抽象理论设计理论支持设计:设计正确性、完备性判定方法先抽象再设计:从管理一个具体的表,到可管理所有的表抽象:区分并命名表的每一个形式要素理论:数学化逻辑严密化各种概念;设计:语言/实现/系统理论指导下的抽象:抽象更为严密小结数据库的思维:从语言到系统,从抽象到理论与设计E.F.Codd,基于对“表(Table)”的理解:
提出了“关系”及关系模型,提出了关系数据库理论开创了数据库的时代,当前普遍应用的数据库管理系统的奠基者获得了计算机领域最高奖“图灵奖”第14讲数据与社会:大数据及其价值哈尔滨工业大学计算学部教学委员会主任国家教学名师战德臣第14讲数据与社会:大数据及其价值一、结构化数据库语言SQL二、大数据挖掘与运用结构化数据库语言SQL回顾:关系与关系运算学生成绩单列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)表/关系并:RS差:RS积:RS选择:
(R)投影:(R)连接:RS交:RS查询表达式组合各种运算查询学习课程号为002的学生学号和成绩πS#,Score(
)查询学习课程号为001的学生学号、姓名πS#,Sname()查询学习课程名称为数据结构的学生学号、姓名和这门课程的成绩πS#,Sname,Score(σCname=“数据结构”(Student
SC
Course))SC
C#=“002”()
C#=“001”()StudentSCStudent
SCCourseσCname=“数据结构”(Student
SCCourse)结构化数据库语言SQL
回顾:利用关系运算进行查询?查询表达式注意连接与积的差别查询学习课程号为001的学生学号、姓名πS#,Sname()
C#=“001”()StudentSCπS#,Sname()
C#=“001”Student.S#=SC.S#()Student
SC连接条件结构化数据库语言SQL回顾:利用关系运算进行查询?数据库语言SQL
Select列名[[,列名]…]
From表名1[[,表名2],…][Where检索条件];语义:将From后面的所有表串接起来,检索出满足“检索条件”的元组,并按给定的列名及顺序进行投影显示。
列名,…,列名(
检索条件(表名1
表名2…))关系运算式结构化数据库语言SQL由关系模型到结构化数据库语言SQL已经建立好的数据库---供后面学习和训练使用结构化数据库语言SQL已经建立起的数据库Select的简单语法形式为:
Select列名[[,列名]…]
From表名[Where检索条件];语义:从<表名>所给出的表中,查询出满足<检索条件>的元组,并按给定的<列名>及顺序进行投影显示
列名,…,列名(
检索条件(表名))结构化数据库语言SQLSQL-SELECT之简单使用:基本检索操作的表达方法例如:检索学生表中所有学生的信息SelectS#,Sname,Ssex,Sage,Sclass,D#
FromStudent;Select*FromStudent;//如投影所有列,则可以用*来简写
再如:检索学生表中所有年龄小于19岁的学生的年龄及姓名SelectSage,
Sname//投影的列可以重新排定顺序
FromStudentWhereSage<19;SELECT…FROM…WHERE…结构化数据库语言SQLSQL-SELECT之简单使用:基本检索条件书写例如:求或者学过001号课程,或者学过002号课程的学生的学号SelectS#FromSCWhereC#=‘001’ORC#=‘002’;对于每一行应用Where子句的条件SELECT…FROM…WHERE…结构化数据库语言SQLSQL-SELECT之简单使用:基本检索条件书写执行下列SQL语句的结果是什么?SelectS#FromSCWhereC#=‘001’ANDC#=‘002’;AB结果为“既学过001课程又学过002课程的所有同学的学号”C结果为“空”D提交结果为“或者学过001课程或者学过002课程的所有同学的学号”结果为“所有同学的学号”单选题1分例如:在选课表中,检索成绩大于80分的所有学号SelectS#
FromSCWhereScore>80;//有重复元组出现,比如一个同学两门以上课程大于80SelectDISTINCTS#
FromSCWhereScore>80;//重复元组被DISTINCT过滤掉,只保留一份检索结果去重复:DISTINCT表(Table)和关系(Relation)在大部分情况下概念通用,但有细微差别:前者可允许有重复元组,而后者不允许结构化数据库语言SQLSQL-SELECT之简单使用:如何去掉检索结果的重复元组或记录呢?Select语句中结果排序是通过增加orderby子句实现的
orderby
列名[asc|desc]意义为结果按指定列名进行排序,若后跟asc或省略,则为升序;若后跟desc,则为降序。例如:按学号由小到大的顺序显示出所有学生的学号及姓名SelectS#,SnameFromStudentOrderByS#ASC
;再如:检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示SelectS#FromSCWhereC#=‘002’andScore>80OrderByScoreDESC
;检索结果的排序SELECT…FROM…WHERE…ORDERBY…结构化数据库语言SQLSQL-SELECT之简单使用:如何对检索结果进行排序呢?比如检索“姓张的学生”,检索“张某某”,这类查询问题,Select语句是通过在检索条件中引入运算符like来表示的含有like运算符的表达式
列名[not]like“字符串”找出匹配给定字符串的字符串。其中给定字符串中可以出现%,_等匹配符.
匹配规则:
“%”匹配零个或多个字符“_”匹配任意单个字符
“
\”
转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待,如用“\%”去匹配字符%,用\_去匹配字符_模糊查询结构化数据库语言SQLSQL-SELECT之简单使用:如何表达模糊性的查询内容呢?例如:检索所有姓张的学生学号及姓名SelectS#,SnameFromStudentWhereSnameLike‘张%’;
再如:检索名字为张某某的所有同学姓名SelectSnameFromStudentWhereSnameLike‘张__’;
再如:检索名字不姓张的所有同学姓名SelectSnameFromStudentWhereSnameNot
Like‘张%’;结构化数据库语言SQLSQL-SELECT之简单使用:如何表达模糊性的查询内容呢?已知关系Student(S#char(8),Snamechar(10),Ssexchar(2),Sageinteger,D#char(2),Sclasschar(6))。要检索“所有年龄小于等于19岁的学生的年龄及姓名”,SQL语句正确的是_________。SelectSnameFromStudentWhereSage<=19;ABCD提交SelectSage,SnameFromStudentWhereSage<=19;Select*FromStudentWhereSage<=19;SelectSage,SnameFromStudent;单选题1分WHERE条件中出现LIKE'_A%',下面哪一个结果是可以被检索出来的_________。BAIABCD提交AILIBBACCAE以上所有都可被检索出来单选题1分SELECT…FROM…WHERE…SELECTDISTINCT…FROM…WHERE…SELECT…FROM…WHERE…ORDERBY…SELECT…FROM…WHERE…LIKE…结构化数据库语言SQLSQL-SELECT之简单使用:小结Select的多表联合检索语句如下:
Select列名[[,列名]…]
From表名1,表名2,…
Where检索条件;相当于
列名,…,列名(
检索条件(表名1
表名2…))检索条件中要包含连接条件,通过不同的连接条件可以实现各种连接操作。结构化数据库语言SQLSQL-SELECT之多表联合操作:多表联合检索的表达方法例如:按“001”号课成绩由高到低的顺序显示出所有学生的姓名(二表连接)SelectSnameFromStudent,SCWhere
Student.S#=SC.S#andSC.C#=‘001’OrderByScoreDESC;当多表连接时,如果两个表的属性名相同,则需采用表名.属性名方式来限定该属性是属于哪一个表再如:按‘数据库’课程成绩由高到低顺序显示所有同学姓名(三表连接)SelectSnameFromStudent,SC,CourseWhere
Student.S#=SC.S#andSC.C#=Course.C#
andCname=‘数据库’OrderByScoreDESC;Student(S#,Sname,Ssex,Sage,D#,Sclass)Course(C#,Cname,Chours,Credit,T#)SC(S#,C#,Score)Dept(D#,Dname,Dean)Teacher(T#,Tname,D#,Salary)结构化数据库语言SQLSQL-SELECT之多表联合操作:多表连接条件书写连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区分
select中采用别名的方式:
Select列名as列别名[[,列名as列别名]…]
From表名1as表别名1,表名2as表别名2,…
Where检索条件;
上述定义中的as可以省略当定义了别名后,在检索条件中可以使用别名来限定属性结构化数据库语言SQLSQL-SELECT之多表联合操作:表与列的别名例如:求有薪水差额的任意两位教师SelectT1.TnameasTeacher1,T2.TnameasTeacher2FromTeacherT1,TeacherT2Where
T1.Salary>T2.Salary;求年龄有差异的任意两位同学的姓名SelectS1.SnameasStud1,S2.SnameasStud2FromStudentS1,StudentS2Where
S1.Sage>S2.Sage;有时表名很长时,为书写条件简便,也定义表别名,以简化书写Student(S#,Sname,Ssex,Sage,D#,Sclass)Course(C#,Cname,Chours,Credit,T#)SC(S#,C#,Score)Dept(D#,Dname,Dean)Teacher(T#,Tname,D#,Salary)结构化数据库语言SQLSQL-SELECT之多表联合操作:表与列的别名再如:求既学过“001”号课又学过“002”号课的所有学生的学号(二表连接)SelectSC1.S#FromSCSC1,SCSC2Where
SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02;再如:求“C01”号课成绩比“C02”号课成绩高的所有学生的学号(二表连接)SelectSC1.S#FromSCSC1,SCSC2Where
SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02’andSC1.Score>SC2.Score;结构化数据库语言SQLSQL-SELECT之多表联合操作:表与自身的连接列出没学过李明老师讲授课程的所有同学的姓名,
如下书写SQL语句会得到正确结果吗?SelectSnameFromStudentS,SC,CourseC,TeacherTWhere
T.Tname<>‘李明’
andC.C#=SC.C# andSC.S#=S.S#andT.T#=C.T#;
能够得到正确结果AB提交不能够得到正确结果单选题1分IN子查询。其基本语法为:表达式[not]in(子查询)
语义:判断某一表达式的值是否在子查询的结果中。再例如:列出选修了001号课程的学生的学号和姓名SelectS#,SnameFromStudentWhereS#in(SelectS#FromSCWhereC#=‘001’);再例如:求既学过001号课程,又学过002号课程的学生的学号SelectS#FromSCWhereC#=‘001’andS#in(SelectS#FromSCWhereC#=‘002’);结构化数据库语言SQLSQL-SELECT之多表联合操作:嵌套子查询再例如:列出没学过李明老师讲授课程的所有同学的姓名?SelectSnameFromStudentWhereS#not
in(SelectS#FromSC,CourseC,TeacherT WhereT.Tname=‘李明’andSC.C#=C.C# andT.T#=C.T#);结构化数据库语言SQLSQL-SELECT之多表联合操作:嵌套子查询非相关子查询SelectSnameFromStudentWhereS#not
in(SelectS#
FromSC,CourseC,TeacherT WhereT.Tname=‘李明’andSC.C#=C.C# andT.T#=C.T#);内层查询独立进行,没有涉及任何外层查询相关信息的子查询被称为非相关子查询。内层查询外层查询结构化数据库语言SQLSQL-SELECT之多表联合操作:非相关子查询vs.相关子查询有时,内层查询需要依靠外层查询的某些参量作为限定条件才能进行,这样的子查询称为相关子查询。外层向内层传递的参量需要使用外层的表名或表别名来限定例如:求学过001号课程的同学的姓名
SelectSnameFromStudentStudWhereS#in(SelectS#
FromSC WhereS#=Stud.S#andC#=‘001’);
注意:相关子查询只能由外层向内层传递参数,而不能反之;这也称为变量的作用域原则相关子查询结构化数据库语言SQLSQL-SELECT之多表联合操作:非相关子查询vs.相关子查询有关系表SC(S#,C#,Score),求既学过“001”号课又学过“002”号课的所有学生的学号,下列SQL语句正确的是_________。SelectS#FromSCWhereC#=‘001’ANDC#=‘002’;ABCD提交SelectS2.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#=‘001’andS2.C#=‘002;SelectS1.S#FromSCS1,SCS2WhereS1.C#=‘001’andS2.C#=‘002;SelectS1.S#FromSCS1WhereS1.C#=‘001’ANDS1.C#=‘002’;单选题1分求既学过002号课,又学过003号课的同学学号。下列SQL语句不正确的是_________。AB提交SelectS#FromSCWhereC#=‘002’ANDC#=‘003’;CSelectS#FromSCWhereC#=‘002’INTERSECTSelectS#FromSCWhereC#=‘003’;SelectS#FromSCWhereC#=‘002’andS#IN(SelectS#FromSCWhereC#=‘003’);SelectS1.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#=‘002’andS2.C#=‘003;D单选题1分已知关系:Student(S#,Sname),Course(C#,Cname,T#),SC(S#,C#,Score),Teacher(T#,Tname)。阅读SQL语句,关于其查询结果,下列说法正确的是_____。SelectSnameFromStudentWhereS#NOTIN(SelectS#FromSC,CourseC,TeacherTWhereT.T#=‘李明’andSC.C#=C.C#andT.T#=C.T#);AB提交列出学全了李明老师讲授所有课程的学生姓名C列出学过李明老师讲授某一课程的学生姓名列出没学全李明老师讲授所有课程的学生姓名列出没学过李明老师讲授任一课程的学生姓名D单选题1分已知关系:Student(S#,Sname),Course(C#,Cname,T#),SC(S#,C#,Score),Teacher(T#,Tname)。阅读SQL语句,关于其查询结果,下列说法正确的是_____。SelectS#FromSCSC1WhereSC1.C#=‘C01’ANDS#IN(SelectS#FromSCSC2WhereSC2.C#=‘C02’ANDSC1.S#=SC2.S#ANDSC1.Score>SC2.Score);AB提交比C02课程成绩高的所有学生的学号CC01课程比C02课程成绩高的所有学生的学号C01同学比C02同学成绩高的所有课程的课号比C02同学C01课程成绩高的所有学生的学号D单选题1分已知SC(S#,C#,Score)关系的元组,如下所示{<S1,C1,80>,<S1,C2,90>,<S1,C3,60>,<S2,C1,75>,<S2,C2,80>,<S3,C2,85>,<S3,C3,75>,<S4,C2,80>,<S5,C3,50>,<S5,C1,85>}。关于“SELECTS#FROMSCWHEREC#=‘C1’andC#=‘C3’”,下列说法正确的是______。AB提交该查询结果为{S1,S5};C该查询结果为{S1,S2,S3,S5};该查询结果中的元组为{S1};该查询结果中的元组为{S5};DE前述都不正确;单选题1分SELECT…FROM表名1,表名2,…
WHERE…SELECT…FROM…WHERE…IN(SELECT…FROM…WHERE…)结构化数据库语言SQLSQL-SELECT之多表联合操作:小结?结果计算与聚集函数select子句可以是一些计算表达式或聚集函数,表明在选择和投影的同时直接进行一些运算
Select列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]…]
From表名1[,表名2…][Where检索条件];
计算表达式可以是常量、列名或由常量、列名、特殊函数及算术运算符构成的算术运算式。求有差额(差额>0)的任意两位教师的薪水差额SelectT1.TnameasTR1,T2.TnameasTR2,T1.Salary–T2.Salary
FromTeacherT1,TeacherT2WhereT1.Salary>T2.Salary;
结构化数据库语言SQLSQL-SELECT之分组聚集操作:结果计算与聚集函数?
SQL提供了五个作用在简单列值集合上的内置聚集函数agfunc,分别是:COUNT、SUM、AVG、MAX、MINSQL聚集函数的参数类型、结果类型与作用如下:结构化数据库语言SQLSQL-SELECT之分组聚集操作:结果计算与聚集函数?求教师的工资总额SelectSum(Salary)FromTeacher;
求计算机系教师的工资总额SelectSum(Salary)
FromTeacherT,DeptWhereDept.Dname=‘计算机’andDept.D#=T.D#;
求数据库课程的平均成绩SelectAVG(Score)
FromCourseC,SCWhereC.Cname=‘数据库’andC.C#=SC.C#;结构化数据库语言SQLSQL-SELECT之分组聚集操作:结果计算与聚集函数?为解决同时求解若干个集合的聚集运算问题,引出了分组的概念。SQL可以将检索到的元组按照某一条件进行分类,具有相同条件值的元组划到一个组或一个集合中,这一过程就是分组过程。分组可以在基本Select语句基础上引入分组子句来完成:
Select列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]…]
From表名1[,表名2…][Where检索条件][Groupby分组条件];
分组条件可以是
列名1,列名2,…SELECT…FROM…WHERE…GROUPBY…HAVING…ORDERBY…结构化数据库语言SQLSQL-SELECT之分组聚集操作:分组计算与聚集?例如:求每一个学生的平均成绩Select
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于有限元分析的铺管船用张紧器力学特性剖析与结构优化策略研究
- 基于智能算法的大型复杂曲面船体外板成形工艺参数自学习专家系统构建与应用
- 基于智能化需求的电动扳手控制系统创新设计与应用研究
- 自然灾害和气候风险及复原力评估的分类法-基础设施版
- 2026年网格员考试笔试题及答案
- 2026年浙江省网格员招聘理论考试复习题库(含答案)
- 2026年滁州市定远县辅警考试试题及答案
- 2026年铁路接触网带电作业人员安全考核题库解析
- 2026年安全知识竞赛考试题及答案
- 2026年行政执法人员模拟试题库附含参考答案
- 2026年广东省公需课《加快培育发展新质生产力》考试答案
- 人工智能导论(第2版)课件 项目1、2 人工智能的前世今生、人工智能基础
- 2025年新闻记者职业资格考试真题+答案
- 2026年法律职业资格考试商经法客观题练习带答案
- 2026福建平潭综合实验区文旅发展集团有限公司招聘14人笔试参考题库及答案解析
- 新版2026秋小学新版人教版数学五年级上册教学计划、教学设计合集
- 2026金属基陶瓷复合材料技术创新与应用展望报告
- 2026-2027学年人教版七年级数学上册期中测试卷(带答案解析)
- 浆砌片石排水沟施工技术交底培训
- GB 48063-2026交通运输北斗卫星导航系统定位模块通用技术规范
- 2026 游戏数值策划高频面试题包含详细解答
评论
0/150
提交评论