-关系数据库标准语言SQL教学课件.ppt

上传人(卖家):ziliao2023 文档编号:6241187 上传时间:2023-06-15 格式:PPT 页数:162 大小:1.29MB
下载 相关 举报
-关系数据库标准语言SQL教学课件.ppt_第1页
第1页 / 共162页
-关系数据库标准语言SQL教学课件.ppt_第2页
第2页 / 共162页
-关系数据库标准语言SQL教学课件.ppt_第3页
第3页 / 共162页
-关系数据库标准语言SQL教学课件.ppt_第4页
第4页 / 共162页
-关系数据库标准语言SQL教学课件.ppt_第5页
第5页 / 共162页
点击查看更多>>
资源描述

1、第四章 关系数据库标准语言SQLSQL Server 2008 表的创建与操作SQL语言概述1第四章 SQL Server2008表的创建与操作掌握表的创建、修改和删除操作了解表的基本知识熟练掌握记录的插入、删除和修改操作了解索引的基本知识目标SQL Server 200824.1 SQL Server 2008表的基本知识 表的基本概念表的基本概念1 表的类型表的类型2 表的数据类型表的数据类型3 表的完整性体现表的完整性体现41 表的设计表的设计5SQL Server 200834.1.1表的基本概念 表是数据库对象,用于存储实体集和实体间联系的表是数据库对象,用于存储实体集和实体间联系的

2、数据。数据。SQL Server 2008表主要由列和行构成。关表主要由列和行构成。关系模型的组成要素系模型的组成要素 列:每一列用来保存对象的某一类属性。列:每一列用来保存对象的某一类属性。行:每一行用来保存一条记录,是数据对象的一个实例行:每一行用来保存一条记录,是数据对象的一个实例。SQL Server 200844.1.1表的基本概念 例如:教务管理数据库EDUC中的学生Student表。SQL Server 200854.1.2 表的类型SQL Server 2008除了提供了用户定义的标准表外,除了提供了用户定义的标准表外,还提供了一些特殊用途的表:分区表、临时表和系还提供了一些特

3、殊用途的表:分区表、临时表和系统表。统表。分区表分区表 当表很大时,可以水平地把数据分割成一些单元,放在同一个数据库的多个文件组中。用户可以通过分区快速地访问和管理数据的某部分子集而不是整个数据表,从而便于管理大表和索引。SQL Server 200864.1.2 表的类型 临时表 局部临时表:只是对一个数据库实例的一次连接中的创建者是可见的。在用户断开数据库的连接时,局部临时表就被删除。全局临时表:对所有的用户和连接都是可见的,并且只有所有的用户都断开临时表相关的表时,全局临时表才会被删除。SQL Server 200874.1.2 表的类型 系统表 用来保存一些服务器配置信息数据,用户不能

4、直接查看和修改系统表,只有通过专门的管理员连接才能查看和修改。不同版本的数据库系统的系统表一般不同,在升级数据库系统时,一些应用系统表的应用可能需要重新改写。SQL Server 200884.1.3表的数据类型 下表列出了下表列出了SQL Server 2008中常用的数据类型:中常用的数据类型:数据类型系统数据类型数据类型系统数据类型二进制二进制image字符字符char(n)Binary(n)varchar(n)varbinary(n)text精精确确数数字字精确整数精确整数bigintUnicodenchar(n)intnvarchar(n)smallintntexttinyint日期

5、和时间日期和时间Datetime精确小数精确小数Decimal(p,s)smalldatetimenumeric(p,s)Money近似数字近似数字float(n)smallmoneyreal用户自定义用户自定义用户自行命名用户自行命名特殊特殊bitTimestampuniqueidentifierSQL Server 200894.1.4 表的完整性体现l主键约束体现实体完整性,即主键各列不能为空且主键作为行的惟一标识系统表l外键约束体现参照完整性l默认值和规则等体现用户定义的完整性SQL Server 2008104.1.5 表的设计 设计表时需要确定如下内容:n 表中需要的列以及每一列的

6、类型(必要时还要有长度)n 列是否可以为空n 是否需要在列上使用约束、默认值和规则n 需要使用什么样的索引n 哪些列作为主键SQL Server 2008114.2创建数据库 使用使用SSMSSSMS创建数据库创建数据库1 使用使用T-SQLT-SQL语句创建数据库语句创建数据库2SQL Server 2008124.2.1使用SSMS创建数据库 从【开始】菜单中选择【程序】|Microsoft SQL Server 2008|SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或SQL Serve

7、r 身份验证建立连接。SQL Server 2008134.2.1使用SSMS创建数据库SQL Server 2008144.2.1使用SSMS创建数据库 (2)在【对象资源管理器】窗格中展开服务器,然后选择【数据库】节点。(3)在【数据库】节点上单击鼠标右键,从弹出的快捷菜单中选择【新建数据库】命令,如图所示。SQL Server 2008155.2.1使用SSMS创建数据库SQL Server 2008164.2.1使用SSMS创建数据库(4)执行上述操作后,会弹出【新建数据库】对话框,如下图所示。这个对话框有3个页,分别是【常规】、【选项】和【文件组】。完成这3个选项中的内容之后,就完成

8、了数据库的创建工作。SQL Server 2008175.2.1使用SSMS创建数据库SQL Server 2008184.2.1使用SSMS创建数据库 (5)在【数据库名称】文本框中输入要新建数据库的名称。如:student (6)在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。(7)【数据库文件】列表包括两行,一行是数据文件,另一行是日志文件。通过单击相应的按钮,可以添加或删除相应的数据文件。SQL Server 2008194.2.1使用SSMS创建数据库(8)完成以上操作后,就可以单击【确定】按钮关闭【新建数据库】对话框

9、。这时,一个数据库成功的创建了,可以通过【对象资源管理器】窗格查看新建的数据库。SQL Server 2008204.2.1使用SSMS创建数据库 可以看到数据库student2数据库创建成功。SQL Server 2008214.2创建数据库2 使用使用SSMSSSMS创建数据库创建数据库1 使用使用T-SQLT-SQL语句创建数据库语句创建数据库1SQL Server 2008224.2.2 使用T-SQL语句创建数据库CREATE DATABASE database_name /*指定数据库名*/ON子句 /*指定数据库文件和文件组属性*/LOG ON子句 /*指定日志文件属性*/其核心

10、是CREATE DATABASE语句。该语句的基本语法格式是:SQL Server 2008234.2.2 使用T-SQL语句创建数据库【例例】创建一个名为db_stu的数据库,其初始大小为5MB,最大大小50MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。假设SQL Server服务已启动,并以Administrator身份登录计算机。SQL Server 2008244.2.2 使用T-SQL语句创建数据库在“SQL Server Management Studio”窗口中单击“新建查询”按钮新建一个查询窗口,如图所示。T-SQ

11、L 语句输入及 执行结果返回窗口 单击新建一个 查询窗口 SQL Server 2008254.2.2 使用T-SQL语句创建数据库在T-SQL语句输入窗口中输入如下语句:CREATE DATABASE db_stu ON(NAME=db_stuData,FILENAME=e:sqldataMSSQLDatadb_stu.mdf,SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=10%)LOG ON(NAME=XSCJ1_Log,FILENAME=e:sqldataMSSQLDatadb_stu.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)G

12、OSQL Server 2008264.3创建表 使用使用SSMSSSMS创建表创建表1 使用使用T-SQLT-SQL语句创建表语句创建表2SQL Server 2008274.3.1 使用SSMS创建表创建主 键约束创建唯一性约束 创建外键约束创建检查约束 保存表的定义创建表SQL Server 2008284.3.1使用SSMS创建表 例如:创建学生表Student,课程表Course,选课表SC。其中教务管理中的选课数据模型为:Student(SID,Sname,Sex,Birthday,Specialty)PK:SID Course(CID,Cname,Credit)PK:CID SC

13、(SID,CID,Grade)PK:SID,CID FK:SID和CID SQL Server 2008294.3.1 使用SSMS创建表 创建表:在创建表:在【对象资源管理器对象资源管理器】窗口中,展开窗口中,展开“数据库数据库”下的下的student节点,右击节点,右击“表表”节点,选择节点,选择“新建表新建表”命令,进入表设命令,进入表设计器,在表设计器的第一列中输入列名,第二列选择数据类型,计器,在表设计器的第一列中输入列名,第二列选择数据类型,第三列选择是否为空;第三列选择是否为空;例如:表例如:表StudentSQL Server 2008304.3.1使用SSMS创建表表Cour

14、se:表SC:SQL Server 2008314.3.1 使用SSMS创建表 创建主键约束:单击选择一列名,创建主键约束:单击选择一列名,SHIFT+单击选择连续的列单击选择连续的列名,名,CTRL+单击选择不相邻的列名,右键快捷菜单或工具栏按单击选择不相邻的列名,右键快捷菜单或工具栏按钮钮“设置主键设置主键”;例:Student中的SID,Course中的CID,SC中的SID,CID 做法:单击选择一列名,SHIFT+单击选择连续的列名,CTRL+单击选择不相邻的列名,右键快捷菜单或工具栏按钮“设置主键”;SQL Server 2008324.3.1 使用SSMS创建表Student,C

15、ourse表主键约束采用同样的方法设置;Course表的主键建立示意图如下:表的主键建立示意图如下:SQL Server 2008334.3.1 使用SSMS创建表 创建唯一性约束创建唯一性约束:例如:Student表中的Sname 做法:右键快捷菜单或工具栏按钮“索引/键”,在弹出的【索引/键】对话框中,单击“添加”按钮添加新的主/惟一键或索引;在常规的“类型”右边选择“惟一键”,在“列”的右边单击省略号按钮,选择列名Sname和排序规律;SQL Server 2008344.3.1 使用SSMS创建表如图所示:如图所示:SQL Server 2008354.3.1 使用SSMS创建表创建外

16、键约束创建外键约束例如:SC表中的SID和CID设置为外码。做法:(1)右键快捷菜单或工具栏“关系”,在弹出的【关系】对话框中,单击“添加”按钮添加新的约束关系;SQL Server 2008364.3.1 使用SSMS创建表(2 2)单击“表和列规范”左边的“”号,再单击“表和列规范”内容框中右边的省略号按钮,从弹出的【表和列】对话框中进行外键约束的表和列的选择,单击“确定”;SQL Server 2008374.3.1 使用SSMS创建表(3)回到【外键关系】对话框,将“强制外键约束”选项选择为“是”,设置“更新规则”和“删除规则”的值;采用同样的方法添加外键采用同样的方法添加外键CIDC

17、ID;SQL Server 2008384.3.1使用SSMS创建表创建检查约束创建检查约束 例如:Student表中的Sex等于男或女。做法:右键菜单或工具栏“CHECK约束”,在打开的【CHECK约束】对话框中单击“添加”按钮,在表达式文本框中输入检查表达式,在表设计器中进行选项的设置;SQL Server 2008394.3.1 使用SSMS创建表保存表的定义保存表的定义(1 1)单击关闭表设计器窗口,弹出下图保存对话框,单击“是”钮;(2)输入表名,单击输入表名,单击“确定确定”按钮。按钮。SQL Server 2008404.3.2使用T-SQL语句创建表格式:格式:CREATE T

18、ABLE表名表名 (列名1 数据类型 列级完整性约束,列名 2 数据类型 列级完整性约束,列名n 类型 约束,表级完整性约束,);SQL Server 2008414.3.2 使用T-SQL语句创建表约束:实现表的完整性 NULL/NOT NULL:空值/非空值约束。DEFAULT 常量表达式:默认值约束。UNIQUE:单值约束。PRIMARY KEY:主键约束,等价非空、单值。REFERENCES 父表名(主键):外键约束。CHECK(逻辑表达式):检查约束。SQL Server 2008424.3.2 使用T-SQL语句创建表例如:在图书管理系统中的数据库(Library)中,创建读者表(

19、Reader),读者类型表(ReaderType),图书表(Book)和借阅表(Borrow)。图书管理系统的数据模型:ReaderType(TypeID,Typename,LimitNum,LimitDays)PK:TypeIDReader(RID,Rname,TypeID,Lendnum)PK:RID FK:TypeIDBook(BID,Bname,Author,PubComp,PubDate,Price)PK:BIDBorrow(RID,BID,LendDate,ReturnDate)PK:RID,BID,LendDate FK:RID和BID SQL Server 2008434.3.

20、2 使用T-SQL语句创建表例1:创建读者类型表ReaderTypeCREATE TABLE ReaderType(TypeID int NOT NULL primary key,-类型编号,主键Typename char(8)NULL,-类型名称LimitNum int NULL,-限借数量LimitDays int NULL-借阅期限)SQL Server 2008444.3.2 使用T-SQL语句创建表操作步骤:SQL Server 2008454.3.2 使用T-SQL语句创建表输入后点击工具栏上的“执行”按钮,如果输入正确,就会创建相应的表,提示“命令已成功完成。”如果创建的表没有出

21、现,在“表”节点上点击右键,选择“刷新”菜单。SQL Server 2008464.3.2 使用T-SQL语句创建表输入后点击工具栏上的“执行”按钮,如果输入正确,就会创建相应的表,提示“命令已成功完成。”如果创建的表没有出现,在“表”节点上点击右键,选择“刷新”菜单。SQL Server 2008474.3.2 使用T-SQL语句创建表例2:创建读者表Reader USE LibraryGOCREATE TABLE Reader(RID char(10)NOT NULL PRIMARY KEY,-读者编号,主键Rname char(8)NULL,-读者姓名TypeID int NULL,-读

22、者类型Lendnum int NULL,-已借数量FOREIGN KEY(TypeID)REFERENCES ReaderType(TypeID)ON DELETE NO ACTION,-外键,不级联删除)SQL Server 2008484.3.2 使用T-SQL语句创建表例3:创建图书表BookUSE LibraryCREATE TABLE Book(BID char(9)PRIMARY KEY,-图书编号,主键Bname varchar(42)NULL,-图书书名Author varchar(20)NULL,-作者PubComp varchar(28)NULL,-出版社PubDate d

23、atetime NULL,-出版日期Price decimal(7,2)NULL CHECK(Price0)-定价,检查约束)SQL Server 2008494.2.2 使用T-SQL语句创建表例4:创建图书借阅表Borrow(RID,BID,LendDate,ReturnDate)USE LibraryGOCREATE TABLE Borrow(RID char(10)NOT NULL-读者编号外键FOREIGN KEY REFERENCES Reader(RID)ON DELETE CASCADE,/*删除主表记录时级联删除子表相应记录*/BID char(9)NOT NULL-图书编号

24、外键FOREIGN KEY REFERENCES Book(BID)ON DELETE NO ACTION,/*删除主表记录时不级联删除子表相应记录*/LendDate datetime NOT NULL DEFAULT(getdate(),/*借期,默认值为当前日期*/ReturnDate datetime NULL,-还期primary key(RID,BID,LendDate)-表级约束,主键SQL Server 2008504.3 修改表 使用使用SSMSSSMS修改表修改表1 使用使用T-SQLT-SQL语句修改表语句修改表2SQL Server 2008514.3.1 使用SSMS

25、修改表 在在【对象资源管理器对象资源管理器】窗口中,展开窗口中,展开“数据库数据库”节点节点 展开所选择的具体数据库节点,展开展开所选择的具体数据库节点,展开“表表”节点节点 右键要修改的表,选择右键要修改的表,选择“设计设计”命令命令 进入表设计器即可进行表的定义的修改进入表设计器即可进行表的定义的修改SQL Server 2008524.3.2 使用T-SQL语句修改表格式:ALTER table 表名表名 (ALTER COLUMN 列名列名 列定义列定义,ADD 列名列名1 类型类型 约束,约束,DROP 列名列名 )*列定义包括列的数据类型和完整性约束列定义包括列的数据类型和完整性约

26、束 SQL Server 2008534.3.2使用T-SQL语句修改表修改属性添加或删除列添加或删除约束SQL Server 2008544.3.2 使用T-SQL语句修改表 修改属性修改属性 例如:把表Book 中PubComp 的类型varchar(28)改为varchar(30)USE Library GO ALTER TABLE Book ALTER COLUMN PubComp varchar(30)NOT NULL GO SQL Server 2008554.3.2使用T-SQL语句修改表添加或删除列例1:为表Reader添加邮件地址 USE Library GO ALTER T

27、ABLE Reader ADD E-mail varchar(50)NULL CHECK(E-mail like%)GO 例2:为表Reader删除邮件地址。USE Library GO ALTER TABLE Reader DROP COLUMN E-mail GO说明:必须先删除其上的约束说明:必须先删除其上的约束。564.3.2 使用T-SQL语句修改表添加或删除约束 例1:为表Borrow添加主键约束(假设还没有创建)。USE Library GO ALTER TABLE Borrow ADD PRIMARY KEY(RID,BID,LendDate)GO 例2:为表Borrow删除主

28、键约束。USE Library GO ALTER TABLE Borrow DROP PRIMARY KEY(RID,BID,LendDate)GO 574.4 删除表 使用SSMS删除表1 使用T-SQL语句删除表2SQL Server 2008584.4.1使用SSMS删除表 在在【对象资源管理器对象资源管理器】窗口中,展开窗口中,展开“数据库数据库”节点节点 展开所选择的具体数据库节点,展开展开所选择的具体数据库节点,展开“表表”节节点点 右 键 要 删 除 的 表,选 择右 键 要 删 除 的 表,选 择“删 除删 除”命 令 或命 令 或DELETE键键SQL Server 2008

29、594.4.2 使用T-SQL语句删除表格式:DROP TABLE 表名例如:先随便在数据库Library中建一个表Test,然后删除。USE Library GO DROP TABLE Test SQL Server 2008604.5 插入记录 使用使用SSMSSSMS插入记录插入记录1 使用使用T-SQLT-SQL语句插入记录语句插入记录2SQL Server 2008614.5.1 使用SSMS插入记录 在“对象资源管理器”中展开“数据库”选择“Library”选择要进行操作的表,右击鼠标,在弹出的快捷菜单上选择“编辑前200行”菜单项,打开“表数据窗口”。插入记录 插入记录将新记录添

30、加在表尾,可以向表中插入多条记录。插入记录的操作方法是:将光标定位到当前表尾的下一行,然后逐列输入列的值。每输入完一列的值,按回车键,光标将自动跳到下一列,便可编辑该列。若当前列是表的最后一列,则该列编辑完后按下回车键,光标将自动跳到下一行的第一列,此时上一行输入的数据已经保存,可以增加下一行。若表的某列不允许为空值,则必须为该列输入值.SQL Server 2008624.5.1 使用SSMS插入记录SQL Server 2008634.5.2 使用T-SQL语句插入记录格式:INSERT INTO(表名|视图名)列名表 VALUES(常量表)例1:插入一行所有列的值 USE Library

31、 GO INSERT into Reader VALUES(2008216001,赵成刚,3,2,)GO 例1:插入一行部分列 USE Library GO INSERT Reader(RID,Rname,TypeID)VALUES(2004060003,李亚茜,3)GO SQL Server 2008644.6 修改记录 使用使用SSMSSSMS修改记录修改记录1 使用使用T-SQLT-SQL语句修改记录语句修改记录2SQL Server 2008654.6.1 使用SSMS修改记录 在【对象资源管理器】窗口中,展开“数据库”节点 展开所选择的具体数据库节点,展开“表”节点 右键要修改纪录的

32、表,选择“编辑前200行”命令,即可修改纪录值。修改后回车保存修改。SQL Server 2008664.6.2 使用T-SQL语句修改记录格式:格式:UPDATE 表名表名 SET 列名列名1表达式表达式,列名列名n表达式表达式 where 逻辑逻辑表达式表达式例例1 1:把读者类型表:把读者类型表ReaderType中学生的限借数量中学生的限借数量5本增加本增加2本本 USE Library GO UPDATE ReaderType SET LimitNum=LimitNum+2 WHERE Typename=学生学生 GO SQL Server 2008674.7 删除记录 使用使用SS

33、MSSSMS删除记录删除记录1 使用使用T-SQLT-SQL语句删除记录语句删除记录2SQL Server 2008684.7.1 使用SSMS修改记录 在在【对象资源管理器对象资源管理器】窗口中,展开窗口中,展开“数据库数据库”节节点点 展开所选择的具体数据库节点,展开展开所选择的具体数据库节点,展开“表表”节点节点 右键要删除纪录的表,选择右键要删除纪录的表,选择“编辑前200行”命令,命令,右击要删除的行,选择右击要删除的行,选择“删除删除”命令即可删除纪录。命令即可删除纪录。SQL Server 2008694.7.2 使用T-SQL语句修改记录格式:DELETE 表名 WHERE 逻

34、辑表达式例1:删除Borrow表中RID为2008216001的读者的借书记录USE LibraryGODELETE Borrow WHERE RID=2008216001GO例2:删除test表中的所有记录USE LibraryGODELETE testSQL Server 200870SQL语言概述 SQL语言的特点数据定义语言数据查询语言数据操纵语言71SQL语言特点 SQL语言的特点1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方法5.语言简洁,易学易用725.语言简捷,易学易用73数 据 定 义语言 74定义基本表语句格式CREATE TABLE

35、(,);:所要定义的基本表的名字:组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件 75例题 例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATE TABLE Student (Sno CHAR(5)NOT NULL UNIQUE,Sname CHAR(20)UNIQUE,Ssex CHAR(1),Sage INT,Sdept CHAR(15);76定义基本表(续)常用完整性约束 主码约束:PRIMARY KE

36、Y 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束PRIMARY KEY与 UNIQUE的区别?77例题(续)例2 建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。CREATE TABLE SC(Sno CHAR(5),Cno CHAR(3),Grade int,Primary key(Sno,Cno);78例题(续)SnoSnameSsexSageSdept 字字符符型型 字字符符型型 字字符符型型 整整数数 字字符符型型 长长度度为为5 5 长长度度为为2 20 0 长长度度为为1 1 长长度度为为1

37、15 5 不不能能为为空空值值79删除基本表 DROP TABLE;基本表删除 数据、表上的索引都删除 表上的视图往往仍然保留,但 无法引用删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述(标准中没有,认为表建立后就永久存在)80例题例5 删除Student表 DROP TABLEStudent;81修改基本表ALTER TABLE ADD 完整性约束 DROP ALTER ;:要修改的基本表 ADD子句:增加新列和新的完整性约束条件 DROP子句:删除指定的完整性约束条件 ALTER子句:用于修改列名和数据类型82例题 例2 向Student表增加“入学时间”列,其数据类型为日

38、期型。ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律为空值。83语句格式(续)删除属性列 直接/间接删除 把表中要保留的列及其内容复制到一个新表中 删除原表 再将新表重命名为原表名直接删除属性列:(新)例:ALTER TABLE Student Drop Scome;84 例3 将年龄的数据类型改为半字长整数。ALTER TABLE Student MODIFY Sage SMALLINT;注:修改原有的列定义有可能会破坏已有数据85例题 例4 删除学生姓名必须取唯一值的约束。ALTER TABLE Student DROP

39、UNIQUE(Sname);86数据查询语言 SQL语句命令格式单表查询连接查询小结 87SQL语句命令格式 语句格式SELECT ALL|DISTINCT ,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC ;88语句格式 SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或视图)WHERE子句:指定查询条件 GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HAVING短语:筛选出只有满足指定条件的组 ORDER BY子句:对查询结果表按指定列值的升序或降序排序 89示例数

40、据库 学生-课程数据库 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)90数据查询语言SQL语句命令格式单表查询连接查询小结 91单表查询 查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组 92一 查询指定列(字段)例1 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student;例2 查询全体学生的姓名、学号、所在系。SELECT Sname,

41、Sno,SdeptFROM Student;93查询全部列例3 查询全体学生的详细记录。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student;或SELECT *FROM Student;94二 选择表中的若干元组(记录)消除取值重复的行 查询满足条件的元组 951.消除取值重复的行 在SELECT子句中使用DISTINCT短语假设SC表中有下列数据 Sno Cno Grade -95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 8096ALL 与 DISTINCT 例6 查询选修了课程的学生学号。(1)

42、SELECT Sno FROM SC;或(默认 ALL)SELECT ALL Sno FROM SC;结果:Sno -95001 95001 95001 95002 95002 97例题(续)(2)SELECT DISTINCT Sno FROM SC;结果:Sno -95001 95002 98例题(续)注意 DISTINCT短语的作用范围是所有目标列例:查询选修课程的各种成绩错误的写法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正确的写法 SELECT DISTINCT Cno,Grade FROM SC;99查询满足条件的元组WHERE子句常用的查

43、询条件100(1)比较大小在WHERE子句的中使用比较运算符=,=,=,!=或,!,!,逻辑运算符NOT +比较运算符例8 查询所有年龄在20岁以下的学生姓名及其年龄。SELECT Sname,Sage FROM Student WHERE Sage=20;101(2)确定范围 使用谓词 BETWEEN AND NOT BETWEEN AND 例10 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;102例题(续)例11 查询年龄不在2023岁

44、之间的学生姓名、系别和年龄。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23;103(3)确定集合使用谓词 IN,NOT IN :用逗号分隔的一组取值例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECT Sname,SsexFROM StudentWHERE Sdept IN(IS,MA,CS);104(3)确定集合例13查询既不是信息系、数学系,也不是计算 机科学系的学生的姓名和性别。SELECT Sname,SsexFROM Student WHERE Sdept

45、NOT IN(IS,MA,CS);105(4)字符串匹配 NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 当匹配模板为固定字符串时,可以用=运算符取代 LIKE 谓词 用!=或 运算符取代 NOT LIKE 谓词106通配符w%(百分号)代表任意长度(长度可以为0)的字符串 例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串 _(下横线)代表任意单个字符 例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串107ESCAPE 短语:当用户要查询的字符串本身就含有%或 _ 时

46、,要使用ESCAPE 短语对通配符进行转义。108例题1)匹配模板为固定字符串 例14 查询学号为95001的学生的详细情况。SELECT*FROM Student WHERE Sno LIKE 95001;等价于:SELECT *FROM Student WHERE Sno=95001;109例题(续)2)匹配模板为含通配符的字符串例15 查询所有姓刘学生的姓名、学号和性别。SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 刘%;110例题(续)匹配模板为含通配符的字符串(续)例16 查询姓欧阳且全名为三个汉字的学生的姓名。SELECT

47、Sname FROM Student WHERE Sname LIKE 欧阳_;111例题(续)匹配模板为含通配符的字符串(续)例17 查询名字中第2个字为阳字的学生的姓名和学号。SELECT Sname,Sno FROM Student WHERE Sname LIKE _阳%;112例题(续)匹配模板为含通配符的字符串(续)例18 查询所有不姓刘的学生姓名。SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 刘%;113例题(续)3)使用换码字符将通配符转义为普通字符 例19 查询DB_Design课程的课程号和学分。SELECT

48、 Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE 114例题(续)使用换码字符将通配符转义为普通字符(续)例20 查询以DB_开头,且倒数第3个字符为 i的课程的详细情况。SELECT *FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ;115(5)涉及空值的查询 使用谓词 IS NULL 或 IS NOT NULL “IS NULL”不能用“=NULL”代替例21 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。SELECT S

49、no,Cno FROM SC WHERE Grade IS NULL;116例题(续)例22 查所有有成绩的学生学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;117(6)多重条件查询用逻辑运算符AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 118例题例23 查询计算机系年龄在20岁以下的学生姓名。SELECT Sname FROM Student WHERE Sdept=CS AND Sage=20 AND Sage=23;121三

50、对查询结果排序 使用ORDER BY子句 可以按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序当排序列含空值时 ASC:排序列为空值的元组最后显示 DESC:排序列为空值的元组最先显示 122对查询结果排序(续)例24 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECT Sno,Grade FROM SC WHERE Cno=3 ORDER BY Grade DESC;123查询结果 Sno Grade -95010 95024 95007 92 95003 82 95010 82 95009 75 95014 61 95002 55124对查询结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(-关系数据库标准语言SQL教学课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|