SQLSERVER教程数据库应用部分Word格式.docx
《SQLSERVER教程数据库应用部分Word格式.docx》由会员分享,可在线阅读,更多相关《SQLSERVER教程数据库应用部分Word格式.docx(77页珍藏版)》请在冰豆网上搜索。
用户所见的数据结构是视图(View),用户可直接操作的表,可为视图或部分基
本表。
对应外模式
1.2主要组件
山企业管理器、查询分析器、服务管理器等组成。
1.2.1服务管理器
SQLServer服务管理器(ServiceManager)是在服务器端实际工作时最有用的实用程序。
SQLServer服务管理器的主要作用是用来启动数据库服务器的实时服务、暂停和停止正在运行的服务,或在暂停服务后继续服务。
1.2.2企业管理器
企业管理器(EnterpriseManager:
EM)是SQLServer中一个很重要的插件,它通过GUI(图形用户界面)环境管理SQLServero
层次:
根H录、服务器组、服务器。
每一个服务器的名称由以下儿项组成:
名称、数据库、数据转换服务、管理、复制、安全性、支持服务、MetaDataService等。
1.2.2.1建立服务器组
在企业管理器中,可以连接与管理多个服务器。
服务器组是用来把比较上相似的SQLSERVER2000服务器组织在一起的一种方式,如市场部中有4个服务器,生产部中有6个服务器,可以将这些服务器都组织在"
SQLSERVER组”中,也可以创建两个服务器组,一个叫作“市场”,一个叫做“生产”,这样比较容易区分服务器的作用。
服务器组的建立:
右键单击MicrosoftSQLServers或现有服务器组,从弹出的菜单中选择“新建服务器组”。
服务器组的更名:
右键单击要更名的服务器组。
1.2.2.2建立服务器
首次访问EM时,第一个任务是将服务器注册。
如果在服务器上运行,则本地服务器自动在SQLServer组中注册。
通过EM可以添加新服务器。
1.2.3查询分析器
SQLServer2000的查询分析器(QueryAnalyzer)可以使用户交互式地输入和执行各种Transact-SQL语句,并且迅速地查看这些语句的执行结果,来完成对数据库中的数据的分析和处理。
1.2.3.1启动查询分析器
执行企业管理器的“工具”菜单下的“SQL查询分析器”命令或执行“MicrosoftSQLServer”下的"
查询分析器”。
1.2.3.2查询分析器的使用
新建查询文件
保存查询文件
1.2.4使用帮助
运行“联机丛书”组件。
第2章Transact-SQL语言基础
Transact-SQL语言乂称T-SQL是MicroSoft开发的一种SQL语言。
2.1数据类型
2.1.1二进制数据
二进制数据以十六进制形式存储。
二进制数据:
固定长度(binary)的或可变长度(varbinary)的二进制数据类型。
格式:
binary[(力)]固定长度的n个字节二进制数据。
varbinary[(m)]n个字节变长二进制数据
注释:
如果在数据定义或变量声明语句中没有指定”,默认长度为lo
declareblvarbinary
(1)
setbl二0x3456
selectbl
结果为0x34
而:
declareblvarbinary
setbl=0x3456
结果也为0x34
2.1.2字符数据
用来表示一串字符。
字符数据型分为char,varchar等类型。
>长度不同时可用varchar类型,但任何项的长度都不能超过8KB。
>定长使用char类型(最多8KB)o
char[(n)]定长为n的字符型数据
varchar[(n)]最大长度为n的变长字符型数据
例:
declarecharlchar(5)
setcharl=,fff'
selectcharl
注意:
如果没有在数据定义或变量声明语句中指定刀,则默认长度为1。
2.1.3日期时间数据
日期时间数据类型:
用来表示日期与时间,依时间范圉与精确程度可分为
DATETIME与SMALLDATETIME两种。
例:
4/01/9812:
15:
00:
00PMS'
1:
28:
29:
15:
01AM8/17/98'
。
datetime范围为1753.1.1-9999.12.31
smalldatetime范围为1900.1.1-2079.6.6
该数据类型长度固定。
2.1.4数值型数据
2.1.4.1整型数据
bigint(-2飞3-2飞3-1)(8B)。
int(-2,147,483,648至2,147,483,647)(4B)。
smallint(-32,768至32,767)(2B)。
tinyint(0-255)(1B)。
定义数据时要注意数据的范围。
2.1.4.2实型数据
定点数数据:
使用decimal(numeric)数据类型存储:
-10吟1〜10叱1
decimal[(p[,s])]其中P为总位数,即精度,S为小数位数
numeric[(p[,s])]若S缺省,则无小数部分
精度
存储字节数
1-9
5
10-19
9
20-28
13
29-38
17
浮点数数据:
用float型和real型存储,浮点数据只是近似数据,不一定能准确表示数据。
其中:
Float:
-1.79E+308〜1.79E+308
Real:
-3.4E+38〜3,4E+38
float(real)[(/2)]n为用于存储科学记数法float数尾数的位数
2.1.5货币数据
货币数据类型用于货币值。
分为money和smallmoney类型。
精确度为四位小数。
money:
-922,337,203,685,477.5808〜922,337,203,685,477.5807)(8B)。
Smallmoney:
~214,748.3648〜214,748.3647(4B)。
2.1.6特殊数据类型
bit数据类型只能包括0或1。
可以用bit数据类型代表TRUE或FALSE.YES或N0o
2.1.7文本和图像数据类型
文本(text):
用来处理可变长的大文本数据,其中text可存储2GB。
图像(image):
用来处理图像数据,可存储2GB。
例如,必须将一个有关用户信息的大文本文件(.txt)导入到SQLServer数据库中。
应将这些数据作为一个数据块存储起来,而不是集成到数据表的多个列中。
为了达到这个H的,可以创建一个text数据类型的列。
然而,如果必须存储当前作为标记图象文件格式(TIFF)图像(.tif)存储的、每个大小为10KB的公司徽标,则需创建一个image数据类型的列。
2.2变量
变量分为局部变量和全局变量,但使用前必须使用DECLARE声明
2.2.1局部变量
Transact-SQL局部变量是可以保存特定类型的单个数据值的对象,还可以保存程序执行过程中的中间数据值,保存山存储过程返回的数据值等。
2.2.1.1输出变量的值:
select变量名
或Print变量名
2.2.1.2声明局部变量
格式:
DECLARE变量名类型[(长度)][,...]
作用:
声明变量并将变量初始化为NULL
2.2.1.3变量赋值
可通过SET语句和SELECT语句对局部变量赋值。
SET变量名二表达式
SELECT变量名二表达式
2.2.2全局变量
全局变量是山系统提供且预先声明的变量,通过在名称前保留两个0符号区别于局部变量。
全局变量在整个SQLServer系统内使用。
存储的通常是一些SQLServer的配置设定值和统计数据。
在使用全局变量时应该注意以下儿点:
•全局变量是在服务器级定义的。
•用户只能使用预先定义的全局变量。
•引用全局变量时,必须以标记符“”开头。
•全局变量对用户来说是只读的。
•局部变量的名称不能与全局变量的名称相同。
如:
SERVERNAME给出服务器名
ROWCOUNT给出最近一个SELECT影响的行数
2.2.3命令的执行与结果显示
执行“查询”菜单下“执行”命令或F5键。
执行“查询”菜单下的“文本显示结果”或“以表格显示结果”命令
2.3运算符和表达式
2.3.1运算符
2.3.1.1算术运算符
+-*/%(取模,求余)
2.3.1.2比较运算符
二,>,<,>二,<=,◊,!
二(不等于),!
>(不大于),!
〈(不小于)
2.3.1.3位运算符
运算符
含义
&
(按位AND)
按位AND(两个操作数)
I(按位OR)
按位OR(两个操作数)
"
(按位异或XOR)
按位互斥OR(两个操作数
~(按位求反NOT)
返回数字的补数。
2.3.1.4逻辑运算符
ALL
如果一系列的比较都为TRUE,那么就为TRUE。
AND
如果两个布尔表达式都为TRUE,那么就为TRUE。
ANY
如果一系列的比较中任何一个为TRUE,那么就为TRUEo
BETWEEN
如果操作数在某个范国之内,那么就为TRUE。
EXISTS
如果子查询包含一些行,那么就为TRUE。
IN
如果操作数等于表达式列表中的一个,那么就为TRUEo
LIKE
如果操作数与一种模式相匹配,那么就为TRUE。
NOT
对任何其它布尔运算符的值取反。
OR
如果两个布尔表达式中的一个为TRCE,那么就为TRUE。
SOME
如果在一系列比较中,有些为TRUE,那么就为TRUE。
2.3.1.5字符串串联运算符
字符串吊联运算符允许通过加号“+”进行字符串串联
2.3.2表达式
SQLSERVER中表达式非常丰富,除了以上表达式外,还CASE表达式等,用于复
杂情况。
2.4函数
2.4.1字符串函数
2.4.1.1ASCII
功能:
返回字符表达式最左端字符的ASCII代码值。
ASCII(character_expression)
2.4.1.2CHAR
将ASCII值转换为字符函数。
CHAR(integer_expression)
参数:
integer_expression介于0和255之间的整数。
如果整数表达式不在此范围内,将返回NULL值。
显示ASCII字符
declareiastinyint
seti二32
whilei<
126
begin设置语句块,相当于循环体
printchar(i)
seti二i+1
end
2.4.1.3LEN
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾部空格。
LEN(string_expression)
string_expression要计算的字符串表达式。
SELECTLEN('
CompanyName,)
2.4.1.4LEFT和RIGHT
LEFT为左取子串函数
LEFT(character_expression,integer_expression)
RIGHT为右取子串函数:
RIGHT(character_expression,integer_expression)
SELECTLEFT('
ABCDEFG,,5)
2.4.1.5LOWER和UPPER
LOWER(character—expression)
2.4.2日期和时间函数。
2.4.2.1DATEADD
在向指定日期加上一段时间的基础上,返回新的datetime值。
DATEADD(datepart,number,date)
日期部分
缩写
Year
yy,yyyy
quarter
qq,q
Month
mm,m
dayofyear
dy,y
Day
dd,d
Week
wk,ww
Hour
hh
minute
mi,n
second
ss,s
millisecond
ms
SELECT"
出生日期"
=csrq,”周年”二DATEADD(year,1,csrq)fromstudent
2.4.2.2DATEDIFF
给岀两个日期之间的差值。
:
DATEDIFF(datepart,startdate,enddate)
检索所有学生的年龄:
SELECTDATEDIFF(YEAR,CSRQ,GETDATE())ASAGE,CSRQFROMSTUDENT
2.4.2.3DAY、MONTH、YEAR
DAY(date)
取指定日期的日
MONTH(date)
取指定日期的月
YEAR(date)
取指定日期的年
SELECTYEAR(GETDATE())-YEAR(CSRQ)ASAGEFROMSTUDENT
2.4.2.4GETDATE
GETDATE()
取当前系统日期和时间
2.4.3数值函数
2.4.3.1CEILING
返回大于或等于所给数字表达式的最小整数。
CEILING(numeric_expression)
SELECTCEILING(123.45),CEILING(-123.45),CEILING(0.0)
2.4.3.2FLOOR
返回小于或等于所给数字表达式的最大整数。
FLOOR(numeric_expression)
SELECTFLOOR(123.45),FLOOR(-123.45)
2.4.3.3POWER
作用:
返回给定表达式乘指定次方的值。
语法:
POWER(numeric_expression,y)
2.4.3.4RAND
返回0到1之间的随机float值。
语法RAND()
declareaasfloat
seta=rand()
printa
2.4.3.5EXP
返回所给的float表达式的指数值。
语法:
EXP(float_expression)
2.4.3.6CONVERT函数
将某种数据类型的表达式显式转换为另一种数据类型。
CAST和CONVERT提供相似的功能。
CONVERT(data_type,expression)
CAST(expressionASdata_type)
selectconvert(char(6),567)
2.4.4系统函数
返回数据库和数据库对象的特性信息。
2.4.4.1COL_LENGTH
功能:
参数:
返回列的定义长度(以字节为单位)。
COL_LENGTH('
tabid,1column)'
table1:
表名称,Column:
列名称
2.4.4.2DB_NAME
在master数据库中,记录了SQLServer系统的所有系统级别信息。
它记录所有的登录帐户和系统配置设置及所有其它的数据库的信息,其中包括数据库文件的位置。
返回数据库名。
DB_NAME(database_id)
database.id,是应返回数据库的标识号(ID)o
USEmaster
SELECTdbid,DB.NAME(dbid)ASDB.NAME
FROMsysdatabases
2.4.4.3DB_ID
返回数据库标识(ID)号。
DB_ID(L9database_nam6])
库ID。
5database_name,,数据库名,如果不填database_name,则返回前数据
此例检查在sysdatabases中的每个数据库,使用数据库名来确定数据库ID。
SELECTname,DB_ID(name)ASDB_ID
2.4.4.4HOST_NAME
返回工作站名称。
语法:
HOST_NAME()返回类型:
nchar例:
selectHOST.NAME()
第3章数据库的创建与管理
数据库是相关的多维数据集及其所共享的对象的容器。
这些对象包括数据源(表)、表、视图、规则、角色、存储过程、自定义函数等。
如果多个多维数据集要共享这些对象,那么这些对象和多维数据集必须在同一个数据库中。
在对象层次结构中,数据库直接从属于分析服务器。
因此,在安装分析服务器后,第一个要创建的对象就是数据库。
数据库可以在〃数据库〃对话框中进行创建
3.1.1数据库的文件组成
数据库可由三种文件组成,主文件(.MDF)、次要数据文件(.ndf)、日志文件(.LDF),在SQLServer中,数据库必须至少包含一个主文件和一个事务日志文件。
3.1.1.1主要数据文件
该文件包含数据库的启动信息,并用于存储数据。
每个数据库都有一个主文件。
主文件的扩展名为.mdfo
3.1.1.2次要文件
这些文件含有不能置于主要数据文件中的所有数据。
如果主文件可以包含数据库中的所有数据,那么数据库就不需要次要数据文件。
有些数据库可能足够大故需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘。
>次要文件可有多个。
>次要文件的扩展名为.ndf
3.1.1.3日志文件
事务日志文件保存用来恢复数据库的日志信息。
每个数据库必须至少有一个事务日志文件(尽管可以有多个)。
事务日志文件最小为512KB。
数据和事务日志信息从不混合在同一文件中,并且每个文件只能山一个数据库使用。
每个数据库至少有两个文件,一个主文件和一个事务日志文件。
3.1.2文件组
文件组是SQLServer中一个或多个文件的命名集合,它构成或分配用于数据库管理的单个单元。
文件组允许对文件进行分组,以便于管理和数据的分配/放置。
例如,可以分别在三个硬盘驱动器上创建三个文件(Datal.mdf、Data2.ndf和Ddta3.ndf),并将这三个文件指派到文件组fgroupl中。
然后,可以明确地在文件组fgroupl上创建一个表。
对表中数据的查询将分散到三个磁盘上,在多处理器中,对同一文件组的不同文件,可以采用多线程并行操作,因而性能得以提高。
3.1.2.1文件组的分类
3.1.2.1.1主文件组
此文件组包含主数据文件以及任何其它没有放入其它文件组的文件。
系统表都在主文件组。
3.1.2.1.2用户定义文件组
该文件组是用CREATEDATABASE或ALTERDATABASE语句中的FILEGROUP关键字指定的任何文件组。
3.1.2.1.3默认文件组
默认文件组包含在创建时没有指定文件组的所有表和索引的页。
在每个数据库中,每次只能有一个文件组是默认文件组。
如果没有指定默认文件组,则默认文件组是主文件组。
3.1.2.2文件组说明
>最多可以为每个数据库创建256个文件组。
文件组只能包含数据文件。
事务
日志文件不能是文件组的一部分。
>文件组不能独立于数据库文件创建。
文件组是在数据库中对文件进行分组的一种管理机制。
3.2数据库的创建与管理
3.2.1数据库创建
3.2.1.1使用创建数据库向导
打开企业管理器后,选中“数据库”后,执行“工具”菜单下的“向导”命令。
3.2.1.2使用企业管理器
打开企业管理器后,右键单击“数据库m选择“新建数据库”命令。
3.2.1.3使用create命令
CREATEDATABASEdatabasename:
数据库文件名
LOGON
FILEGROWTH二growth^increment):
指定文件增长的增量
指定日志文件
(NAME=logical_file_name,
FILENAME二'
os_file_namd,
SIZE=size,
MAXSIZE二maxsize,
FILEGROWTH=growth^increment)
例如:
CREATEDATABASEOrders
ONPRIMARY
(NAME=Orders_dat,
FILENAME='
c:
\programfiles\microsoftsqlserver\mssql\data\Orders.mdf*,
S