关系数据库基础
第二章SQLServer2008的一般应用
目录
.SQLServer简介
.SQLServer2008的安装
.SQLServer2008使用
.T-SQL及T-SQL的数据类型
.T-SQL的常量与变量
2.1SQLServer简介
SQLServer2008是由Microsoft公司开发的数
据库服务器平台,其中2008是其版本号。SQL
Server2008是一个可信任的、高效的、智能的数
据平台,旨在满足目前和将来管理和使用数据的
需求。
.虽然建立在2005版本上,但SQLServer2008
在性能、稳定性、易用性上都有相当大的改进。
使得它成为至今为止的最强大和最全面的SQL
Server版本。
1988年,Microsoft、Sybase和Ashton-Tate公司联合,开发出运行于OS/2
操作系统上的SQLServer1.0。
1989年,Ashton-Tate公司退出SQLServer的开发。
1990年,SQLServer1.1产品面世。
1992年,SQLServer4.2产品面世。
1994年,Microsoft公司和Sybase公司分道扬镳。
1995年,Microsoft公司发布了SQLServer6.0产品,随后的SQLServer6.5
产品取得了巨大的成功。
1998年,Microsoft公司发布了SQLServer7.0产品,开始进入企业级数据
库市场。
2000年,Microsoft公司发布了SQLServer2000产品。
2005年,Microsoft公司发布了SQLServer2005产品。
2008年,Microsoft公司发布了SQLServer2008产品。
2.1SQLServer简介
.
.SQL
SQL
Server
Server2008
2008拥有以下版本:
拥有以下版本:
.SQLServer2008EnterpriseEdition(企业版)
.SQLServer2008StandardEdition(标准版)
.SQLServer2008WorkgroupEdition(工作组版)
.SQLServer2008DeveloperEdition(开发版)
.SQLServer2008ExpressEdition(学习版)
.SQLServer2008WebEdition(网络版)
.SQLServer2008CompactEdition(移动版)
2.1SQLServer简介
.安装过程见附件
2.2SQLServer安装
2.3SQLServer2008使用
.一、初识SSMS
.SSMS(SQLServerManagementStudio)是SQL
Server2008管理与应用中使用最频繁的工具,很多操作都
集成在这个工具当中。是用来建立数据库解决方案的GUI(图形用户界面)。这是一种易于使用且直观的工具,通
过使用它能快速而高效地在SQLServer2008中进行工作。
.二、启动SSMS
.打开SSMS的方法:
.(1)依次选择【开始】→【所有程序】→【MicrosoftSQL
Server2008】→【SQLServerManagementStudio】,启动
SSMS。
2.3SQLServer2008使用
.(2)在弹出的【连接到服务器】对话框中,单击【连接】
按钮。
.(3)若一切正常,便可进入SSMS界面。
2.3SQLServer2008使用
2.4T-SQL及T-SQL的数据类型
2.4.1SQL语言产生
结构化查询语言SQL(StructuredQueryLanguage)
现在已成为关系型数据库环境下的标准查询语言。
SQL语言的发展:
1
1.
.1974
1974年,美国人发明
年,美国人发明SQL
SQL语言;
语言;
2
2.
.1975
1975—
—1979
1979年
年
IBM
IBM完成
完成SQL
SQL语言制作;
语言制作;
3
3.
.1992
1992年
年ISO
ISO组织发布
组织发布SQL
SQL—
—92
92标准;
标准;
1999
1999年
年
ISO
ISO—
—SQL99
SQL99标准(最新标准);
标准(最新标准);
4
4.现在:
.现在:Microsoft
Microsoft公司
公司T
T—
—SQL
SQL标谁
标谁
甲骨文公司
甲骨文公司
PL
PL—
—SQL
SQL标准
标准
SQLServer2008支持整型、字符型、货
币型和日期时间等多种基本数据类型。
2.4T-SQL及T-SQL的数据类型
1.二进制数据类型
SQLServer用binary、varbinary和image三种数据类型存
储二进制数据。
.binary[(n)]:固定长度的n个字节二进制数据,1<=n<=8000。
.varbinary[(n)]:n个字节可变长二进制数据,1<=n<=8000。存储
大小为实际数据长度加2个字节,max指示最大存储大小为231-1字节
.image:用于存放可变长度数据介于0-231-1字节之间的二进制数据,
如MicrosoftWord文档、MicrosoftExcel图表以及图像数据等。在SQL
Server的未来版本将删除该数据类型,请避免使用。
2.4T-SQL及T-SQL的数据类型
注意:在binary和varbinary中,如果没有在数据定义或变量声明语句
中指定n,则默认长度为1
注意事项:
.二进制数据常量不允许加引号,默认用十进制书写,如
1234、1011,如果使用十六进制则必须加0x前缀。输出显
示默认采用十六进制。
.若实际数据二进制长度超过指定的n个字节,用局部变量
存储时只截取二进制的前n个字节,其余二进制位舍掉。
13
2.4T-SQL及T-SQL的数据类型
2.整型数据类型
整型数据类型是最常用的数据类型之一。SQL
Server2008支持的整数类型有int、smallint、bigint和
tinyint四种。
2.4T-SQL及T-SQL的数据类型
.int:4个字节,范围:-231~231-1,,(-2147483648到2147483647)
int数据类型是主要的整数数据类型。
.bigint:8个字节,范围:-263~263-1(-922337203685477
5808~9223372036854775807)
.smallint:2个字节,范围:-215~215-1,(-32768~32767)
.tinyint:1个字节,范围:0~255
使用时,注意每种类型的边界范围,如果输入小数,仅截取整数部分。
3.浮点数据类型
浮点数据类型用于存储十进制小数,SQLServer2008支
持的浮点数据类型分为real、float、decimal和numeric
等四种。
其中real和float属于近似数字类型,decimal和numeric
属于带固定精度和小数位数的数据类型。
2.4T-SQL及T-SQL的数据类型
.近似数字类型
.real:4个字节,数据精度为7位有效数字,数值范围为:
-3.40E+38~3.40E+38。
.float(n):n为用于存储float数值尾数的尾数(用科学计数法
表示),n的取值范围为1~53,默认值为53。n价于1-24之
间时存储大小为4个字节;n介于25-53之间时存储大小为8
个字节。其数值范围:-1.79E+308~1.79E+308。
.说明:
.浮点型数据可以表示范围非常大的数据,但是容易发生四
舍五入误差,一般不用来表示货币。
.常量表示:指数形式或者小数形式
.101.5e5
.0.5e-2
2.4T-SQL及T-SQL的数据类型
带固定精度和小数位数的数字类型
.decimal(p,s)和numeric(p,s)表示带固定精度和小数位数的
数字类型,numeric在功能上等价于decimal。
.p(精度)表示最多可以存储的十进制数字的总位数,包括小数
点左边和右边的位数。该精度必须是从1到最大精度38之间的
值,默认精度为18。
.s(小数位数)表示小数点右边可以存储的十进制数字的最大位
数。小数位数必须是从0到p之间的值,默认的小数位数为0。
注意:
只有在指定精度后才可以指定小数位数。
17
2.4T-SQL及T-SQL的数据类型
例如:
.numeric(5,3)共5位数,其中3位小数,最大值为99.999
.decimal(15,5)共15位数,其中5位小数,最大值为
9999999999.99999
.decimal(6,3),精度为6,小数位为3
.赋值:59.9999——60.000
.赋值:59.999234——59.999
.赋值:999.999234——999.999
.赋值:999.999934——1000.000(出错)
18
2.4T-SQL及T-SQL的数据类型
3.货币数据类型
货币数据类型用于存储货币值,在使用货币数据类型时,应
在数据前加上货币符号。SQLServer2008支持money和
smallmoney两种。
.Money:8个字节,前4个字节存储整数部分,后4个字节存储小数
部分。存储的货币值的范围是-263到263-1,(-92233720368
5477.5808~922337203685477.5807),精确到小数点后4位;
.Smallmoney:4个字节,前2个字节存储整数部分,后2个字节存
储整数部分。存储的货币值的范围从-231到231-1(即-214748.3648
到214748.3647),精确到小数点后4位;
.货币型的写法:
.$12
.$542023.14
2.4T-SQL及T-SQL的数据类型
declare@amoney
set@a=12.34567
select@a
4.日期和时间数据类型
日期和时间数据类型用于存储日期和时间的结合体。
SQLServer2008支持的日期时间数据类型有date、datetime、
datetime2、datetimeoffset、smalldatetime、time六种。
六种日期类型:
date:指定年、月、日的值,表示0001年1月1日至9999年12
月31日的日期。只能包含日期,不能有时间。占用3个字节
的存储空间。
datetime:表示的是1753年1月1日到9999年12月31日,可
以包含时间,时间精确到毫秒(3.33毫秒)。占用8个字节的
存储空间。
2.4T-SQL及T-SQL的数据类型
.Smalldatetime:
.表示的是1900年1月1日到2079年6月6日,精确到分钟。占用
4个字节的存储空间。
.datetime2:
.表示0001年1月1日到9999年12月31日的日期和时间。默认
的秒的小数部分精度为100ms,向下可以精确到100ns。占
用的存储空间为6-8个字节。
.datetimeoffset:
.用于存储的日期和时间(24小时制)与时区一致的日期。表
示0001年1月1日到9999年12月31日的日期和时间。默认的
秒的小数部分精度为100ms,向下可以精确到100ns。默认
为10个字节的固定大小。
.time:
.指定时、分、秒的值。支持100ns精确度。
2.4T-SQL及T-SQL的数据类型
注意:
.日期时间型常量与字符串常量相同必须使用单引号括起来。
.数据库中默认的日期格式为“年-月-日”,输入时可使用
‘年/月/日’或‘年-月-日’,也可以使用‘月/日/年’、
‘月-日-年’、‘日/月/年’或‘日-月-年’。
.SQLServer在用户没有指定小时以下精确的时间数据时,
自动设置时间为00:00:00。
22
2.4T-SQL及T-SQL的数据类型
5.字符数据类型
字符常量必须包括在单引号(')或双引号(")中。
建议用单引号括住字符常量。
SQLServer2008支持的字符数据类型有char、
varchar、text、nchar、nvarchar、ntext等六种。前三
种是非unicode字符数据,后三种是unicode字符数据。
2.4T-SQL及T-SQL的数据类型
.char(n)
.固定长度,非Unicode字符数据,长度为n个字节。n的取
值范围为1-8000。
.varchar(n|max)
.可变长度,非Unicode字符数据,n的取值范围为1-8000。
max指示最大存储长度为231-1个字节。存储大小是输入数
据的实际长度加2个字节。所输入数据的长度可以为0个字
符。
.text
.长度可变,非Unicode字符数据,最大长度为231-1个字符
。Microsoft建议,尽量避免使用text数据类型,应该使用
varchar(max)存储大文本数据。
2.4T-SQL及T-SQL的数据类型
.nchar(n)
.固定长度的双字节(Unicode)数据类型,最长可以容纳
4000个双字节字符。n值必须在1-4000之间(含)。
.nvarchar(n|max)
.可变长度的双字节(Unicode)字符,最长可以容纳4000个
双字节字符。n值在1-4000之间(含)。max指示最大存储长
度为231-1个字节(约2G)。存储大小是所输入字符个数
的两倍加2个字节。所输入数据的长度可以为0个字符。
.ntext
.长度可变的Unicode数据,最大存储长度为230-1个双字节
字符。存储大小是所输入字符个数的两倍。
2.4T-SQL及T-SQL的数据类型
.注意:
.char、varchar数据类型若不指定长度,默认为1字节。
.与char不同的是:varchar数据类型的存储空间,随存储在
表列中的字符数的不同而变化,它的长度为输入字符串的
实际字符个数,而不一定是n。
.当存储的字符串长度不固定时,使用varchar数据类型可以
有效地节省空间。
.text:当存储的字符型数据非常大,以致于8000字节完全不
够用时。0-231-1(约2G)
.Unicode通过采用两个字节编码每个字符,主要用来支持
非英语语种的字符数据。
2.4T-SQL及T-SQL的数据类型
.6.逻辑数据类型
.逻辑数据类型bit占用1个字节的存储空间,其值
为0或1。如果输入0或1以外的值,将被视为1。
.bit类型不能定义为NULL。
2.4T-SQL及T-SQL的数据类型
.7.用户自定义数据类型
.用户定义数据类型是在基本数据类型的基础上根
据实际需要由用户自己定义的数据类型,并不是
创建一种新的数据类型,是在系统基本数据类型
的基础上增加一些限制约束。
2.4T-SQL及T-SQL的数据类型
1)启动ManagementStudio,在“对象资源管理器”面板
中的“数据库”中选择数据库,依次选择“可编程性
”→“类型”,鼠标右键单击“用户定义数据类型”,
在打开的菜单中选择“新建用户定义数据类型”:
2.4T-SQL及T-SQL的数据类型
2)打开“新建用户定义数据类型”后,在“常规”选项卡下的“
名称”输入用户定义数据类型名“telephone”,在“数据类
型”下拉列表中选择字符类型char,在“长度”文本框中输入
11,“允许NULL值”复选框选中,表示允许输入空值,选择绑
定的默认值对象和规则对象。完成以上设置后,就创建了名为
telephone的电话自定义数据类型,是9位的字符数据。
用户创建了自定义数据类型后,使用方法与基本数据类型使用
一样。
2.4T-SQL及T-SQL的数据类型
.通过系统存储过程创建方式:
.Sp_addtype自定义类型名,系统类型
.如:Sp_addtypephone,'varchar(11)‘
.删除用户自定义数据类型:
.sp_droptype自定义类型名
.如:sp_droptypephone
31
2.4T-SQL及T-SQL的数据类型
2.5常量
常量,是表示一个特定值的符号,常量的类型取决于它
所表示的值的数据类型。
需要注意的是,Unicode字符串常量与ASCII字符串常量
相似,但它前面有一个N标识符(N代表SQL-92标准中的国际
语言(nationallanguage)。N前缀必须大写,Unicode数
据中的每个字符用两个字节存储,而每个ASCII字符用一个
字节存储。
2.5常量
常量类型举例
ASCII字符串常量‘12345’‘中华人民共和国’
Unicode字符串常量N’12345’N’中华人民共和国’
整型常量123
数值型常量123.45
浮点数常量1.23E+4
货币常量$123.4
位常量0、1
日期和时间常量‘2010-10-110:08:05’
二进制字符串常量0x12EA
2.6变量
.2.6.1全局变量
全局变量是由SQLServer2008系统定义并使用的变量,
用户不能定义全局变量,只能使用全局变量。
用户可在程序中用全局变量来测试系统的设定值或
Transact-SQL命令执行后的状态值。引用全局变量时,全局
变量的名字前面要使用两个标记符@@。
全局变量含义
@@VERSION返回运行SQLServer数据库的服务器名称
@@LANGUAGE返回当前所用语言的名称
@@ROWCOUNT返回受前一条SQL语句影响的行数
@@ERROR返回执行的上一个SQL语句的错误号
2.6变量
print@@VERSION
print@@LANGUAGE
MicrosoftSQLServer2008(SP1)-10.0.2531.0(IntelX86)
Mar29200910:27:29
Copyright(c)1988-2008MicrosoftCorporation
EnterpriseEditiononWindowsNT5.2(Build3790:
ServicePack2)
简体中文
2.6.2局部变量
局部变量是用户自定义的变量,作用范围仅在程序内部,一
般用于临时存储各种类型的数据,以便在SQL语句之间传递。
在Transact-SQL语法中使用的局部变量必须以@开头。局部变
量一定是定义后才能使用,语法如下。
DECLARE{@变量名数据类型[(长度)]}[,...n]
其中,变量名必须遵循SQLServer2008数据库的标识符命名
规则;数据类型是SQLServer2008支持的除TEXT、NTEXT、IMAGE
外的各种数据类型,也可以是用户定义数据类型;系统固定长度
的数据类型不需要指定长度。
2.6变量
局部变量在定义之后的初始值是NULL,给变量赋值使用SET命令
或SELECT命令,语法如下。
SET@局部变量名=表达式
SELECT{@局部变量名=表达式}[,…n]
其中,SET命令只能一次给一个变量赋值,而SELECT命令一次可
以给多个变量赋值;两种格式可以通用,建议首选SET;表达式
中可以包括SELECT语句子查询,但只能是集合函数返回的单值,
且必须用圆括号括起来。
2.6变量
使用PRINT、SELECT输出局部变量的值,语法格式是:
PRINT表达式
SELECT表达式1,表达式2,…
其中,使用PRINT只能有一个表达式,其值在查询后的“消息”
窗口中显示;使用SELECT相当于进行无数据源检索,可以有多
个表达式,其结果在查询后的“网格”子窗口中显示;在一个
脚本中,最好不要混合使用两种输出方式,因为这样的话需要
切换两个窗口来查看输出结果。
2.6变量
2.6变量
DECLARE@xint,@ddatetime
SET@x=5
SELECT@d=getdate()
SELECT@x,@d
本章小结
.SQLServer简介
.SQLServer2008的安装
.SQLServer2008使用
.T-SQL及T-SQL的数据类型
.T-SQL的常量与变量