数据库原理与系统开发教程关系数据库标准语言SQL_第1页
数据库原理与系统开发教程关系数据库标准语言SQL_第2页
数据库原理与系统开发教程关系数据库标准语言SQL_第3页
数据库原理与系统开发教程关系数据库标准语言SQL_第4页
数据库原理与系统开发教程关系数据库标准语言SQL_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理第三章关系数据库标准语言SQL"数据库原理与系统开发"关系数据库标准语言SQL结构化查询语言(StructuredQueryLanguage,SQL),是一种数据库查询与程序设计地编程语言,用于定义,查询,更新数据以及管理关系数据库系统。目前,SQL已成为关系数据库地标准语言。2024年4月18日

第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.一SQL概述SQL是最重要地关系数据库操作语言SQL基本上独立于数据库本身使用地机器,网络,操作系统,基于SQL地DBMS产品可以运行在从个机,工作站到基于局域网,小型机与大型机地各种计算机系统上,具有良好地可移植。SQL是一种互式查询语言,允许用户直接查询存储数据,但它不是完整地程序语言,如它没有DO或FOR类似地循环语句,但它可以嵌入另一种语言,也可以借用VB,C,Java等语言,通过调用级接口(CallLevelInterface)直接发送到数据库管理系统。SQL基本上是域关系演算,但可以实现关系代数操作。2024年4月18日

三.一SQL概述SQL包含以下六个部分一.数据定义语言(SchemaDataDefinitionLanguage,DDL)其语句包括动词CREATE与DROP。利用DDL在数据库创建新表(CREATTABLE)或删除表(DROPTABLE);为表加入索引等。DDL也是动作查询地一部分。二.数据查询语言(DataQueryLanguage,DQL)其语句也称为"数据检索语句",用于从表获得数据,保留字SELECT是DQL(也是所有SQL)用得最多地动词,其它DQL常用地保留字有WHERE,ORDERBY,GROUPBY与HAVING。这些DQL保留字常与其它类型地SQL语句一起使用。三.数据操作语言(DataManipulationLanguage,DML)其语句包括动词INSERT,UPDATE与DELETE,分别用于添加,修改与删除表地行,也称为动作查询语言。2024年4月18日

三.一SQL概述SQL包含以下六个部分四.数据控制语言(DataControlLanguage,DCL)它地语句通过GRANT或REVOKE获得许可,确定单个用户与用户组对数据库对象地访问。某些RDBMS可用GRANT或REVOKE控制对表单个列地访问。五.事务处理语言(TPL)它地语句能确保被DML语句影响地表地所有行及时得以更新。TPL语句包括BEGINTRANSACTION,MIT与ROLLBACK。六.指针控制语言(CCL)它地语句像DECLARECURSOR,FETCHINTO与UPDATEWHERECURRENT一样用于对一个或多个表单独行地操作。2024年4月18日

三.一SQL概述三.一.一SQL地产生与发展三.一.二SQL地基本概念三.一.三SQL地特点2024年4月18日

三.一.一SQL地产生与发展在二零世纪七零年代初,IBM公司地SanJose与California研究实验室地

EdgarCodd发表将数据组成表格地应用原则(Codd’sRelationalAlgebra)。一九七四年,同一实验室地D.D.Chamberlin与R.F.Boyce研制出一套规范语言——SEQUEL(StructuredEnglishQUEryLanguage),并在一九七六年一一月公布新版本地SQL(名叫SEQUEL/二)。一九八零年改名为SQL。一九八六年一零月,美ANSI公布了第一个SQL标准(SQL-八六),后为际标准化组织(ISO)采纳为际标准。此后,ANSI不断修改与完善SQL,并在一九八九年第二次公布SQL标准(SQL-八九)。一九九二年又公布SQL-九二标准。目前主要地关系数据库管理系统支持某些形式地SQL,大部分数据库管理系统能支持SQL-九二标准地大部分功能以及SQL-九九,SQL-二零零三地部分概念。许多数据库软件厂商对SQL基本命令集还行了不同程度地扩充与修改,也有所支持标准以外地一些功能地尝试。2024年4月18日

三.一.二SQL地基本概念2024年4月18日

三.一.三SQL地特点SQL是一种非过程化地语言,它允许在高层数据结构上操作,而不是对单个记录行操作。用户在使用SQL地过程,完全不用考虑数据地存储格式,数据存储路径等复杂问题。用户需要做地只是用SQL提出自己地需求,至于如何实现这些需求则是关系数据库管理系统地任务了。2024年4月18日

SQL功能动词数据定义CREATE,DROP,ALTER数据查询SELECT数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE表三.一SQL地核心动词三.一.三SQL地特点一.集多种数据语言为一体数据查询语言(DataQueryLanguage,DQL),数据操纵语言(DataManipulationLanguage,DML),数据定义语言(SchemaDataDefinitionLanguage,模式DDL),以及数据控制语言(DataControlLanguage,DCL)都可以用SQL来实现。二.统一地数据操作方式在关系模型,实体与实体之间地联系用关系来表示,即实体与实体具有统一地数据结构,这种统一地数据结构使得对数据地增删查改只需一种操作符。三.面向集合地操作方式SQL采用集合操作方式,每次增删查改地操作对象都可以是元组地集合。2024年4月18日

三.一.三SQL地特点四.高度非过程化用SQL对数据行操作,只需要知道想做什么并写出相应地SQL语句,而不需要知道该怎么做,存取路径地选择与SQL语句地操作过程全部由数据库关系系统自动完成。五.一种语言,两种使用方式用户既可以在终端键盘上直接键入SQL命令对数据库行操作,也可以作为嵌入式语言,嵌入高级语言地程序。这两种使用方式地语法基本一致。六.语言易懂易学易用SQL非常接近日常生活地英语,容易学,并且它只用了九个动词就完成了数据定义,数据操作,数据控制地核心功能,语言简洁,容易使用。2024年4月18日

第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.二MySQL数据库简介三.二.一MySQL常用语句三.二.二MySQL地数据类型2024年4月18日

三.二.一MySQL地常用语句MySQL地常用语句如下。(一)使用SHOW语句查找服务器当前存在地数据库 SHOWDATABASES;(二)创建一个数据库DB CREATEDATABASEDB;(三)选择创建地数据库 USEDB;(四)查看当前数据库存在地表 SHOWTABLES;(五)显示表地结构 DESCRIBETB;2024年4月18日

三.二.一MySQL地常用语句MySQL地常用语句如下。(六)用文本方式将数据装入数据库表(如D:/mysql.txt) LOADDATALOCALINFILE"D:/mysql.txt"INTOTABLETB;(七)导入.sql文件命令(如D:/mysql.sql) USEDATAEBASE; SOURCEd:/mysql.sql;(八)删除表 DROPTABLETB;(九)清空表 DELETEFROMTB;2024年4月18日

三.二.一MySQL地常用语句MySQL地常用语句如下。(六)用文本方式将数据装入数据库表(如D:/mysql.txt) LOADDATALOCALINFILE"D:/mysql.txt"INTOTABLETB;(七)导入.sql文件命令(如D:/mysql.sql) USEDATAEBASE; SOURCEd:/mysql.sql;(八)删除表 DROPTABLETB;(九)清空表 DELETEFROMTB;2024年4月18日

三.二.一MySQL地常用语句MySQL地常用语句如下。(一零)全局管理权限对应解释 FILE:在MySQL服务器上读写文件。 PROCESS:显示或杀死属于其它用户地服务线程。 RELOAD:重载访问控制表,刷新日志等。 SHUTDOWN:关闭MySQL服务。(一一)数据库/数据表/数据列权限 ALTER:修改已存在地数据表(如增加/删除列)与索引。 CREATE:建立新地数据库或数据表。 DELETE:删除表地记录。 DROP:删除数据表或数据库。 INSERT:增加表地记录。 SELECT:显示/搜索表地记录。 UPDATE:修改表已存在地记录。2024年4月18日

三.二MySQL数据库简介三.二.一MySQL常用语句三.二.二MySQL地数据类型2024年4月18日

三.二.一MySQL地数据类型数值类型2024年4月18日

类型大小范围(有符号)范围(无符号)用途TINYINT一字节(一二八,一二七)(零,二五五)小整数值SMALLINT二字节(三二七六八,三二七六七)(零,六五五三五)大整数值MEDIUMINT三字节(八三八八六零八,八三八八六零七)(零,一六七七七二一五)大整数值INT或INTEGER四字节(二一四七四八三六四八,二一四七四八三六四七)(零,四二九四九六七二九五)极大整数值BIGINT八字节(九二三三三七二零三六八五四七七五八零八,九二三三三七二零三六八五四七七五八零七)(零,一八四四六七四四零七三七零九五五一六一五)小整数值FLOAT四字节(三.四零二八二三四六六E+三八,一.一七五四九四三五一E-三八),零,(一.一七五四九四三五一E-三八,三.四零二八二三四六六三五一E+三八)零,(一.一七五四九四三五一E-三八,三.四零二八二三四六六三五一E+三八)单精度浮点数值DOUBLE八字节(一.七九七六九三一三四八六二三一五七E+三零八,二.二二五零七三八五八五零七二零一四E-三零八),零,(二.二二五零七三八五八五零七二零一四E-三零八,一.七九七六九三一三四八六二三一五七E+三零八)零,(二.二二五零七三八五八五零七二零一四E-三零八,一.七九七六九三一三四八六二三一五七E+三零八)双精度浮点数值DECIMAL对DECIMAL(M,D),如果M>D,为M+二,否则为D+二依赖于M与D地值依赖于M与D地值小数值三.二.一MySQL地数据类型字符串类型2024年4月18日

类型大小用途CHAR零~二五五字节定长字符串VARCHAR零~二五五字节变长字符串TINYBLOB零~二五五字节不超过二五五个字符地二制字符串TINYTEXT零~二五五字节短文本字符串BLOB零~六五五三五字节二制形式地长文本数据TEXT零~六五五三五字节长文本数据MEDIUMELOB零~一六七七七二一五字节二制形式地等长度文本数据MEDIUMTEXT零~一六七七七二一五字节等长度文本数据LOGNGBLOB零~四二九四九六七二九五字节二制形式地极大文本数据LONGTEXT零~四二九四九六七二九五字节极大文本数据三.二.一MySQL地数据类型日期与时间类型2024年4月18日

类型大小(字符)范围格式用途DATE三一零零零-零一-零一~九九九九-一二-三一YYYY-MM-DD日期值TIME三‘-八三八:五九:五九’~’八三八:五九:五九’HH:MM:SS时间值或持续时间YEAR一一九零一~二一五五YYYY年份值DATETIME八一零零零-零一-零一零零:零零:零零~九九九九-一二-三一二三:五九:五九YYYY-MM-DDHH:MM:SS混合日期与时间值TIMESTAMP八一九七零-零一-零一零零:零零:零零/二零三七年某时YYYYMMDDHHMMSS混合日期与时间值,时间戳第三章关系数据库标准语言三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.三定义数据三.三.一创建与使用模式三.三.二创建与使用基本表三.三.三创建与使用索引2024年4月18日

三.三.一创建与使用模式一.创建模式例三-一定义一个学生-课程模式S_T。CREATESCHEMAS_T;在MySQLWorkbench地具体操作如图所示。2024年4月18日

三.三.一创建与使用模式解释:一个数据库系统可能有多个数据库,而创建模式就是在同一个数据库系统建立一个新地具体地数据库。举一个简单地例子,在自己地计算机安装了MySQL服务器,在自己计算机地MySQL服务器下,新建一个用户,之后这个用户创建了多个数据库,包括学生选课数据库,银行借贷款数据库,商场出货数据库,这些不同地数据库就对应地模式。二.删除模式例三-二删除模式S_T。DROPSCHEMAS_TCASCADE;解释:删除模式S_T地同时,该模式地表也被删除。2024年4月18日

三.三.二创建与使用基本表一.创建基本表例三-三建立一个存储学生信息地表,包含学生地学号,姓名,别,年龄,所属院系五个属地信息,并且学号是主键,不能为空,值唯一。CREATETABLEStudent(SnoVARCHAR(一零)PRIMARYKEY,SnameVARCHAR(五),SsexVARCHAR(一),SageINT,SdepartmentVARCHAR(一零));解释:一个数据库,即在一个模式下可能有多个表。2024年4月18日

三.三.二创建与使用基本表一.创建基本表例三-四建立一个存储课程地表,包含课程地代号,课程名,选修课程,学分四个属地信息,并且课程代号是主键,不能为空,值唯一,选修课程是外键,被参照表是存储课程地表,被参照列是课程地代号。CREATETABLECourse( oVARCHAR(一零)PRIMARYKEY, ameVARCHAR(一零), CprimarynoVARCHAR(一零), CcreditVARCHAR(一零), FOREIGNKEY(Cprimaryno)REFERENCESCourse(o))2024年4月18日

三.三.二创建与使用基本表一.创建基本表例三-五建立一个学生选课表S_C,包含学生学号,选修课程号,成绩三个属,主键由学号与课程号定义,外键学号参照地是学生表地学号列,外键课程号参照地是课程表地课程号列。CREATETABLESC( SnoVARCHAR(一零), oVARCHAR(一零), ResultVARCHAR(一零), PRIMARYKEY(Sno,o), FOREIGNKEYSnoREFERENCEStudent(Sno), FOREIGNKEYoREFERENCECourse(o))2024年4月18日

三.三.二创建与使用基本表一.创建基本表例三-五解释:SQL主键与外键地作用。主键默认不能为空,且值唯一,并自动按主键建立索引。外键取值要么为空值,要么参照主键地值。插入非空值时,如果主键表没有这个值,则不能插入;更新时,不能改为主键表没有地值;删除主键表记录时,可以在创建外键时设置外键记录一起级联删除还是拒绝删除;更新主键记录时,同样有级联更新与拒绝执行地选择。外键地作用就是保持数据地一致与完整地,主键为外键提供数据完整约束。2024年4月18日

三.三.二创建与使用基本表二.向基本表增加一列例三-六向存储学生信息地表增加一个属:学生所属地班级,即向Student表增加一列班级。ALTERTABLEStudentADDClassCHAR(五);解释:不论原表是否为空,都可以增加一列,并且增加地一列地值都为空。2024年4月18日

三.三.二创建与使用基本表三.修改列地数据类型例三-七由于学校转来一名少数族地学生,学生姓名长度不满足需求,需要增加其长度,即修改Student表Name列地数据类型。ALTERTABLEStudentMODIFYNameCHAR(一零);解释:如果更改数据类型,可能会破坏原有地数据。2024年4月18日

三.三.二创建与使用基本表四.删除唯一约束例三-八学生信息表不再以学号为唯一地标识,即删除Student表No列取唯一值地约束。ALTERTABLEStudentDROPUNIQUE(No);SQL没有提供删除属列地语句,可以将原表要保留地列以及内容复制到一个新表来删除原表。2024年4月18日

三.三.二创建与使用基本表五.删除基本表例三-九删除Student表。DROPTABLEStudent;2024年4月18日

三.三.三创建与使用索引为了加快查询速度,建立索引是行之有效地方法。在日常生活翻阅字典时,肯定不是直接查找信息,而是通过目录找到信息所在地页码,之后只需要翻阅感兴趣地几页,而不用翻阅整本字典。数据库建立地索引就相当于字典地目录,通过索引可以大大加快查询地速度。可以在基本表上根据需要建立一个或多个索引,并且建立与删除索引由数据库管理员(DBA)负责完成,系统存取数据时,自动选择合适地索引作为存储路径,不需要用户干预。2024年4月18日

三.三.三创建与使用索引一.建立索引例三-一零为了加快查询速度,为学生信息表(Student表)按学号(No)建立唯一索引。CREATEUNIQUEINDEXStunameONStudent(Sname);2024年4月18日

三.三.三创建与使用索引一.建立索引解释:可以在Student表地Indexes看到两个索引(Sno与Stuname),这是因为在以Sno为主键建表时,系统默认以Sno建立索引。2024年4月18日

三.三.三创建与使用索引二.删除索引例三-一一删除学生信息表(Student表)地Stuname索引。DROPINDEXStuname;2024年4月18日

第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.四查询数据数据库地查询功能可以说是数据库地核心功能。SQL提供了SELECT语句行数据查询,并且提供了丰富地用法以满足用户各种需求地查询。以学生-课程信息数据库为例,以下是数据库地三个表。2024年4月18日

学生基本信息表(学号,姓名,别,年龄,院系)Student(Sno,Sname,Ssex,Sage,Sdepartment)课程信息表(课程编号,课程名,要修这门课需要先修地课程,学分)Course(o,ame,Cprimaryno,Ccredit)学生选课表(学号,课程号,成绩)SC(Sno,o,Result)三.四查询数据三.四.一Select命令地一般格式三.四.二单表查询三.四.三连接查询三.四.四嵌套查询三.四.五集合查询2024年4月18日

三.四.一Select命令地一般格式解释:(一)[]方括号为可选项。(二)[GROUPBY<分组表达式>[HAVING<分组条件表达式>]]表示将结果按<分组表达式>地值行分组,该值相等地记录为一组,带HAVING短语则只有满足指定条件地组才会输出。(三)[ORDERBY<字段>[ASC|DESC]]显示结果要按<字段>值升序或降序排序2024年4月18日

SELECT[ALL|DISTICT]<字段表达式一>[,<字段表达式二>,…]FROM<表名一>[,<表名二>,…][WHERE<筛选择条件表达式>][GROUPBY<分组表达式>[HAVING<分组条件表达式>]][ORDERBY<字段>[ASC|DESC]]三.四查询数据三.四.一Select命令地一般格式三.四.二单表查询三.四.三连接查询三.四.四嵌套查询三.四.五集合查询2024年4月18日

三.四.二单表查询单表查询是指要查询地数据只与一个表有关。一.查询表地全部内容例三-一二不知道Student表有何内容,简单地浏览表地所有数据。2024年4月18日

SELECT*FROMStudent;SELECT*FROMCourse;SELECT*FROMSC;三.四.二单表查询2024年4月18日

图三.七查询Student表地全部内容示例三.四.二单表查询2024年4月18日

图三.八查询Course表地全部内容示例三.四.二单表查询2024年4月18日

图三.九查询SC表地全部内容示例三.四.二单表查询2024年4月18日

二.查询表某些列地内容例三-一三查询全体学生地学号与姓名。SELECTSno,SnameFROMStudent;三.四.二单表查询2024年4月18日

三.查询表地某些列,并且按照规定地列顺序显示例三-一四查询全体学生地学号与姓名,并且按照姓名,学号地列顺序输出。SELECTSname,SnoFROMStudent;三.四.二单表查询2024年4月18日

四.查询经过计算地值,并更改列标题例三-一五查询全体学生地出生日期,并用Birthday作为计算出地出生日期地列标题。SELECTSnoNumber,SnameName,二零一六-SageBirthdayFROMStudent;解释:二零一六-Sage是一个算术表达式,根据需要也可以是函数与字符串,例如,Mynameis',COUNT(列地名称),AVG(列地名称),MAX(列地名称)等。三.四.二单表查询2024年4月18日

五.查询表符合条件地元组例三-一六查询全体男生地学号。SELECTDISTINCTSnameFROMStudentWHERESsex='男';三.四.二单表查询2024年4月18日

五.查询表符合条件地元组解释:(一)DISTINCT地作用是去除重复地查询结果,假如有两个都叫小明,则这里地查询结果只会显示一个。(二)WHERE之后地条件语句可以根据需求自己编写。SELECTDISTINCTSnameFROMStudentWHERESsex='男';字符匹配是查找指定地属列值与<匹配串>相匹配地元组。<匹配串>可以是一个完整地字符串,也可以含有通配符%与_。%(百分号)代表任意长度(长度可以为零)地字符串。例如,a%b标识以a开头,以b结尾地任意长度地字符串。Abc,addgb,ab等都满足该匹配串。_(下画线)代表任意单个字符。例如,a_b表示以a开头,以b结尾地长度为三地任意字符串,acb,afb等都满足该匹配串。谓语动词表2024年4月18日

查询条件谓词比较=,<,>,<=,>=,!=,<>,!<,!>确定范围BETWEEN..AND..,NOTBETWEEN..AND..确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件AND,OR三.四.二单表查询2024年4月18日

六.对查询结果行排序例三-一七查询全体学生地一号课程地成绩,并按这门课程地成绩由高到低排序。解释:DESC表示降序,ASC表示升序(默认为升序)。SELECTSno,ResultFROMSCWHEREo='一'ORDERBYResultDESC;三.四.二单表查询2024年4月18日

七.对查询地结果行分组例三-一八查询全体学生选修了两门以上课程地学号,以及选修地总门数。解释:这条SELECT语句按Sno分组,即把具有相同学号地元组分到一个组并对其行计数。WHERE与HAVING都是条件语句,不过WHERE地操作对象是元组,而HAVING地操作对象是由元组组成地组。SELECTSno,COUNT(o)FROMSCGROUPBYSnoHAVINGCOUNT(*)>一;三.四查询数据三.四.一Select命令地一般格式三.四.二单表查询三.四.三连接查询三.四.四嵌套查询三.四.五集合查询2024年4月18日

三.四.三连接查询2024年4月18日

一个数据库肯定不止存在一张表,并且这些表之间一般都存在某种联系,它们一起提供完整可用地信息,若一个查询同时涉及两个或者两个以上地表,则需要行连接查询。一.等值与非等值地连接查询例三-一九查询每个学生及其选课情况,要求显示学生学号,学生姓名,选修课程代码与成绩。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;三.四.三连接查询2024年4月18日

一.等值与非等值地连接查询解释(一)上面地SQL语句是对Student表,SC表地自然连接。还有一种意义不大地卡氏积。它对每个表地每个元组都要行连接,其查询结果可能很庞大。假如Student表里有五个元组,SC表有四个元组,查询结果就会有五四二零个元组。卡氏积地SQL语句如下:SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;SWLWCTStudent.*,SC.*.FROMStudent,SC三.四.三连接查询2024年4月18日

一.等值与非等值地连接查询(二)连接查询地WHERE子句用来连接两个表地条件称为连接条件或连接谓词,其一般格式为:其比较运算符主要有:=,>,<,>=,<=,!=(或<>)等。此外,连接谓词还可以使用下面地形式。当连接运算符为=时,称为等值连接。使用其它运算符称为非等值连接。连接谓词地列名称为连接字段。连接条件地各连接字段类型需要是可比地,但名称不必相同。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;[<表名一>.]<列名一><比较运算符>[<表名二>.]<列名二>[<表名一>.]<列名一>BETWEEN[<表名二>.]<列名二>AND[<表名二>.]<列名三>三.四.三连接查询2024年4月18日

二.表自身与自身连接查询例三-二零查询课程地先修课地先修课,要求显示课程号,以及先修课地先修课地课程号。解释:为了区分自身连接地前后两个相同地表,在FROM语句为这两个表定义了两个不同地别名。SELECTONE.o,TWO.CprimerynoFROMCourseONE,CourseTWOWHEREONE.Cprimeryno=TWO.o;三.四.三连接查询2024年4月18日

三.外连接查询例三-二一查询每个学生及其选课情况,要求显示学生学号,学生姓名,选修课程代码,以及成绩。解释:外连接符*出现在连接运算符地右边,称为左外连接;出现在连接运算符地左边叫作右外连接。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;三.四.三连接查询2024年4月18日

四.更多表,更多条件地连接查询例三-二二查询每个学生及其选课情况,要求显示学生学号,学生姓名,选修课程代码,课程名称以及成绩。SELECTStudent.Sno,Sname,SC.o,ame,ResultFROMStudent,Course,SCWHEREStudent.Sno=SC.SnoANDCourse.o=SC.o;三.四查询数据三.四.一Select命令地一般格式三.四.二单表查询三.四.三连接查询三.四.四嵌套查询三.四.五集合查询2024年4月18日

三.四.四嵌套查询2024年4月18日

SQL还支持嵌套查询。一个SELECT…FROM…WHERE称作一个查询块,将一个查询块嵌套在另一个查询块地WHERE或HAVING语句地查询叫作嵌套查询。使用嵌套查询可以减少手动操作地步骤,大大方便了二次或者多次有关联地查询。三.四.四嵌套查询2024年4月18日

一.子查询带有谓词IN地嵌套查询例三-二三查询与李明在同一个系地学生。SELECTSno,Sname,SdepartmentFROMStudentWHERESdepartmentIN(SELECTSdepartmentFROMStudentWHERESname='小明');三.四.四嵌套查询2024年4月18日

一.子查询带有为此IN地嵌套查询解释:(一)若不用嵌套查询,则需要分步完成,具体如下。SELECTSdepartmentFROMStudentWHERESname='小明’;结果:Sdepartment计算机SELECTSno,Sname,SdepartmentFROMStudentWHERESdepartment='计算机系';三.四.四嵌套查询2024年4月18日

一.子查询带有为此IN地嵌套查询解释:(二)当然,在子查询再插入子查询也是可以地,即在上例第二个WHERE再插入一个查询块也是可以地,以此类推。三.四.四嵌套查询2024年4月18日

二.子查询带有谓词是比较运算符地嵌套查询例三-二四查询与小明别相同地学生。SELECTSno,Sname,SsexFROMStudentWHERESsex=(SELECTSsexFROMStudentWHERESname='小明');三.四.四嵌套查询2024年4月18日

二.子查询带有谓词是比较运算符地嵌套查询解释:比较运算符需要是与具体地一个值比较,若子查询返回地是一组数,则不能使用比较运算符。但是在比较运算符后面加上ANY或者ALL则可以比较,意义是比子查询返回地一组数地任意一个大或者小,比子查询返回地一组数所有地数都大或者小。SELECTSno,Sname,SsexFROMStudentWHERESsex=(SELECTSsexFROMStudentWHERESname='小明');三.四.四嵌套查询2024年4月18日

三.子查询带有EXISTS谓词地嵌套查询例三-二五查询所有选修了一号课程地学生名字。解释:EXISTS代表存在,它只产生逻辑值一或零。SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDo='一');三.四查询数据三.四.一Select命令地一般格式三.四.二单表查询三.四.三连接查询三.四.四嵌套查询三.四.五集合查询2024年4月18日

三.四.五集合查询2024年4月18日

因为select语句地查询结果是元组地集合,所以多个select语句地结果可以行集合操作。集合操作主要包括并(union),(intersect)与差(except)。注意,参加操作地各查询结果地列数与对应项地数据类型都需要相同例三-二六查询年龄是一八岁地男生。解释:UNION取地是两者地并集。SELECT*FROMStudentWHERESage='一八'UNIONSELECT*FROMStudentWHERESsex='男';第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.五更新数据三.五.一插入数据三.五.二修改数据三.五.三删除数据2024年4月18日

三.五.一插入数据2024年4月18日

插入语句INSERT地一般格式如下。一.插入一条完整属地数据例三-二七二零一六年,小明来学校报道,学校要将小明地基本信息插入学生信息表。小明地个信息为(学号:二零一六零一零八,姓名:小赵,别:男,所在系:计算机,年龄:一九)。INSERTINTO<表名称>[(<属列一>[,<属列二>...])]VALUE(<常量一>[,<常量二>]...);INSERTINTOStudentVALUE('二零一六零一零八','小赵','男','一九','计算机系');三.五.一插入数据2024年4月18日

二.插入一条属不完整地数据并更新例三-二八二零一六年,小孙来学校报道,学校要将小孙地基本信息插入学生信息表。小孙地个信息为(学号:二零一六零一零九,姓名:小孙,别:男,所在系:计算机),小孙忘记写自己地年龄了,但是信息需要录入,年龄信息以后再补。INSERTINTOStudent(Sno,Sname,Ssex,Sdepartment)VALUE('二零一六零一零九','小孙','男','计算机');三.五.一插入数据2024年4月18日

二.插入一条属不完整地数据并更新下面为更新年龄信息地代码。UPDATEStudentSETSage='一七'WHERESno='二零一六零一零九';SELECT*FROMStudent;三.五.一插入数据2024年4月18日

三.插入一个查询结果例三-二九求每一系地学生地均年龄。CREATETABLEAvgage_dept(SdepartmentCHAR(二零),Avgagesamallint);INSERTINTOAvgage_dept(Sdepartment,Avgage)SELECTSdepartment,AVG(Sage)FROMStudentGROUPBYSdepartment;三.五更新数据三.五.一插入数据三.五.二修改数据三.五.三删除数据2024年4月18日

三.五.二修改数据2024年4月18日

例三-三零将学生小赵地年龄改为二二岁。例三-三一将所有地年龄增加一岁。例三-三二将计算机系所有学生地所有课程都改为六零分。UPDATEStudentSETSage=二二WHERESno='二零一六零一零一',UPDATEStudentSETSage=Sage+一;UPDATESCSETResult=六零WHERE'计算机系'=(SELECTSdepartmentFROMStudentWHEREStudent.Sno=SC.Sno);三.五.二修改数据2024年4月18日

修改一个表地数据时,要保证数据库所有表数据地一致。例三-三三李明由于学好要跳级,所以要更改李明地学号,由二零一六零一零一改成二零一六零二零一。解释:(一)由于Sno属不只存在一张表,在更新数据时要修改属存在地所有表,以保持数据库数据地一致。(二)为了解决数据库数据一致地问题,同时又不用繁琐地把每个表都更新一遍,数据库系统引入了事务(Transaction)地概念,这将在后面介绍。UPDATEStudentSETSno='二零一六零二零一'WHERESno='二零一六零一零一';UPDATESCSETSno=’二零一六零二零一’WHERESno=’二零一六零一零一’;三.五更新数据三.五.一插入数据三.五.二修改数据三.五.三删除数据2024年4月18日

三.五.三删除数据2024年4月18日

一.删除整个表地内容例三-三四删除所有学生地选课记录。二.删除某些元组地内容例三-三五删除计算机系学生地选课记录。DELETEFROMSC;DELETEFROMSCWHERESnoIN(SELECTSnoFROMStudentWHERESdepartment=’计算机系’);第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.六关于视图2024年4月18日

视图是一个虚拟表,其内容由查询定义。同基本表一样,视图包含一系列带有名称地列与行地数据。视图地数据并不是存储在视图,而是存储在原基本表。行与列数据来自定义视图地查询时所用地基本表,并且在引用视图时可以动态生成。对于视图引用地基本表来说,视图地作用类似于筛选。视图通常用来集,简化与自定义每个用户对数据库地不同需要,并且视图还可以用作安全机制,允许用户通过视图访问数据,而不授予用户直接访问基本表地权限。三.六关于视图2024年4月18日

SQLCREATEVIEW语句地一般格式如下。例三-三六建立计算机系学生地视图。CREATEVIEW<视图名>[(<列名>)[,<列名>]..)]AS<子查询>[WITHCHECKOPTION];CREATEVIEWputerASSELECTSno,Sname,SageFROMStudentWHERESdepartment='计算机系';三.六关于视图2024年4月18日

例三-三七删除计算机系学生地视图例三-三八建立计算机系学生地视图,列名分别为No,Name,Age。DROPVIEWputer_Student;CREATEVIEWputer(No,Name,Age)ASSELECTSno,Sname,SageFROMStudentWHERESdepartment=’计算机系’;第三章关系数据库标准语言SQL三.一SQL概述三.二MySQL数据库简介三.三定义数据三.四查询数据三.五更新数据三.六视图三.七小结2024年4月18日

三.七小结2024年4月18日

SQL是最重要,最常用地数据查询语言。下面对数据查询语言地特点行总结。简单地Transact-结构化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论