辅导2-第2章结构化查询语言

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第2章结构化查询语言SQL学习目标结构化查询语言(SQL)是进行关系数据库操作的基础。请同学们结合实验2、实验3学习本章内容。一、基本理论1.SQL语言分类分为四大类:数据定义语言,数据查询语言,数据操纵语言,数据控制语言。(1)数据定义语言:主要用创建、修改或删除数据库中对象,如表、视图、模式、触发器和存储过程等,与其相关的主要SQL语句包括CREAT(创建)、ALTER(修改)、DROP(删除);(2)数据操纵语言:主要用于数据的增、删、改操作,主要语句有INSERT(插入)、DELETE(删除)、UPDATE(修改);(3)数据查询语言:主要用于数据的检索查询,与其相关的语句是SELECT(查询);(4)数据控制语言:主要用于控制用户对数据库的访问权限、完整性规则描述、事务控制等操作。控制用户对数据库的访问权限的主要语句有GRANT(授予权利)和REVOKE(取消权利)等。事务控制的语句包括COMMIT(事务提交)和ROLLBACK(事务撤消)等。2.SQL语言的特点非过程化语言;统一的语言;是所有关系数据库的公共语言。3.SQL语言的基本数据类型SQLServer提供了数值型、字符型、日期型、二进制型、位型、双字节型等6大类数据类型。1)数值数据类型一般可以分为整数型、精确数值类型、浮点数值类型和货币类型等4类。2)字符型2常用的字符型有Char、Varchar和Text等3种。(1)char类型。长度固定。如果字段或变量被定义为char类型,而实际长度没有达到定义的长度,则在字符串尾部添加空格以达到固定的字符数。(2)varchar类型。长度可变。如果字段或变量被定义为varchar类型,而实际长度没有达到定义的长度,SQLServer会自动丢掉尾部的空格以节省空间。(3)text类型。当要存储的字符型数据非常庞大,长度超过了8000个字符时,可选择text数据类型。即文本型,最大可存储约2G的数据。3)日期时间型主要用来存储日期和时间的组合数据,根据取值范围的大小分为datetime和smalldatetime两种。4)二进制数据类型二进制数据类型有定长和变长之分,主要用来存储二进制数据,如图形图像、Word文档文件等。SQLServer提供了binary、varbinary和image等3种常用二进制数据类型。5)位型bit(位型)是SQLServer提供的一种支持逻辑数据的类型,只用来存储1或0两种,只有一位字节长,在SQLServer中bit字段的用途很多,可以作为“真/假”、“男/女”、“开/关”这类状态信息的标志,可以作为活动账号的指示器或项目的使用标志等。6)特殊数据类型有两类不常用的数据类型,即双字节数据类型和时间戳数据(Timestamp)类型。它们主要是为了实现特殊的用途,称为特殊数据类型。时间戳数据类型往往因为其名字而造成误解,实际上它既不是日期,也不是时间数据,而是SQLServer根据事件的发生次序自动生成的一种二制数据。这个数据有很多用途,其中之一是在SQLServer关闭重新启动时,作为进行恢复工作的重要部分。另外利用timestamp数据还可以替代传统的数据库加锁技术。4.数据定义语言1)空值空值也可称为NULL值。空值不是“空格”符或“0”值,它表示的是没有值,是不确定的值。2)数据库在SQL中,数据库被定义为对象的集合,这些对象主要有表、索引、视图、存储过程等。数据库在磁盘上是以文件为单位存储的,由数据文件和日志文件组成。数据文件中实际存放3数据库的所有数据和对象,日志文件用来存放用户对数据库所进行的所有操作,它是维护数据库完整性的重要工具。(1)创建数据库语句格式:CREATEDATABASE数据库名语句功能:创建一个数据库,就是定义一个存储空间。应用举例:CREATEDATABASE教学管理库(2)删除数据库语句格式:DROPDATABASE数据库名语句功能:从计算机系统中删除(撤消)一个数据库。当然会同时把该库中的所有信息一并删除掉。语句举例:DROPDATABASE教学管理5.表1)表的概念关系数据库的主要特点之一就是用表的方式组织数据。表是SQL语言存放数据、查找数据以及更新数据的基本数据结构。在SQL语言中,表有严格的定义,它是一个由行、列组成的二维结构,通常把行称做记录,把列称为字段。表2-1学生基本情况登记表学号姓名性别出生日期专业年级2008001张红女1988-3-6计算机应用12008002李勇男1988-10-11信息管理1………………从表2-1可以看出,数据表一般具有以下属性:(1)表名:表的惟一标识。比如学生基本情况登记表;(2)字段:一张表可以由若干列组成,称为字段。列名惟一,且同一列的数据必须具有相同的数据类型。(3)记录:表中的每一行称为一条记录,比如“2008001,张红,女1988.3.6,计算机应用,1”,它描述了一名学生的若干属性;(4)主关键字:能够惟一表示数据表中的每条记录的字段或者字段的组合,也称为主码、主键,比如学号。在一个学校中,学生的姓名可能重复,但学号必须是惟一的。2)创建表结构(1)语句格式:CREATETABLE表名(列名1列的数据类型,列名2列的数据类型,...)(2)语句功能:4在当前数据库中定义一个表的结构(即关系模式)。(3)语句举例:如果希望在“教学管理”数据库中创建一个名为“学生表”的表结构,则可执行下列语句:CREATETABLE学生表(学号char(7)PrimaryKey,姓名char(6),性别char(2),出生日期datetime,专业char(10),年级int)在上述语句中,数据表的名称为“学生表”,它包括学生号、姓名、性别、出生日期、专业、年级等6个字段(列)。学名的数据类型为Char型(字符型),长度为7;出生日期的数据类型为Datatime型(日期型);年级的数据类型为Int型(整数型)。3)删除表结构(1)语句格式:DROPTABLE表名(2)语句功能:从当前数据库中删除一个表,当然在删除表结构的同时也删除了全部内容。(3)语句举例:DROPTABLE学生表从当前数据库中删除掉名称为“学生表”的表,假定事先已经在当前库建立过该表。6.索引1)索引的概念索引(Index)提供了一种快速访问数据的途径。索引具有以下特点。(1)索引是在基本表的列上建立的一种数据加对象,它和基本表分开存储,它的建立或撤消对数据的内容毫无影响。(2)索引一经创建,就完全由系统自动选择和维护,不需要用户指定使用索引,也不需要用户执行打开索引或进行重新索引等操作,所有这些工作都是由SQLServer数据库管理系统自动完成。(3)基本表的记录数量越多,记录越长,越有必要创建索引,这对加快查询速度的效率十分明显。相反,对于记录比较少的基本表而言,创建索引的意义不大。5(4)索引是为了加速查询速度而创建的,但同时会影响基本表的插入、删除或修改等更新活动的速度,当对基本表的数据进行增删改操作时,索引文件也要随之变化,以保持与基本表的一致,因此只有对那些数据量大、查询频度较高、实时性要求强的基本表要创建索引,并且一张基本表上不要创建过多的索引。2)创建索引的原则索引是建立在基本表列上的对象,通常可参考以下原则:(1)基本表的记录数量越多,记录越长,越有必要创建索引,这对加快查询速度的效率十分明显。相反,对于记录比较少的基本表而言,创建索引的意义不大。(2)索引是为了加速查询速度而创建的,但同时会影响基本表的插入、删除或修改等更新活动的速度,当对基本表的数据进行增、删、改操作时,索引文件也要随之变化,以保持与基本表的一致,因此只有对那些数据量大、查询频度较高、实时性要求强的基本表要创建索引,并且一张基本表上不要创建过多的索引。(3)索引是建立在基本表列上的对象,到底在哪个列上创建索引,通常可改变列在WHERE、ORDERBY、GROUPBY子句中出现的频率。比如,如果某个或某些列经常出现在ORDERBY子句中,那么就可考虑在之上建立索引。3)不易创建索引的几种情况(1)包含太多重复值的列;(2)查询中很少被引用的列;(3)值特别长的列。(4)具有很多NULL值的列(5)需要经常插入、删除、修改的列。(6)记录较少的基本表(7)需要进行频繁、大批量数据更新的基本表4)索引的类型索引是创建在基本表列上的一种数据对象,从使用角度可将索引分为以下单列索引、惟一索引、复合索引三类;从是否改变基本表记录的物理位置角度可分为聚集索引和非聚集索引两类。实际的索引通常是这两大类5种方式的组合。5)聚集和非聚集索引的对比聚集索引和非聚集索引是SQLServer中经常用到的两个概念,是非此即彼的关系。一个单列或复合索引即可以是聚集的也可以是非聚集的。在建立索引时,是采用聚集方式还是非聚集方式主要应从以下几点考虑:(1)存取速度从建立了聚集索引的表中取出数据要比建立了非聚集索引的表快。但相对而言,聚集6索引会降低向表中插入、删除和修改数据的速度。(2)索引的数据对聚集索引的主要限制是每个表只能建立一个聚集索引。但是一个表可以有不止一个非聚集索引。实际上,对每个表最多可以建立249个非聚集索引。也可以对一个表同时建立聚集和非聚集索引。(3)所需空间非聚集索引需要较多的硬盘空间和内存。6)创建索引(1)语句格式:CREATE[UNIQUE][CLUSTERED]INDEX索引名ON表名(列名1[次序][,列名2[次序]]…)(2)语句功能主要参数的意义是:UNIQUE:为表或视图创建惟一索引(不允许存在索引值相同的两行)。CLUSTERED:聚集索引索引名:在实际使用时,用户并不需要知道索引名,但在创建阶段,索引名应符合SQLServer的命名规则。并且在整个数据库中,索引名不能重复。次序:每个“列名”后面可以用“次序”指定索引值的排列次序,ASC表示升序,DESC表示降序,默认值是ASC。7)删除索引(1)语句格式:DROPINDEX索引名[,…n](2)语句功能:使用该语句一次可以撤消一个或多个指定的索引,索引名之间用逗号间隔。7.视图1)视图的概念视图看上去同表一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存。在视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。2)视图的作用7视图是由一个或多个基本表导出的表,人们通常把它理解为一组存储在SQLServer数据库中,经过预先编译的SELECT语句。在SQLServer中可以基本表一样对视图进行查询、删除、更新操作,但在对视图数据所进行的增加、删除、修改等更新操作最终都映射到相应的基本表上,并有一定的限制,在实际应用中,尽可能不要通过视图对记录进行更新操作。(1)视图是经过预编译的SELECT语句,存储在数据库服务器端,因此执行视图比从客户端直接执行SELECT语句速度更快、效率更高一些。(2)视图属于用户模式范畴,在实际中,一般的用户不一定具有SELECT语句方面的专门知识,从户友好性角度来说,视图更便于用户使用。(3)利用视图可以简化的形式表达复杂的SELECT语句组,如嵌套查询等。3)创建视图(1)语句格式:CREATEVIEW视图名(列名,...)ASSELECT子句(2)语句功能:在当前数据库中根据SELECT子句的查询结果建立一个视图。4)删除视图(1)语句格式:DROPVIEW视图名(2)语句功能:删除当前数据库的一个视图。8.存储过程1)存储过程的概念存储过程(StoredProcedure)是一组预先编译好的,以一种可执行的形式永久地存储在数据中的SQL代码,在master数据库中存储了一些SQLServer事先定义好的系统存储过程,通常以sp_xxxx做为存储过程的名字。当用户创建数据库时,也会自动生成一些事先定义好的存储过程,通常以dt_xxxx做为名字。使用存储过程的好处可归纳为以下几点:(1)执行速度快。(2)模块化的程序设计。(3)减少网络流量。

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功