SQL资料.docx
- 文档编号:13030189
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:55
- 大小:107.01KB
SQL资料.docx
《SQL资料.docx》由会员分享,可在线阅读,更多相关《SQL资料.docx(55页珍藏版)》请在冰点文库上搜索。
SQL资料
目录
第一部分SQLServer关系数据库3
一、SQLServer特点3
二、SQLServer2000常见的版本3
三、SQLServer2000常用工具3
第二部分数据库的创建和管理5
一、数据库的存储结构5
二、创建和删除数据库6
第三部分表的创建和管理8
一、数据类型8
二、创建表11
三、删除表13
四、创建、删除和修改约束13
五、添加约束的语法:
14
六、删除约束15
第四部分T-SQL16
一、T-SQL的组成16
二、T-SQL中的运算符16
三、通配符17
四、使用变量17
五、逻辑控制语句18
六、批处理语句19
第五部分视图20
一、视图的概念20
二、视图的优点20
三、创建视图21
四、通过视图修改记录21
第六部分索引23
一、索引的概念23
二、索引的优点23
三、索引的作用23
四、索引的分类24
五、创建索引的指导原则24
六、索引的特性25
七、删除索引25
第七部分表中数据的操作26
一、使用SELECT语句查询数据26
二、使用Insert语句插入数据30
三、数据更新UPDATE32
四、使用DELETE删除数据33
第八部分存储过程34
一、存储过程34
二、创建存储过程35
三、调用存储过程36
第九部分触发器37
一、概念37
二、优点37
三、触发器的类型:
38
四、创建触发器38
第十部分SQLServer2000的安全机制40
一、SQLServer2000登录身份验证模式40
二、访问许可确认40
三、用户权限管理41
四、角色管理42
第一部分SQLServer关系数据库
一、SQLServer特点
SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。
SQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出的版本。
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。
SQLServer也可以很好地与MicrosoftBackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
二、SQLServer2000常见的版本
⏹企业版(EnterpriseEdition):
一般作为数据库服务器使用。
⏹标准版(StandardEdition):
一般用于小型的工作组或部门。
⏹个人版(PersonalEdition):
主要适用于移动用户。
⏹开发人员版(DeveloperEdition):
是一个适用于应用程序开发的版本。
三、SQLServer2000常用工具
为了管理SQLServer2000的服务器和客户机,使用SQLServer2000开发数据库和应用程序,SQLServer2000提供了一套常用的管理工具和实用程序。
1、SQLServer服务管理器(ServiceManager)
在服务器端实际工作时最有用的实用程序。
SQLServer服务管理器的主要作用是用来启动数据库服务器的实时服务、暂停和停止正在运行的服务,或在暂停服务后继续服务。
2、企业管理器(EnterpriseManager)
SQLServer中最重要的一个管理工具。
用户和系统管理员可以使用它来管理网络、计算机、服务和其它系统组件。
企业管理器不仅能够配置系统环境和管理SQLServer,而且由于它能够以层叠列表的形式来显示所有的SQLServer对象,因而所有SQLServer对象的建立与管理都可以通过它来完成。
服务器的注册:
只有经过注册的服务器才能被SQLServer管理工具识别。
第一次启动SQLServer2000的服务时,SQLServer2000会自动完成本地默认实例数据库的注册。
但如果要实现非本机数据库的管理,必须手动注册该服务器。
3、SQLServer2000的查询分析器(QueryAnalyzer)
可以使用户交互式地输入和执行各种Transact-SQL语句,并且迅速地查看这些语句的执行结果,来完成对数据库中的数据的分析和处理。
4、服务器网络实用工具
服务器网络实用工具(ServerNetworkUtility)用来配置本计算机作为服务器时允许使用的连接协议,还可以在此设置相关参数等。
客户端应用程序与数据库服务器的通信
位于同一台计算机:
SQLServer2000利用Windows进程间通信组件,如共享内存和命名管道。
不在同一台计算机:
利用网络通信组件。
SQLServer2000做了简化,只需要提供服务器计算机的网络名称。
在所有通信组件中,网络库(Net-Library)是最主要的。
5、客户端网络实用工具
客户端网络实用工具(ClientNetworkUtility)用来配置客户端的网络连接,管理和测定客户端的网络库等。
别名是ODBC或查询分析器识别服务器时使用的名字,方便用户使用。
在用命名管道配置时,如果服务器在本机,注意用“.”表示。
注册服务器是进行服务器集中管理和实现分布式查询的前提。
注册成功需要:
服务器端和客户端必须配置相同的网络库
客户端的配置信息必须正确无误
四、SQLServer2000的系统数据库
SQLServer2000安装成功后,系统会自动创建6个系统数据库。
这些系统数据库的文件存储在MicrosoftSQLServer默认安装目录下的MSSQL子目录的Data文件夹中,数据库文件的扩展名为.mdf,数据库日志文件的扩展名为.ldf。
Master数据库:
记录了SQLServer系统的所有系统信息。
这些系统信息包括所有的登录信息、系统设置信息、SQLServer的初始化信息和其它系统数据库及用户数据库的相关信息。
Model数据库:
是所有用户数据库和Tempdb数据库的模板数据库。
它含有Master数据库的所有系统表子集,这些系统数据库是每个用户定义数据库时都需要的。
Msdb数据库:
是代理服务数据库。
Tempdb数据库:
是一个临时数据库。
Tempdb数据库由整个系统的所有数据库使用。
SQLServer每次启动时,tempdb数据库被重新建立。
当用户与SQLServer断开连接时,其临时表和存储过程被自动删除。
Pubs和Northwind数据库:
它们是SQLServer自带的两个实例数据库。
五、SQLServer2000常用系统表
Sysobjects表。
SQLServer的主系统表,出现在每个数据库中。
它对每个数据库对象含有一行记录。
Syscolumns表。
出现在master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数含有一行记录。
Sysindexes表。
出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表含有一行记录,它还对包括文本/图像数据的每个表含有一行记录。
Sysusers表。
出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个WindowsNT用户、WindowsNT用户组、SQLServer用户或者SQLServer角色含有一行记录。
Sysdatabases表。
它对SQLServer系统上的每个系统数据库和用户自定义的数据库含有一行记录,只出现在master数据库中。
Sysdepends表。
它对表、视图和存储过程之间的每个依赖关系含有一行记录,出现在master数据库和每个用户自定义的数据库中。
第二部分数据库的创建和管理
一、数据库的存储结构
数据库的存储结构分为逻辑存储结构和物理存储结构两种。
数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成。
实际上,SQLServer的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成。
数据库的物理存储结构是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。
(一)数据库文件
1.主数据库文件(PrimaryDatabaseFile)
一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库。
当有多个数据库文件时,有一个文件被定义为主数据库文件(简称为主文件),其扩展名为mdf。
主数据库文件用来存储数据库的启动信息以及部分或者全部数据,是所有数据库文件的起点,包含指向其它数据库文件的指针。
一个数据库只能有一个主数据库文件。
2.辅助数据库文件(SecondaryDatabaseFile)
用于存储主数据库文件中未存储的剩余数据和数据库对象,一个数据库可以没有辅助数据库文件,但也可以同时拥有多个辅助数据库文件。
辅助数据库文件的扩展名为ndf(简称为辅助文件)。
3.事务日志文件
存储数据库的更新情况等事务日志信息,当数据库损坏时,管理员使用事务日志恢复数据库。
每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。
事务日志文件的扩展名为ldf,日志文件的大小至少是512KB。
SQLServer事务日志采用提前写入的方式。
注意:
SQLServer2000中的数据和事务日志文件不能存放在压缩文件系统或象共享网络目录等远程的网络驱动器上。
SQLServer2000的文件拥有两个名称,即逻辑文件名和物理文件名。
当使用Transact-SQL命令语句访问某一个文件时,必须使用该文件的逻辑名。
物理文件名是文件实际存储在磁盘上的文件名,而且可包含完整的磁盘目录路径。
(二)数据库文件组
利用文件组可以使服务器的性能得到提高。
主文件组中包含了所有的系统表,当建立数据库时,主文件组包括主数据库文件和未指定组的其他文件。
用户定义文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。
如果没有指定缺省文件组,则主文件组为缺省文件组。
一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;日志文件是独立的,它不能作为任何文件组的成员。
二、创建和删除数据库
(一)创建数据库
创建数据库需要一定许可,在默认情况下,只有系统管理员和数据库拥有者可以创建数据库。
数据库被创建后,创建数据库的用户自动成为该数据库的所有者。
创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程等。
说明:
在Transact-SQL语言的命令格式中,用[]括起来的内容表示是可选的;[,…n]表示重复前面的内容;用<>括起来表示在实际编写语句时,用相应的内容替代;用{}括起来表示是必选的;类似A|B的格式,表示A和B只能选择一个,不能同时都选。
T-SQL创建数据库的语法:
CREATEDATABASE数据库名
ON[PRIMARY]
(
<数据文件参数>[,…n][<文件组参数>]
)
[LOGON]
(
<日志文件参数>[,…n]
)
例:
CREATEDATABASEstuDB
ONPRIMARY--默认就属于PRIMARY主文件组,可省略
(
NAME='stuDB_data',--主数据文件的逻辑名
FILENAME='D:
\project\stuDB_data.mdf',--主数据文件的物理名
SIZE=5mb,--主数据文件初始大小
MAXSIZE=100mb,--主数据文件增长的最大值
FILEGROWTH=15%--主数据文件的增长率
)
LOGON
(
NAME='stuDB_log',
FILENAME='D:
\project\stuDB_log.ldf',
SIZE=2mb,
FILEGROWTH=1MB
)
GO
(二)删除数据库
删除数据库的语法:
DROPDATABASE数据库名
例:
通常在建库时,会使用EXISTS()语句,用于检测是否存在stuDB数据库,如果存在stuDB数据库,则删除。
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='stuDB')
DROPDATABASEstuDB
CREATEDATABASEstuDB
ON(
…..
)
LOGON
(
…
)
GO
第三部分表的创建和管理
一、数据类型
(一)系统数据类型
系统数据类型是SQLServer预先定义好的,可以直接使用。
1.整型数据类型
(1)int(integer):
4个字节
(2)Smallint:
2个字节
(3)Tinyint:
1个字节
2.浮点数据类型:
用于存储十进制小数,采用只入不舍的方式
(1)Real:
4个字节的,最大7位精确位数。
(2)Float:
可以精确到第15位小数,默认占用8个字节的存储空间。
Float数据类型也可以写为float(n)的形式,n为1~15之间的整数值。
当n取1~7时,系统用4个字节存储它;当n取8~15时,用8个字节存储它。
(3)Decimal和numeric:
可以提供小数所需要的实际存储空间,可以用2~17个字节来存储。
也可以将其写为decimal(p,s)的形式。
注意:
数值类型的总位数不包括小数。
例如:
decimal(10,5),表示共有10位数,其中整数5位,小数5位。
3.字符数据类型
用来存储各种字母、数字符号和特殊符号。
在使用时需要在其前后加上英文单引号或者双引号。
(1)Char:
占用1个字节。
其定义形式为:
char(n)
n的取值为1~8000。
默认n的值为1。
(2)Varchar:
可以存储长达8000个字符的可变长度字符串,和char类型不同varchar类型根据输入数据的实际长度而变化。
其定义形式为:
varchar(n)
(3)Nchar:
采用Unicode(统一字符编码标准)字符集每个Unicode字符用两个字节为一个存储单位。
其定义形式为:
nchar(n)
(4)Nvarchar:
使用Unicode字符集的Varchar数据类型。
其定义形式为:
nvarchar(n)
4.日期和时间数据类型
(1)Datetime:
占用8个字节。
用于存储日期和时间的结合体,可以存储从公元1753年1月1日零时起~公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百分之一秒,即3.33毫秒。
当存储datetime数据类型时,默认的格式是:
MMDDYYYYhh:
mmA.M./P.M。
当插入数据或者在其它地方使用datetime类型时,需要用单引号把它括起来。
默认January1,190012:
00A.M。
可以接受的输入格式如下:
Jan41999、JAN41999、January41999、Jan19994、19994Jan和1999Jan4。
datetime数据类型允许使用/、-和.作为不同时间单位间的分隔符。
(2)Smalldatetime:
存储从1900年1月1日~2079年6月6日内的日期。
4个字节。
5.文本和图形数据类型
(1)Text:
容量可以在1~231-1个字节。
在定义Text数据类型时,不需要指定数据长度,SQLServer会根据数据的长度自动为其分配空间。
(2)Ntext:
采用unicode标准字符集,用于存储大容量文本数据。
其理论上的容量为230-1(1,073,741,823)个字节。
(3)Image:
用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。
6.货币数据类型
(1)Money:
用于存储货币值,数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808~922337213685477.5808,精度为货币单位的万分之一。
(2)Smallmoney:
其存储范围为-214748.3468~214748.3467。
当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符号(如$或其它货币单位的记号)。
7.位数据类型
Bit称为位数据类型,有两种取值:
0和1。
如果一个表中有8个或更少的bit列时,用1个字节存放。
如果有9~16个bit列时,用2个字节存放。
在输入0以外的其它值时,系统均把它们当1看待。
8.二进制数据类型
(1)Binary:
其定义形式为binary(n),数据的存储长度是固定的,即n+4个字节。
二进制数据类型的最大长度(即n的最大值)为8000,常用于存储图像等数据。
(2)Varbinary:
其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。
在输入二进制常量时,需在该常量前面加一个前缀0x。
(二)自定义数据类型
1.使用企业管理器创建
2.利用系统存储过程创建
sp_addtype[@typename=]type,
[@phystype=]system_data_type
[,[@nulltype=]‘null_type’]
[,[@owner=]‘owner_name’]
type:
指定用户定义的数据类型的名称。
system_data_type:
指定相应的系统提供的数据类型的名称及定义。
注意,不能使用timestamp数据类型,当所使用的系统数据类型有额外说明时,需要用引号将其括起来。
null_type:
指定用户自定义数据类型的null属性,其值可以为‘null’、‘notnull’或者‘nonull’。
默认与系统默认的null属性相同。
owner_name:
指定用户自定义数据类型的所有者。
删除用户自定义数据
1.使用企业管理器
2.利用系统存储过程
sp_droptype[@typename=]‘type’
二、创建表
建表的基本步骤:
1.确定表中有哪些列
2.确定每列的数据类型
3.给表添加各种约束
4.创建各表之间的关系
表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。
在SQLServer2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列。
在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。
利用企业管理器创建表:
⏹默认值:
指定列的默认值。
除定义为timestamp或带IDENTITY属性的列以外的任何列。
删除表时,将删除默认值定义。
只有常量值(如字符串)、SQLServer内部函数(如SYSTEM_USER())或NULL值可以用作默认值。
⏹精度和小数位数:
精度是列的总长度,包括整数部分和小数部分的长度之和,但不包括小数点;小数位数指定小数点后面的长度。
⏹标识:
指定列是否是标识列。
一个表只能创建一个标识列。
不能对标识列使用绑定默认值和DEFAULT约束。
必须同时指定种子和增量,或者两者都不指定。
默认值(1,1)。
能够成为标识列的数据类型有int、smallint、tinyint、numeric和decimal等系统数据类型;如果其数据类型为numeric和decimal,不允许出现小数位数。
⏹标识种子:
指定标识列的初始值。
⏹标识递增量:
指定标识列的增量值。
⏹是RowGuid:
指定列是否使用全局唯一标识符。
⏹公式:
用于指定计算列的列值表达式。
⏹排序规则:
指定列的排序规则。
说明:
在数据库中表名必须是唯一的,但是如果为表指定了不同的用户,就可以创建多个相同名称的表。
建表示例:
CREATETABLEstuInfo/*-创建学员信息表-*/
(
stuNameVARCHAR(20)NOTNULL,--姓名,非空(必填)
stuNoCHAR(6)NOTNULL,--学号,非空(必填)
stuAgeINTNOTNULL,--年龄,INT类型默认为4个字节
stuIDNUMERIC(18,0),--身份证号
stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号
stuAddressTEXT--住址,允许为空,即可选输入
)
三、删除表
删除表的语法:
DROPTABLE表名
删除表示例:
IFEXISTS(SELECT*FROMsysobjectsWHEREname=’stuInfo’)
DROPTABLEstuInfo
四、创建、删除和修改约束
约束是SQLServer提供的自动保持数据库完整性的一种方法。
⏹列级约束:
列级约束是行定义的一部分,只能够应用在一列上。
⏹表级约束:
表级约束的定义独立于列的定义,可以应用在一个表中的多列上。
约束的目的:
确保表中数据的完整型
常用的约束类型:
(一)主键约束
主键能够唯一地确定表中的每一条记录,主键不能取空值。
主键约束可以保证实体的完整性。
(二)唯一性约束
唯一性约束用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。
⏹使用唯一性约束的字段允许为空值;
⏹一个表中可以允许有多个唯一性约束;
⏹可以把唯一性约束定义在多个字段上;
⏹唯一性约束用于强制在指定字段上创建一个唯一性索引;
⏹默认情况下,创建的索引类型为非聚集索引。
(三)检查约束
保证数据库数据的完整性。
⏹一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
⏹一个表中可以定义多个检查约束;
⏹每个CREATETABLE语句中每个字段只能定义一个检查约束;
⏹在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
⏹当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
⏹检查约束中不能包含子查询。
(四)默认约束
⏹每个字段只能定义一个默认约束;
⏹如果定义的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 资料