关系数据库标准SQL语言

上传人:沈*** 文档编号:232292944 上传时间:2023-09-16 格式:PPT 页数:75 大小:2.13MB
收藏 版权申诉 举报 下载
关系数据库标准SQL语言_第1页
第1页 / 共75页
关系数据库标准SQL语言_第2页
第2页 / 共75页
关系数据库标准SQL语言_第3页
第3页 / 共75页
资源描述:

《关系数据库标准SQL语言》由会员分享,可在线阅读,更多相关《关系数据库标准SQL语言(75页珍藏版)》请在装配图网上搜索。

1、关系数据库标准关系数据库标准SQLSQL语言语言3.1 数据定义概述1lSQL(Structured SQL(Structured Query Query LanguageLanguage,结结构构化化查查询询语语言言)语语言言是是由由IBMIBM的的圣圣约约瑟瑟研研究究室室为为其其关关系系数数据据库库管管理理系系统统SYSTEM SYSTEM R R开开发发的的一一种种查查询语言询语言 。lSQLSQL语语言言功功能能强强大大,可可以以完完成成数数据据查查询询、数数据据定定义义和和数数据据控控制制等等功功能能,几几乎乎贯贯穿穿了了数数据据库生命周期中的全部活动。库生命周期中的全部活动。23.

2、1数据定义 SQL语言的特点3l面向集合语言面向集合语言采用集合操作方式,操作对象和查找结果可以是元组集采用集合操作方式,操作对象和查找结果可以是元组集合,而不仅仅是一个记录。合,而不仅仅是一个记录。充分利用了关系数据库的优点,极大地提高了系统运行充分利用了关系数据库的优点,极大地提高了系统运行的效率。的效率。例如:用户可以在数据库管理系统软件模块中直接使用例如:用户可以在数据库管理系统软件模块中直接使用SQL命令,修改或查询数据库。命令,修改或查询数据库。63.1数据定义 SQL语言的特点4l可以独立使用,也可以嵌入到宿主语言可以独立使用,也可以嵌入到宿主语言既是自含式语言,又是嵌入式语言。

3、既是自含式语言,又是嵌入式语言。例如,例如,SQL可以嵌入到高级语言(如可以嵌入到高级语言(如C+,BASIC等)等)中,应用程序员和高级用户可以用中,应用程序员和高级用户可以用SQL语言开发语言开发应用程序。应用程序。73.1数据定义 SQL语言的特点5l功能强大,集查询、定义、操纵和控制于一体功能强大,集查询、定义、操纵和控制于一体 使用使用SQL语言可以定义关系模式、创建数据库、插语言可以定义关系模式、创建数据库、插入数据、更新数据、复杂查询、维护数据、重构数入数据、更新数据、复杂查询、维护数据、重构数据库、控制数据库安全等等。据库、控制数据库安全等等。几乎可以满足数据库所有操作。几乎可

4、以满足数据库所有操作。83.1数据定义句法定义1l创建表创建表建立表结构的建立表结构的SQL语句格式如下:语句格式如下:CREATE TABLE (列级完整性约束条件列级完整性约束条件,列级完整性约束条件列级完整性约束条件,.表级完整表级完整性约束条件性约束条件)完整性约束是指在建立表的同时创建的完整性约束条件,可完整性约束是指在建立表的同时创建的完整性约束条件,可以在列级,也可以在表级。常用的有:以在列级,也可以在表级。常用的有:NOT NULL(字段中字段中不允许有空值不允许有空值),UNIQUE(字段取值唯一字段取值唯一),PRIMARY KEY(字段为主键字段为主键)等。等。93.1数

5、据定义句法定义2例:使用例:使用SQL语句建立一个表,表名为语句建立一个表,表名为stu_info,字段包括学号字段包括学号NO(10位)、姓名位)、姓名NAME(最多(最多4个汉字)、性别个汉字)、性别GENDER、住址、住址ADDRESS(最(最多多20个汉字)。其中,学号、姓名和性别为必填个汉字)。其中,学号、姓名和性别为必填项;学号唯一。项;学号唯一。CREATE TABLE stu_info(NO char(10)NOT NULL UNIQUE,NAME char(8)NOT NULL,GENDER char(1)NOT NULL,ADDRESS char(40)因为一个汉字占用两个

6、字节,因此姓名使用char(8)表示。性别可以用M/F代表,用一个字符即可表示。字段取值唯一字段取值唯一字段取值唯一字段取值唯一103.1数据定义句法定义3l修改表修改表修改表结构的修改表结构的SQL语句格式如下:语句格式如下:ALTER TABLE ADD 完整性约束条件完整性约束条件DROP MODIFY .ADD子句用于为现有的表增加字段。子句用于为现有的表增加字段。DROP子句用于删除一个指定的完整性约束子句用于删除一个指定的完整性约束 NOT NULL(字段中不允许有空值字段中不允许有空值),UNIQUE(字段取值字段取值唯一唯一),PRIMARY KEY(字段为主键字段为主键)等。

7、等。MODIFY子句用于修改表的某个字段的名称或类型。子句用于修改表的某个字段的名称或类型。113.1数据定义句法定义4例:在上节建立的表例:在上节建立的表(表名为表名为stu_info)中增加中增加“出生日期出生日期”字段字段BIRTHDAY,该字段为必,该字段为必填项。填项。ALTER TABLE stu_info ADD BIRTHDAY DATE NOT NULL 123.1数据定义句法定义5l删除表删除表 删除表的删除表的SQL语句格式如下:语句格式如下:DROP TABLE 表删除后,表的结构定义从数据字典中消失,表删除后,表的结构定义从数据字典中消失,表的索引和视图被一起删除,表

8、中的所有数据表的索引和视图被一起删除,表中的所有数据也全部被删除。也全部被删除。例:删除例:删除stu_info表表 DROP TABLE stu_info 133.1数据定义句法定义6l索引的概念索引的概念 索引是数据库的一种功能,对表建立索引可以加快索引是数据库的一种功能,对表建立索引可以加快对索引字段的查询、排序和分组操作。对索引字段的查询、排序和分组操作。比如,图书馆中的书名索引卡、作者索引卡,就类似于在图比如,图书馆中的书名索引卡、作者索引卡,就类似于在图书数据库中建立了两个索引,可以加快检索速度。书数据库中建立了两个索引,可以加快检索速度。例如,如果在例如,如果在“姓名姓名”字段中

9、搜索某一学生的姓名,则可以字段中搜索某一学生的姓名,则可以创建该字段的索引,以加快搜索的速度。创建该字段的索引,以加快搜索的速度。基本表上可以建立多个索引,但过多的索引会使数据库自身基本表上可以建立多个索引,但过多的索引会使数据库自身维护负担加重,使数据插入和更新的效率降低。维护负担加重,使数据插入和更新的效率降低。143.1数据定义句法定义7l建立索引建立索引 建立索引的建立索引的SQL语句格式如下:语句格式如下:CREATE UNIQUE CLUSTER INDEX ON (,.)索引名是指为某个表创建的索引的名称;索引名是指为某个表创建的索引的名称;UNIQUE(字段取值唯一字段取值唯一

10、)表明本索引的每一个索引值只对应唯表明本索引的每一个索引值只对应唯一的数据记录,例如,每个学生的学号唯一对应一个学生的信一的数据记录,例如,每个学生的学号唯一对应一个学生的信息;息;CLUSTER表示要建立聚簇索引表示要建立聚簇索引,即索引项的顺序和表记录的,即索引项的顺序和表记录的物理顺序一致的索引。聚簇索引可以提高查询效率,但更新记物理顺序一致的索引。聚簇索引可以提高查询效率,但更新记录会带来额外的开销。录会带来额外的开销。153.1数据定义句法定义8例:为表stu_info建立按照姓名和生日的索引 Idx_1 CREATE UNIQUE INDEX Idx_1 ON stu_info(N

11、AME,BIRDAY)163.1数据定义句法定义9l删除索引删除索引 删除索引的删除索引的SQL语句格式如下:语句格式如下:DROP INDEX 例:删除例:删除Idx_1索引。索引。DROP INDEX Idx_1 ON stu_info 173.1数据定义数据查询1 SELECT语句的格式为语句的格式为SELECT ALL|DISTINCT ,.FROM ,.WHERE GROUP BY HAVING ORDER BY ASC|DESC 根据根据WHERE子句的条件表达式,从子句的条件表达式,从FROM中指定的表或视图中找中指定的表或视图中找出所有满足条件的元组,再根据目标字段选取记录中的

12、属性值,形出所有满足条件的元组,再根据目标字段选取记录中的属性值,形成一个最终的结果表。如果有成一个最终的结果表。如果有GROUP子句,则将结果按照列名子句,则将结果按照列名1进行分组,属性列值相等的元组为一个组。如果进行分组,属性列值相等的元组为一个组。如果GROUP子句还带子句还带有有HAVING,表示只有满足某种条件的组才输出。如果有,表示只有满足某种条件的组才输出。如果有ORDER子句,表示结果表是按照列名子句,表示结果表是按照列名2升序升序(ASC)或降序或降序(DESC)排序过的。排序过的。183.1数据定义数据查询2学生信息表(表名为:stu_info)SNO(学号)NAME(姓

13、名)GENDER(性别)BIRDAY(生日)CLASS(班级)021601李平男11-NOV-1980自-0205021635刘小梅女16-JAN-1980机-0203021608张力男03-MAR-1979自-0205021638王珊女08-JUN-1981机-0203 教师信息表(表名为:tea_info)TNO(教师编号)NAME(姓名)GENDER(性别)TITLE(职称)DEPT(系别)805李奇女讲师基础部808张学成男教授基础部856薛智永男教授信息学院193.1数据定义数据查询3课程表(表名为:cur_info)CNO(课程编号)DESCP(课程名称)PERIOD(学时)TNO

14、(主讲老师编号)005036高等数学64808005067微机基础40805005132数据结构64856005004工程制图64808203.1数据定义数据查询4成绩表(表名为:sco_info)SNO(学号)CNO(课程编号)SCORE(成绩)021601005036960216350050361000216080050369202163800503693021601005067910216350050678802160800506796021638005067910216010051328702160800513291213.1数据定义数据查询5l简单查询 例:输出所有学生的信息。SEL

15、ECT*FROM stu_info结果为:SNO NAME GE BIRDAY CLASS-021601 李平 男 11-NOV-80 自-0205021635 刘小梅 女 16-JAN-80 机-0203021608 张力 男 03-MAR-79 自-0205021638 王珊 女 08-JUN-81 机-0203这里的*代表所有列。223.1数据定义数据查询6例:输出所有教师的姓名和职称信息。例:输出所有教师的姓名和职称信息。SELECT NAME,TITLE FROM tea_info结果为:结果为:NAME TITLE-李奇李奇 讲师讲师张学成张学成 教授教授薛智永薛智永 教授教授23

16、3.1数据定义数据查询7例:输出所有学生属于哪些班。例:输出所有学生属于哪些班。SELECT CLASS FROM stu_info-自自-0205机机-0203自自-0205机机-0203这里班级有重复。如果去除重复的元组,可用这里班级有重复。如果去除重复的元组,可用DISTINCTSELECT DISTINCT CLASS FROM stu_info结果为:结果为:-机机-0203自自-0205 243.1数据定义数据查询8l用WHERE子句查询 用WHERE子句可以查找满足一定条件的元组,WHERE子句常用的查询条件如下:查询条件谓词比较=,=,=,!=,!,!#1980-05-15#结

17、果为:结果为:SNO NAME GE BIRDAY CLASS-021638 王珊王珊 女女 08-JUN-81 机机-0203 273.1数据定义数据查询11例:输出分数在例:输出分数在90至至95区段的所有学生的学号。区段的所有学生的学号。SELECT DISTINCT SNO FROM sco_info WHERE SCORE BETWEEN 90 AND 95结果为:结果为:SNO-021601021608021638 283.1数据定义数据查询12例:输出所有不是例:输出所有不是机械学院机械学院和和信息学院信息学院系的老师的信息。系的老师的信息。SELECT*FROM tea_inf

18、o WHERE DEPT NOT IN(机械学院机械学院,信息学院信息学院)结果为:结果为:TNO NAME GE TITLE DEPT-805 李奇李奇 女女 讲师讲师 基础部基础部808 张学成张学成 男男 教授教授 基础部基础部 293.1数据定义数据查询13例:输出所有姓张的学生的信息。例:输出所有姓张的学生的信息。SELECT*FROM stu_info WHERE NAME LIKE 张张*结果为:结果为:SNO NAME GE BIRDAY CLASS-021608 张力张力 男男 03-MAR-79 自自-0205 SQL语句中,语句中,*是极为重要的模糊查询手段,是极为重要的

19、模糊查询手段,*其中代表任其中代表任意长度的字符串。意长度的字符串。例如,名字含有例如,名字含有“小小”,可以使用,可以使用*小小*;名字的最后一个子是;名字的最后一个子是“军军”,可以用,可以用*军军,等等。,等等。注:注:SQL92标准中规定而使用标准中规定而使用*而不是而不是%,一般大型数据库,一般大型数据库 如如Oracle,SQL Server等均使用等均使用%303.1数据定义数据查询14l查询结果排序查询结果排序 可以使用可以使用ORDER BY子句对输出结果表排序,缺省为升序子句对输出结果表排序,缺省为升序(ASC),也可以使用降序(),也可以使用降序(DESC)。)。例:输出

20、所有学生信息,结果按照学号降序排列。例:输出所有学生信息,结果按照学号降序排列。SELECT*FROM stu_info ORDER BY SNO DESC结果为:结果为:SNO NAME GE BIRDAY CLASS-021638 王珊王珊 女女 08-JUN-81 机机-0203021635 刘小梅刘小梅 女女 16-JAN-80 机机-0203021608 张力张力 男男 03-MAR-79 自自-0205021601 李平李平 男男 11-NOV-80 自自-0205313.1数据定义数据查询15例:输出所有女生信息,结果按照姓名和出生日期排列(即例:输出所有女生信息,结果按照姓名和

21、出生日期排列(即先按照姓名排序,姓名相同的学生再按照出生日期排序)。先按照姓名排序,姓名相同的学生再按照出生日期排序)。SELECT*FROM stu_info WHERE GENDER=女女 ORDER BY NAME,BIRDAY结果为:结果为:SNO NAME GE BIRDAY CLASS-021635 刘小梅刘小梅 女女 16-JAN-80 机机-0203021638 王珊王珊 女女 08-JUN-81 机机-0203 323.1数据定义数据查询16l查询结果分组查询结果分组可以使用可以使用GROUP BY将查询结果按照某一列或多列进行将查询结果按照某一列或多列进行分组,值相同的分为

22、一组。分组,值相同的分为一组。例:统计每门课程的选课人数。例:统计每门课程的选课人数。SELECT CNO,COUNT(SNO)FROM sco_info GROUP BY CNO结果为:结果为:CNO COUNT(SNO)-005036 4005067 4005132 2 333.1数据定义数据查询17分组后,还可以使用分组后,还可以使用HAVING关键字进行关键字进行筛选筛选。例:统计选课人数少于例:统计选课人数少于3人的课程编号和选课人数。人的课程编号和选课人数。SELECT CNO,COUNT(SNO)FROM sco_info GROUP BY CNO HAVING COUNT(SN

23、O)3 结果为:结果为:CNO COUNT(SNO)-005132 2 复习343.1数据定义数据查询18l集函数集函数 SQL语言提供了集函数以增强检索功能,常见的集函数如语言提供了集函数以增强检索功能,常见的集函数如下表所示下表所示(如果在语句中使用如果在语句中使用DISTINCT,那么在计算时将,那么在计算时将取消输出列中的重复值取消输出列中的重复值):格式功能COUNT(DISTINCT|ALL*)计算所有元组的个数COUNT(DISTINCT|ALL )计算某一列中值的个数SUM(DISTINCT|ALL )某一列值求和(列必须为数值型)AVG(DISTINCT|ALL )某一列值求

24、平均值(列必须为数值型)MAX(DISTINCT|ALL )求某一列中的最大值MIN(DISTINCT|ALL )求某一列中的最小值353.1数据定义数据查询19例:统计所有课程的总数。例:统计所有课程的总数。SELECT COUNT(*)FROM cur_info结果为:结果为:COUNT(*)-4例:计算学号为例:计算学号为021608的学生的平均成绩。的学生的平均成绩。SELECT AVG(SCORE)FROM sco_info WHERE SNO=021608结果为:结果为:AVG(SCORE)-93363.1数据定义数据查询20l多表连接查询多表连接查询 关系数据库中,多个表可以使用

25、连接谓词连接起来。连接谓关系数据库中,多个表可以使用连接谓词连接起来。连接谓词可以使用一些比较运算符和词可以使用一些比较运算符和BETWEEN(如(如 BETWEEN 90 AND 100)等,其中最为常用的连接谓词是等号,称为)等,其中最为常用的连接谓词是等号,称为等值连接。等值连接。下面以两个表为例,说明连接的基本过程:先在表下面以两个表为例,说明连接的基本过程:先在表1中中找到第找到第1个元组,然后在表个元组,然后在表2中找到满足连接条件的所有中找到满足连接条件的所有元组,并和表元组,并和表1的第一个元组连接起来,形成结果表中的第一个元组连接起来,形成结果表中的第的第1部分;然后在表部分

26、;然后在表1中找到第中找到第2个元组,继续上述过个元组,继续上述过程,结果再继续添加到结果表中;程,结果再继续添加到结果表中;.,依次处理表,依次处理表1中的所有元组直到结束。中的所有元组直到结束。373.1数据定义数据查询21例:输出例:输出“高等数学高等数学”课程的编号、学时和主讲老师的姓名、职称。课程的编号、学时和主讲老师的姓名、职称。SELECT cur_info.CNO,cur_info.PERIOD,tea_info.NAME,tea_info.TITLE FROM cur_info,tea_info WHERE cur_info.TNO=tea_info.TNO AND cur_

27、info.DESCP=高高等数学等数学 383.1数据定义数据查询22在指明列名时,这里使用了连接符在指明列名时,这里使用了连接符.,表示某个表的列名。,表示某个表的列名。有时表名比较长,有时表名比较长,SQL语句比较复杂时,也可以指定表的别名,语句比较复杂时,也可以指定表的别名,用来简化用来简化SQL语句。例如前面的语句。例如前面的SQL语句语句:SELECT cur_info.CNO,cur_info.PERIOD,tea_info.NAME,tea_info.TITLE FROM cur_info,tea_info WHERE cur_info.TNO=tea_info.TNO AND

28、cur_info.DESCP=高等数学高等数学 或:或:SELECT A.CNO,A.PERIOD,B.NAME,B.TITLE FROM cur_info A,tea_info B WHERE A.TNO=B.TNO AND A.DESCP=高等数学高等数学如果列名在参加连接的各表中唯一,也可以省略表名的前缀,但如果列名在参加连接的各表中唯一,也可以省略表名的前缀,但为了为了SQL语句的可读性,最好还是加上表名的前缀。语句的可读性,最好还是加上表名的前缀。393.1数据定义数据查询23例:输出例:输出“005036”课程成绩高于课程成绩高于“021638”同学的所有同学同学的所有同学的学号和

29、成绩。的学号和成绩。SELECT C.SNO,C.SCORE FROM sco_info C,sco_info D WHERE C.SCORED.SCORE AND D.SNO=021638 AND C.CNO=005036 AND D.CNO=005036 这是一个表自身连接的例子,运行结果为:这是一个表自身连接的例子,运行结果为:SNO SCORE -021601 96 021635 100 403.1数据定义数据查询21例:输出张力同学的例:输出张力同学的“微机基础微机基础”课程的成绩。这一个三个表连接的例子课程的成绩。这一个三个表连接的例子SELECT stu_info.NAME,cu

30、r_info.DESCP,sco_info.SCORE FROM stu_info,cur_info,sco_info WHERE stu_info.SNO=sco_info.SNO AND cur_info.CNO=sco_info.CNO AND stu_info.NAME=张力张力 AND cur_info.DESCP=微机基础微机基础三个表两两连接413.1数据定义数据查询25l嵌套查询嵌套查询 当把一个查询作为另一个查询的条件时,前者当把一个查询作为另一个查询的条件时,前者的查询块嵌入后者的的查询块嵌入后者的WHERE或或HAVING子句中,子句中,形成嵌套查询。嵌套查询增强了形成嵌

31、套查询。嵌套查询增强了SQL的查询能的查询能力,几个简单查询可以结合构成功能强大的复力,几个简单查询可以结合构成功能强大的复合命令。合命令。嵌套查询的求解方法一般是由里向外逐层求解。嵌套查询的求解方法一般是由里向外逐层求解。注意子查询的注意子查询的SELECT语句中不能使用语句中不能使用ORDER BY子句,子句,ORDER BY只用于最终的结果表排序。只用于最终的结果表排序。423.1数据定义数据查询26例:输出所有与张力同班的学生。例:输出所有与张力同班的学生。SELECT*FROM stu_info WHERE CLASS IN (SELECT CLASS FROM stu_info W

32、HERE NAME=张力张力)结果为:结果为:SNO NAME GE BIRDAY CLASS -021601 李平李平 男男 11-NOV-80 自自-0205 021608 张力张力 男男 03-MAR-79 自自-0205谓词谓词IN是嵌套查询中经常使用的谓词,系统在运行是嵌套查询中经常使用的谓词,系统在运行SQL语句时,语句时,先处理内层的语句,得到张力的班级信息后,进一步得到与之同先处理内层的语句,得到张力的班级信息后,进一步得到与之同班的学生信息。班的学生信息。433.1数据定义数据查询27当内层查询返回的值一定是单值时,可以使用比较运算符。当内层查询返回的值一定是单值时,可以使用

33、比较运算符。例:输出李奇老师任课班级的所有学生的成绩。例:输出李奇老师任课班级的所有学生的成绩。SELECT*FROM sco_info WHERE CNO=(SELECT B.CNO FROM tea_info A,cur_info B WHERE A.TNO=B.TNO AND A.NAME=李奇李奇)注意注意:子查询不能位于等号之前子查询不能位于等号之前。运行结果为:运行结果为:SNO CNO SCORE-021601 005067 91021635 005067 88021608 005067 96021638 005067 91课程表443.1数据定义数据查询28例:输出成绩比该课程

34、平均成绩低的学生的成绩信息。例:输出成绩比该课程平均成绩低的学生的成绩信息。SELECT*FROM sco_info A WHERE SCOREANY表示大于子查询结果中的某一个值;表示大于子查询结果中的某一个值;ALL表示大于子查询结果中的所有值。表示大于子查询结果中的所有值。例:输出其他课程中比例:输出其他课程中比005036课程所有分数更低的学号、课课程所有分数更低的学号、课程号和成绩。程号和成绩。SELECT*FROM sco_info WHERE SCOREALL(SELECT SCORE FROM sco_info WHERE CNO=005036)AND CNO005036 46

35、3.1数据定义数据查询30上题用集函数的上题用集函数的SQL语句为:语句为:SELECT*FROM sco_info WHERE SCORE(SELECT MIN(SCORE)FROM sco_info WHERE CNO=005036 )AND CNO005036一般来说,采用集函数的一般来说,采用集函数的SQL语句的查询效率要高一些。语句的查询效率要高一些。473.1数据定义数据查询31l带有带有EXISTS的子查询的子查询 EXISTS谓词表示是否存在的逻辑值。带有谓词表示是否存在的逻辑值。带有EXISTS的子查的子查询不返回任何元组,而是逻辑值真(询不返回任何元组,而是逻辑值真(TUR

36、E)或假)或假(FALSE)。)。例:输出所有选修了例:输出所有选修了005132课程的学生信息。课程的学生信息。SELECT*FROM stu_info WHERE EXISTS(SELECT*FROM sco_info WHERE SNO=stu_info.SNO AND CNO=005132 )48493.1数据定义数据查询32例:输出未选修例:输出未选修005132课程的学生信息。课程的学生信息。SELECT*FROM stu_info WHERE NOT EXISTS (SELECT *FROM sco_info WHERE SNO=stu_info.SNO AND CNO=0051

37、32)结果为:结果为:SNO NAME GENDER BIRDAY CLASS-021635 刘小梅刘小梅 女女 16-JAN-80 机机-0203021638 王珊王珊 女女 08-JUN-81 机机-0203 503.2 数据操纵 l插入数据插入数据 SQL语言的数据插入使用语言的数据插入使用INSERT语句语句 INSERT INTO (,.)VALUES(,.)说明:说明:如果选择了如果选择了VALUES前的字段名称,则前的字段名称,则VALUES后的常量必须后的常量必须与其一一对应;如果没有字段名称,则与其一一对应;如果没有字段名称,则VALUES后要给出所有后要给出所有字段的值;字

38、段的值;常量的表示:如果是字符型或者日期型,其值要用单引号或常量的表示:如果是字符型或者日期型,其值要用单引号或括起来;括起来;对于在对于在INSERT语句中未出现的字段,记录插入时被赋予语句中未出现的字段,记录插入时被赋予NULL;而对应有;而对应有NOT NULL约束或作为索引的字段,必须给出非空约束或作为索引的字段,必须给出非空值。值。51 3.2 数据操纵 例:向例:向stu_info表中插入一个学生的记录:学号表中插入一个学生的记录:学号=031156,姓名姓名=王兵,性别王兵,性别=男,出生日期男,出生日期=1980年年5月月16日,日,专业专业=计算机。计算机。INSERT IN

39、TO stu_info VALUES(031156,王兵王兵,M,#1980-05-16#,计算机计算机)52例:向例:向stu_info表中插入一个学生的记录:表中插入一个学生的记录:学号学号=031123,姓名,姓名=李倩,性别李倩,性别=女。女。INSERT INTO stu_info(SNO,NAME,GENDER)VALUES(031123,李倩李倩,F)3.2 数据操纵 53 3.2 数据操纵 l修改数据修改数据 数据修改使用数据修改使用UPDATE语句,格式为:语句,格式为:UPDATE SET =,=.WHERE 说明:说明:lUPDATE语句的功能是修改满足语句的功能是修改满

40、足WHERE条件的所有记录;条件的所有记录;l如果没有如果没有WHERE,则修改表中所有的记录。,则修改表中所有的记录。l语句中可以嵌套子查询。语句中可以嵌套子查询。543.2 数据操纵 例:将学号为例:将学号为031156学生的出生日期改为学生的出生日期改为1981年年2月月3日。日。UPDATE stu_info SET BIRDAY=#1981-02-03#WHERE SNO=031156 553.2 数据操纵例:将所有学生的出生日期改为例:将所有学生的出生日期改为1981年年2月月3日。日。UPDATE stu_info SET BIRDAY=#1981-02-03#563.2 数据操

41、纵 l删除数据删除数据 删除数据使用删除数据使用DELETE语句,格式为:语句,格式为:DELETE FROM WHERE 说明:说明:l功能是删除满足功能是删除满足WHERE条件的所有记录;条件的所有记录;l如果没有如果没有WHERE,则表中所有的记录都被删除。,则表中所有的记录都被删除。573.2 数据操纵例:删除学号为例:删除学号为031156学生的记录。学生的记录。DELETE FROM stu_info WHERE SNO=031156 583.3 视图 视图是一种视图是一种虚拟虚拟的表,视图在定义后,可以和基本表一样在的表,视图在定义后,可以和基本表一样在数据查询和数据操纵语句中使

42、用。数据查询和数据操纵语句中使用。但是,数据库中只有视图的定义,并不专门存放视图对应的但是,数据库中只有视图的定义,并不专门存放视图对应的数据。换句话说,系统在内部自动进行转换,将对视图的一数据。换句话说,系统在内部自动进行转换,将对视图的一切操作转换为对基本表的操作。切操作转换为对基本表的操作。合理使用视图,可以为用户提供数据的不同观察角度,隐蔽合理使用视图,可以为用户提供数据的不同观察角度,隐蔽不感兴趣的数据,简化用户的操作。不感兴趣的数据,简化用户的操作。593.3 视图 l定义视图定义视图 定义视图使用定义视图使用CREATE VIEW语句,格式为:语句,格式为:CREATE VIEW

43、 (,.)AS WITH CHECK OPTION说明:子查询中不允许含有说明:子查询中不允许含有ORDER BY(排序排序)和和DISTINCT(去除去除重复重复);l组成视图的字段或者全部省略,或者全部指定;组成视图的字段或者全部省略,或者全部指定;lWITH CHECK OPTION表示对视图进行表示对视图进行UPDATE,INSERT和和DELETE操作时要保证更新、插入或删除的记录满足视图定义中操作时要保证更新、插入或删除的记录满足视图定义中的子查询条件。的子查询条件。603.3 视图例:建立例:建立stu_info表中所有男生的视图表中所有男生的视图M_STU,要求,要求新输入学生

44、后仍保证该视图只有男生。新输入学生后仍保证该视图只有男生。CREATE VIEW M_STU AS SELECT NO,NAME,ADDRESS FROM stu_info WHERE GENDER=M WITH CHECK OPTION 同步更新同步更新613.3 视图 例:找出所有姓张的男生的学号。例:找出所有姓张的男生的学号。SELECT NO FROM M_STU WHERE NAME LIKE 张张*系统在执行这条系统在执行这条SQL语句时,实际上先转换为:语句时,实际上先转换为:SELECT NO FROM stu_info WHERE NAME LIKE 张张*AND GENDE

45、R=M 623.3 视图 例:在视图例:在视图M_STU中更新姓名为中更新姓名为王中王中的学生记录,将其的学生记录,将其地址更新为地址更新为上海浦东上海浦东。UPDATE M_STU SET ADDRESS=上海浦东上海浦东 WHERE NAME=王中王中 系统在执行这条系统在执行这条SQL语句时,实际上先转换为:语句时,实际上先转换为:UPDATE stu_info SET ADDRESS=上海浦东上海浦东 WHERE NAME=王中王中 AND GENDER=M 633.3 视图 l删除视图删除视图 删除视图使用删除视图使用DROP VIEW语句,格式为:语句,格式为:DROP VIEW

46、例:删除视图例:删除视图M_STU。DROP VIEW M_STU 64思考题l【第第1题题】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期(D);是否团员(L);备注(M)。l【第第2题题】将成绩表(SC)中,所有课程号为02的成绩各加5分。65思考题【第第3题题】删除删除STUD表中所有性别为男的记录。表中所有性别为男的记录。【第第4题题】显示显示STUD表中的所有记录。表中的所有记录。【第第5题题】显示显示STUD表中的所有的学号及与之对应表中的所有的学号及与之对应的

47、姓名,同时能去除重名。的姓名,同时能去除重名。【第第6题题】显示显示STUD表中出生日期在表中出生日期在85年与年与86年年之间的学生的学号,姓名,出生日期。之间的学生的学号,姓名,出生日期。66思考题【第7题】显示STUD表中姓李的学生的学号,姓名,出生日期。【第8题】按出生日期降序显示STUD表中的学号,姓名,出生日期。67答案l【第第1题题】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期(D);是否团员(L);备注(M);照片(G)。lCREATE TABLE STU

48、D(学号(学号 C(10),姓名),姓名 C(10),性别),性别 C(2),班级名),班级名 C(10),系别代系别代号号 C(2),地址地址 C(50),出生日期出生日期 D,是否团员是否团员 L,备注备注 M,照片照片 G)68答案l【第2题】将成绩表(SC)中,所有课程号为02的成绩各加5分。l UPDATE SC SET 成绩成绩=成绩成绩+5 WHERE 课程号课程号=0269答案l【第第3题题】删除STUD表中所有性别为男的记录。DELETE FROM STUD WHERE 性别性别=男男l【第第4题题】显示STUD表中的所有记录。SELECT *FROM STUD70答案【第第

49、5题题】显示STUD表中的所有的学号及与之对应的姓名,同时能去除重名。SELECT DISTINCT 学号,姓名学号,姓名FROM STUD71答案【第第6题题】显示STUD表中出生日期在85年与86年之间的学生的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期FROM STUD WHERE 出生日期出生日期 BETWEEN#1985-01-01#AND#1986-12-31#72答案【第第7题题】显示STUD表中姓李的学生的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期FROM STUD WHERE 姓名姓名 LIKE 李李*73答案【第第8题题】按出生日期降序显示STUD表中的学号,姓名,出生日期。SELECT 学号,姓名,出生日期学号,姓名,出生日期 FROM STUD ORDER BY 出生日期出生日期 DESC74结束结束

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!