/*数据类型*/
在创建
时,必须指定数据类型,microsoft sql server 2000系统提供了两种数据类型,一种是系统提供的数据类型,另一种是自定义数据类型。用户自定义数据类型在以后介绍,现在我们主要介绍系统为我们提供的数据类型。
1.整数型
整数行共包括四种类型,他们的小数部分全都是0。
1).bigint:大整型,精度为19,长度为8字节。
2).int:整型,精度为10,长度为4字节。
3).smallint:短整型,精度为5,长度为2字节。
4).tinyint:微短整型,精度为3,长度为1字节。
2.精确数值型
精确数值型由整数部分和小数部分组成,其所有的数字都是有效位,精确数值型包括decimal和numeric两类,从功能上说,两者完全等价,两者的唯一区别在于decimal不能用于带有identity关键字的列。
声明精确数值型的格式是decimal(p[,s]),numeric(p[,s]),其中p为精度,s为小数位数,s的默认值为0,decimal和
numeric的存储长度随精度的变化而变化,最少为5字节,最多为17字节:
(1).精度为1~9时,存储长度为5字节;
(2).精度为10~19时,存储长度为9字节;
(3).精度为20~28时,存储长度为13字节;
(4).精度为29~38时,存储长度为17字节。
例如:若有声明numeric(8,3),则存储该类型数据需5字节,而若有声明numeric(22,5)则存储该类型数据需13字节。
3.浮点型
浮点型也称近似数值。有两种近似数值数据类型:float[(n)]和real,两者通常都使用科学计数法表示数据,其表示为:尾数E阶数,如6.4325E5,-9.3456E30,2.789E-7等。
real类型数据占用4字节存储数据,数据精度为7位有效数字。float定义中的n值取值范围为1~53,用于指示其精度和存储大小,当n在1~24之间时,实际上是定义了一个real 型数据,存储长度为4字节,精度为7位有效数字,当n在25~53时,存储长度为8字节,精度为15位有效数字,当默认n时,代表n在25~53之间。
4.货币型
sql server 提供了两种专门用于处理货币的数据类型:menory和smallmemory.
memory数据类型精度为19位,小数位数为4,长度为8字节,可以看出,memory类型的数的范围与bigint数
的范围在精度和存储长度上相同,smallmemory的精度为10,长度为4字节,它与int 型数据类型在精度和存储长度上相同。当向表中插入memory和smallmemory类型的值时,必须在前面加上$符号,若货币值为负值,需要在$的后面加上负号(-),例如: $15000.32,$-56.6789等。
5.位型
在其他语言中称为逻辑型数据,它只存储0或1,长度为1个字节,当为bit类型数据赋0时,其值为0,而赋非0 时,其值为1。当表中某列为bit类型时,其值不能为空,且不能对其建立索引。
6.字符型
字符型数据用于存储字符串,字符串中可包括字母、数字和其他一些特殊符号(如:# 、&等),在输入字符时,需将串中的符号用单引号或双引号括起。
(1).char[(n)] 定长字符数据类型,其中n定义字符型数据的长度,n在1~8000之间,默认为1,当表中的列定义为char(n)类型时,若实际要存储的串长度不足n时,则在串的尾部添空格,以达到长度n,例如:某列的数据类型为char(20),而输入的字符串为'abcef2003',则存储的是字符abcef2003和11个空格,若输入的字符个数超过n时,则超出的部分被截断。
(2).varchar[(n)] 变长字符数据类型,其中n的规定与定长字符型char的完全相同,但这里n表示的是字符串可达到的最大长度,varchar(n)的长度为输入的字符串的实际长度,而不一定是n,例如:表中某列的数据类型为varchar(100),而输入的字符串为'abcef2003',则存储的就是字符串abcef2003,其长度为9字节。
7.Unicode字符型
Unicode是‘统一字符编码标准’,用于支持国际上非英语语种的字符数据的存储和处理,
(1).nchar[(n)] 固定长度Unicode数据的数据类型,n的取值在1~4000之间,默认值为1,长度为2n字节,若输入的字符串长度不足n,将以空白字符补足。
(2).nvarchar[(n)] 可变长度Unicode数据的数据类型,n的值在1~4000之间,默认值为1,长度为所输入字符个数的两倍。
8.文本型
当需要存储大量的字符数据,如较长的备注、日志信息等,字符数据的最长8000个字符的限制可能是它们不能满足要求,此时可使用文本型数据。
文本型数据包括text和ntext两种,分别对应ASCII和Unicode字符,text数据的存储长度为实际字符数个数,ntext数据的存储长度为实际字符个数的两倍。
9.二进制
二进制数据类型表示的是位数据流,包括binary(固定长度)和varbinary(可变长度)两种。
(1).binary[(n)] n的去职范围为1~8000,默认值为1,存储长度为n+4字节,若输入的数据长度小于n时,则不足部分用0补充,若输入的数据大于n,则多于部分被截断。输入二进制时,在数据前面要加上0x,可以用的数字符号为0~9,A~F,因此,二进制有时也被称为十六进制数,例如:0xFF、0X12A0等。因为每字节的数最大为FF,所以在'0x'格式的数据每两位占一个字节。
(2).varchar[(n)] n的取值范围为1~8000,默认值为1,数据的存储长度为实际输入数据
长度加上4字节。
10.日期时间型
日期时间用于存储日期和时间信息,包括datetime和smalldatetime两类。
(1).datetime datetime类型表示的日期范围从1753年1月1日到9999年12月31日的日期和时间,数据长度为8字节,日期和时间分别使用4字节,前4字节用于存储datetime 类型数据中距1900年1月1日的天数,为正数表示日期在1900年1月1日之后,为负数表示日期在1900年1月1日之前,后4字节用于存储datetime类型数据中距12:00的毫秒数。datetime数据类型日期部分和时间部分分别给出,常用的表示格式如下:
年月日2001 Jan 20、2001 Janary 20
年日月2002 20 Jan
月年日Jan 2003 20 等等
(2).smalldatetime 表示从1900年1月1日到2079年6月6日的日期和时间,存储长度为4字节,前两个字节存储smalldatetime类型数据中日期部分距1900年1月1日之后的天数,后两个字节存储smalldatetime类型数据中时间部分距中午12点的分钟数。输入格式与datetime相同。
11.时间戳型
标识符是timestamp,若创建表时定义一个列的数据类型为时间戳型,那么每当对该列加入新行或修改已有行时,都有系统自动将一个计数器值加到该列,即将原来的时间戳加上一个增量,一个表只能有一个时间戳列,长度为8字节。
12.图像数据类型
标识符是image,它用于存储图片、照片等,实际存储的是可变长度的二进制数据。
13.其它类型
在其他数据类型中还有几种数据类型:cursor、sql_variant、table、uniqueidentifier等类型。
-------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE DATABASE
创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库。
语法
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
参数
database_name
新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含
128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则Microsoft? SQL Server?
会通过向database_name 追加后缀来生成逻辑名。该操作要求database_name 在123 个字符之内,以便生
成的日志文件逻辑名少于128 个字符。
ON
指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的
项列表, 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的
项列表(可选), 项用以定义用户文件组及其文件。
n
占位符,表示可以为新数据库指定多个文件。
LOG ON
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 项列表,
项用以定义日志文件。如果没有指定LOG ON,将自动创建一个日志文件,该文件使用系统生成
的名称,大小为数据库中所有数据文件总大小的25%。
FOR LOAD
支持该子句是为了与早期版本的Microsoft SQL Server 兼容。数据库在打开dbo use only 数据库选项
的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为RESTORE 语句
可以作为还原操作的一部分重新创建数据库。
FOR ATTACH
指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 条目。至于其它
条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须
为这些文件指定 条目。附加的数据库必须使用与SQL Server 相同的代码页和排序次序创建。
应使用sp_attach_db 系统存储过程,而不要直接使用CREATE DATABASE FOR ATTACH。只有必须指定16
个以上的 项目时,才需要使用CREATE DATABASE FOR A TTACH。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应
该运行sp_removedbreplication 从数据库删除复制。
collation_name
指定数据库的默认排序规则。排序规则名称既可以是Windows 排序规则名称,也可以是SQL 排序规则名称。
如果没有指定排序规则,则将SQL Server 实例的默认排序规则指派为数据库的排序规则。有关Windows 和SQL 排序规则名称的更多信息,请参见COLLATE。
PRIMARY
指定关联的 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户
文件组的对象。主文件组的第一个 条目成为主文件,该文件包含数据库的逻辑起点及其系
统表。一个数据库只能有一个主文件。如果没有指定PRIMARY,那么CREATE DA TABASE 语句中列出的第
一个文件将成为主文件。