数据库基础教程(SQLServer平台)[顾韵华]第3章.ppt
《数据库基础教程(SQLServer平台)[顾韵华]第3章.ppt》由会员分享,可在线阅读,更多相关《数据库基础教程(SQLServer平台)[顾韵华]第3章.ppt(127页珍藏版)》请在三一办公上搜索。
1、第三章 关系数据库语言SQL,3.1 SQL概述3.2 SQL语言的数据类型 3.3 数据定义3.4 数据查询3.5 数据更新,数据库应用基础,3.1 SQL概述,3.1.1 SQL的特点 3.1.2 SQL基本概念 3.1.3 SQL语言的组成 3.1.4 SQL语句分类,3.1.1 SQL的特点,SQL的特点综合统一高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方法语言简洁,易学易用,3.1.2 SQL基本概念,SQL语言支持数据库的三级模式结构,基本表(Base Table),基本表是独立存在于数据库中的表,是“实表”。一个关系对应一个基本表,一个或多个基本表对应一个存储文件
2、。,视图(View),视图是从一个或几个基本表(或视图)导出的表,是“虚表”。它本身不独立存在于数据库中,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。,存储文件,数据库的所有信息都保存在存储文件中。数据库是逻辑的,存储文件是物理的。用户操作的数据库,实际上最终都是操作存储文件。一个基本表可以用一个或多个存储文件存储,存储文件的物理结构对用户是透明的。,表中的记录通常按其输入的时间顺序存放,这种顺序称为记录的物理顺序。为了实现对表记录的快速查询,可以对表文件中的记录按某个和某些属性进行排序,这种
3、顺序称为逻辑顺序。索引即是根据索引表达式的值进行逻辑排序的一组指针,它可以实现对数据的快速访问。索引是关系数据库的内部实现技术,属于内模式,被存放在存储文件中。,索引,3.1.3 SQL语言的组成,(1)数据定义语言DDL(Data Definition Language)。定义数据库结构,包括定义表、视图和索引等。(2)数据操纵语言DML(Data Manipulation Language)。主要包括查询、插入、删除和修改数据库中数据的操作。(3)数据控制语言DCL(Data Control Language)。包括对数据库的安全性控制、完整性控制以及对事务的定义、并发控制和恢复等。,(1
4、)数据定义。其功能是创建、更新和撤销模式及其对象。包含的语句动词主要有:CREATE、DROP、ALERT。(2)数据查询。其功能是进行数据库的数据查询。包含的语句动词主要有:SELECT。(3)数据操纵。其功能是完成数据库的数据更新。包含的语句动词主要有:INSERT、UPDATE、DELETE。(4)数据控制。其功能是进行数据库的授权、事务管理和控制。包含的语句动词主要有:GRANT、REVOKE、COMMIT、ROLLBACK等。,3.1.4 SQL语句分类,3.2 SQL语言的数据类型,SQL语言在定义表中各属性时,要求指明其数据类型和长度。SQL语言提供了一些基本数据类型,而不同RD
5、BMS所支持的数据类型不完全相同,在使用时要注意具体的RDBMS规定。,T-SQL数据类型,T-SQL常用数据类型包括:数值型 字符型 Unicode字符型 文本型 日期时间类型 二进制型 货币类型,数值型包括整型(bigint、int、smallint、tinyint、bit)、定点实数(numericdecimal)、浮点数(float、real),各数值类型的取值范围、存储字节数都有差异(详见教材列表)。要注意,bit类型数据相当于其他语言中的逻辑型数据,它只存储0和1。当为bit类型数据赋值0时,其值为0;而赋非0(如100)值时,其值为1。,数值型,字符型,字符型数据用于存储字符串。
6、字符串中可包括字母、数字和其他特殊符号(如#、&等),也可包含汉字。字符串型包括两类:定长字符串char和变长字符串varchar。,Unicode字符型,Unicode是“统一字符编码标准”,用于支持国际上非英语语种的字符数据的存储和处理。SQL Server的Unicode字符型可以存储Unicode标准字符集定义的各种字符。Unicode字符型包括nchar(n)和nvarchar(n)两类。nchar是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。nchar、nvarchar与ch
7、ar、varchar使用非常相似,只是字符集不同(前者使用Unicode字符集,后者使用ASCII字符集)。,当需要存储大量的字符数据,如较长的备注、日志信息时,字符型数据最长8000个字符的限制可能使它们不能满足这种应用需求,此时可使用文本型数据。文本型包括text和ntext两类,分别对应ASCII字符和Unicode字符。,文本型,日期时间类型数据用于存储日期和时间信息,包括datetime和smalldatetime两类。datetime类型可表示从1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据。smalldatetime类型可表示从1900 年 1
8、月 1 日到 2079 年 6 月 6 日的日期和时间数据。用户以字符串形式输入日期时间类型数据,系统也以字符串形式输出日期时间类型数据。用户给出日期时间类型数据值时,日期部分和时间部分分别给出。日期部分常用的几种格式如下:Oct 10 2009/*英文数字格式*/2009-10-10/*数字加分隔符*/20091010/*纯数字格式*/,日期时间类型,二进制型,二进制数据类型表示位数据流。binary(n)。固定长度的n字节二进制数据。n取值范围为 18000,默认为1。binary(n)数据的存储长度为 n+4 字节。若输入的数据长度小于n,则不足部分用0填充;若输入的数据长度大于n,则多
9、余部分被截断。varbinary(n)。n字节变长二进制数据。n取值范围为 18000,默认为1。varbinary(n)数据的存储长度为实际输入数据长度+4字节。image。用于存储大容量的、可变长度的二进制数据,介于02311(2147483647)字节之间。,货币类型,money和smallmoney是两个专用于货币的数据类型,它们用十进制数表示货币值。money的数据范围与bigint相同,不同的只是money型有4位小数。实际上,money型数据就是按照整数进行运算的,只是将小数点固定在末4位。smallmoney与int的关系就如同money与bigint的关系一样。当向表中插入m
10、oney或smallmoney类型值时,必须在数据前面加上货币符号($),并且数据中间不能有逗号(,);若货币值为负数,需要在符号$的后面加上负号()。例如,$15000.32,$680,$20000.9088都是正确的货币数据表示形式。,3.3 数据定义,3.3.1 模式定义 3.3.2 基本表定义 3.3.3 索引定义 3.3.4 视图定义,模式定义即定义一个存储空间。一个SQL模式由模式名、用户名或账号来确定。在这个空间中可以进一步定义该模式包含的数据库对象,如基本表、视图、索引等。SQL3标准的模式定义语句是CREATE SCHEMA。但由于“模式”这个名称较抽象,多数RDBMS不采用
11、该名词,而采用“数据库”这一名称。这个数据库概念将数据库视为许多对象的容器。在SQL标准中没有CREATE DATABASE语句,但多数SQL产品都支持CREATE DATABASE创建数据库的语句。,3.3.1 模式定义,(1)定义数据库,T-SQL定义数据库的基本格式为:CREATE DATABASE 说明:T-SQL语句通常还包含各种子句,如CREATE DATABASE语句包含ON子句、LOG ON子句等。SQL Server的大多数数据库操作都有两种方式:一是命令方式,二是界面方式。例如,定义数据库,既可采用这里介绍的CREATE DATABASE语句,也可通过SQL Server
12、Management Studio界面操作实现。,(2)使用数据库,语句格式为:USE 使用USE语句将选择为当前操作的数据库。一旦选定,若不对操作的数据库对象加以限定,则其后命令均是针对当前数据库中的表或视图进行的。,(3)修改数据库,基本语句格式为:ALTER DATABASE 该语句可以对指定的数据库的数据文件和日志文件等进行修改。,(4)删除数据库,基本语句格式为:DROP DATABASE 删除数据库后,该数据库的所有对象均被删除,将不能再对该数据库做任何操作。,3.3.2 基本表定义,定义基本表的实质就是定义表结构及约束等。在T-SQL语句定义表之前,先要设计表结构,即确定表的名字
13、、所包含的列名、列的数据类型、长度、是否可为空值、默认值情况、是否要使用以及何时使用约束、默认设置或规则以及所需索引的类型、哪里需要索引、哪些列是主码、哪些列是外码等。,“商品订购数据库”结构,数据库名:SPDG包括三个基本表:客户信息表(表名:KHB)商品信息表(表名:SPB)商品订购表(表名:SPDGB),客户信息表(表名:KHB),商品信息表(表名:SPB),商品订购表(表名:SPDGB),(1)定义基本表,定义基本表的的基本格式为:CREATE TABLE(,)在定义基本表的同时还可定义该表有关的完整性约束。其中列级完整性约束的作用范围仅限于该列,而表级完整性约束的作用范围是整个表。,
14、列级完整性约束,NOT NULL 限制列取值不能为空。DEFAULT 指定列的默认值。UNIQUE 限制列的取值不能重复。CHECK 限制列的取值范围。PRIMARY KEY 指定本列为主码。FOREIGN KEY 指定本列为引用其他表的外码。格式为:FOREIGN KEY()REFERENCE(),【例】定义SPDGB数据库的三个基本表。,创建KHB的SQL语句:CREATE TABLE KHB(客户编号 char(5)PRIMARY KEY,客户名称 char(20)NOT NULL,出生日期 datetime,性别 char(2),所在省市 varchar(50),联系电话 varcha
15、r(12),备注 text),创建SPB的SQL语句:,CREATE TABLE SPB(商品编号 char(8)PRIMARY KEY,商品类别 char(20)NOT NULL,商品名称 varchar(50)NOT NULL,单价 float,生产商 varchar(50),保质期 datetime DEFAULT 2000-1-1,库存量 int,备注 text),创建SPDGB的SQL语句:,CREATE TABLE SPDGB(客户编号 char(5)NOT NULL,商品编号 char(8)NOT NULL,订购时间 datetime NOT NULL,数量 int,需要日期 d
16、atetime,付款方式 varchar(40),送货方式 varchar(50),PRIMARY KEY(客户编号,商品编号,订购时间),FOREIGN KEY(客户编号)REFERENCES KHB(客户编号),FOREIGN KEY(商品编号)REFERENCES SPB(商品编号),(2)修改基本表,ALERT TABLE语句用于更改基本表结构,包括增加列、删除列、修改已有列的定义等。该语句的基本格式为:ALTER TABLE ALTER COLUMN NULL|NOT NULL-修改已有列定义|ADD 约束-增加新列|DROP COLUMN-删除列|ADD CONSTRAINT-添加
17、约束|DROP CONSTRAINT-删除约束,示例,【例】在表SPB中增加1个新列商品图片。ALTER TABLE SPBADD 商品图片 image【例】将表SPB中“保质期”列的数据类型改为smalldatetime。ALTER TABLE SPBALTER COLUMN保质期 smalldatetime【例】删除表SPB中“商品图片”列。ALTER TABLE SPBDROP COLUMN商品图片,(3)删除基本表,DROP TABLE语句用于删除基本表,其语法格式:DROP TABLE【例】删除表SPB的SQL语句为:DROP TABLE SPB删除一个表时,表的定义、表中的所有数据
18、以及表的索引、触发器、约束等均被删除。注意:不能删除系统表和有外码约束所参照的表。,3.3.3 索引定义,在数据库中建立索引是为了提高数据查询速度。查询是数据库使用最频繁的操作,如何能更快地找到所需数据,是数据库的一项重要任务。,(1)索引的概念,(2)索引分类,聚簇索引(Clustered Index)对表的物理数据页中的数据按索引关键字进行排序,然后重新存储到磁盘上,即聚簇索引与数据是一体的。非聚簇索引(Nonclustered Index)具有完全独立于数据的索引结构,它不将物理数据页中的数据按索引关键字排序。,(3)建立索引,建立索引使用语句CREATE INDEX,其基本格式为:CR
19、EATE UNIQUE CLUSTERED|NONCLUSTERED INDEX ON(ASC|DESC,ASC|DESC)其中,是要建立索引的基本表的名称。当索引建立在多个列上时,该索引称为复合索引。复合索引各列之间要用逗号(,)分隔,每个列后面还可以用ASC或DESC表示按索引值按升序或降序排列。默认排序方式为ASC(升序)。UNIQUE表示创建的是唯一索引。CLUSTERED用于指定创建聚簇索引,NONCLUSTERED用于指定创建非聚簇索引。默认创建的是非聚簇索引。,示例,【例】在KHB表的“客户编号”列上建立一个非聚簇索引KHBH_ind。CREATE INDEX KHBH_ind
20、ON KHB(客户编号)【例】在SPB表的“商品编号”列上建立一个唯一的聚簇索引SPBH_ind。CREATE UNIQUE CLUSTERED INDEX SPBH_ind ON SPB(商品编号)【例】在SPDGB表上按“客户编号”升序、“商品编号”升序、“订购时间”降序建立一个唯一的非聚簇索引SPDG_ind。CREATE UNIQUE INDEX SPBH_ind ON SPDGB(客户编号 ASC,商品编号 ASC,订购时间 DESC),(4)删除索引,索引一经建立,就由DBMS自动使用和维护,无须用户干预。当不需要某个索引时,可使用DROP INDEX语句将其删除。DROP IND
21、EX语句的格式为:DROP INDEX.【例】删除KHB表“客户编号”列的索引KHBH_ind。DROP INDEX KHB.KHBH_ind,3.3.4 视图定义,视图是从一个或多个基本表(或视图)导出的表。视图是一个虚表,数据库中只存储视图的定义,而不存放视图对应的数据,这些数据仍然存放在原来的基本表中。视图是数据库系统提供给用户以多种角度观察数据库中数据的重要机制。,(1)视图的概念,视图的优点,为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户的数据查询和处理。屏蔽数据库的复杂性。用户不必了解复杂的数据库表结构,并且数
22、据库表的更改也不影响用户对数据库的使用。简化用户权限管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,增加了安全性。便于数据共享。各用户不必都定义和存储自己所需的数据,可共享数据库的数据,同样的数据只需存储一次。可以重新组织数据以便输出到其他应用程序中。,使用视图的注意事项,只有在当前数据库中才能创建视图。视图的命名必须遵循标识符命名规则,不能与表同名,且对每个用户视图名必须是唯一的,即对不同用户,即使是定义相同的视图,也必须使用不同的名字。不能在视图上建立索引。,(2)定义视图,CREATE VIEW语句用于创建视图,其基本格式为:CREATE VIEW(,)AS 其中,S
23、ELECT是SQL查询语句,表示从表中选择指定列构成视图的各个列。当列名省略时,表示SELECT取所有列。,示例,【例】创建视图KH_NJview,其内容为“江苏南京”的客户信息。CREATE VIEW KH_NJviewASSELECT*FROM KHB WHERE 所在省市=江苏南京【例】创建视图DG_NJview,其内容为“江苏南京”的“客户编号”及其订购的“商品编号”。CREATE VIEW DG_NJviewASSELECT a.*,商品编号FROM KHB a,SPDGB bWHERE a.所在省市=江苏南京 AND a.客户编号=b.客户编号,示例,【例】创建“江苏南京”订购了编
24、号为“10010001”商品的所有客户的客户编号、客户姓名视图DG_NJview_2。CREATE VIEW DG_NJview_2(客户编号,客户姓名)ASSELECT 客户编号,客户姓名FROM DG_NJviewWHERE 商品编号=10010001,使用ALTER VIEW语句可修改视图的定义,该语句基本格式为:ALTER VIEW(,)AS,(3)修改视图,示例,【例】修改视图DG_NJview_2,使其内容是选购了编号为“30010001”的所有“江苏南京”客户的客户编号、客户姓名。ALTER VIEW DG_NJview_2 AS SELECT 客户编号,客户姓名 FROM DG
25、_NJview WHERE 商品编号=30010001,删除视图的语句是DROP VIEW,其基本格式为:DROP VIEW 删除视图不会影响基本表的数据。但如果被删视图还导出了其他视图,则对由其导出的视图执行操作将会发生错误。【例】删除视图DG_NJview。DROP VIEW DG_NJview当视图DG_NJview被删除后,对由其导出的视图DG_NJview_2进行操作将会发生错误。,(4)删除视图,3.4 数据查询,3.4.1 SELECT语句结构 3.4.2 单表查询 3.4.3 连接查询 3.4.4 嵌套查询 3.4.5 集合查询 3.4.6 视图查询,3.4.1 SELECT语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顾韵华 数据库 基础教程 SQLServer 平台
链接地址:https://www.31ppt.com/p-6578488.html