关系数据库标准SQL语言.ppt
《关系数据库标准SQL语言.ppt》由会员分享,可在线阅读,更多相关《关系数据库标准SQL语言.ppt(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多表连接查询多表连接查询 关系数据库中,多个表可以使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 SQL 语言
限制150内