第五章 创建和修改数据表
5.2CREATE语句
CREATE DATABASE <database name>
[ON [PRIMARY]
([NAME=<'logical file name'>,]
FILENAME=<'file name'>
[,SIZE=<size in kilobytes,megabytes,gigabytes,or terabytes>]
[,MAXSIZE=<size in kilobytes,megabytes,gigabytes,or terabytes>]
[,FILEGROWTH=<kilobytes,megabytes,gigabytes,or terabytes|percentage>]
[LOG ON
([NAME=<'logical file name'>,]
FILENAME=<'file name'>
[,SIZE=<size in kilobytes,megabytes,gigabytes,or terabytes>]
[,MAXSIZE=<size in kilobytes,megabytes,gigabytes,or terabytes>]
[,FILEGROWTH=<kilobytes,megabytes,gigabytes,or terabytes|percentage>]
[COLLATE <collation name>]
[FOR ATTCH [WITH <service broker>]|FOR ATTACH_REBUILD_LOG|WITH_DB_CHAINING
ON|OFF|TRUSTWORTHY ON|OFF]
[AS SNAPSHOT OF <source database name>]
[;]
1.ON
ON用于两个地方:一是定义存储数据文件的位置,二是定义存储日志文件的位置。
2.NAME
这个选项用于指定定义的文件的名称,但只是一个逻辑名称-即SQL Server在内部使用该名称引用该文件。当需要修改(扩充或缩小)数据库和/或文件的大小时,需要使用这个名称.
3.FILENAME
这个选项-实际操作系统文件在磁盘上的物理名称,在改文件中将存储数据或日志。这里的默认值取决于是处理数据库本身还是日志。在默认情况下,文件位于\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA目录下。
4.SIZE
数据库的大小。默认情况下,大小的单位是MB,也可以在数字后面使用KB,或者指定更大的单位GB。切记,这个值最少要与模型数据库一样大。
5.MAXSIZE
SQL Server有一个机制允许数据库在必要的时候自动分配附加的磁盘空间.MAXSIZE是数据库可以增加的最大大小。如果没有提供这个参数值,那么认为没有最大值-实际的大小可以大到磁盘空间用完为止。
如果数据库的大小达到了MAXSIZE参数指定的值,那么将开始出错,例如插入操作将不能执行。
6.FILEGROWTH
SIZE设定了数据库的初始大小,MAXSIZE决定数据库文件大小的最大值,FILEGROWTH主要用于确定数据库达到这个最大值的速度。提供一个值来说明文件每次增加多少字节(以KB/MB/GB或TB为单位)。或者,也可以选择指定数据库文件每次增长的百分比。如果选择百分比,那么数据库文件大小将按照当前数据文件的大小以指定的百分比增长。因此,如果指定一个初始大小为1GB的数据库文件以20%的速度增长,那么第一次扩展为1.2GB,第二次为1.44GB。
7.LOG ON
LOG ON选项允许指定哪些文件需要日志,以及这些文件位于什么位置。如果没有指定改选项,那么SQL Server将在一个单独文件中创建日志,日志文件默认的大小是数据文件大小的25%.在大多数其他方面,日志文件与主数据库文件具有同样的文件规范参数。
8.COLLATE
该选项处理排序、字母大小写以及是否对重音敏感问题。在安装SQL Server时,提供了默认的排列规则,但是可以再数据库层重写该默认值。
构建数据库
CREATE DATABASE Accounting
ON
(NAME='Accounting',
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Accounting.mdf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOG ON
(NAME='AccountingLog',
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Accounting.ldf',
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
5.2.2 CREATE TABLE
3.DEFAULT
默认值是在插入任何记录时用户没有为某列提供值时采用的值。如果要使用默认值,就必须紧跟在数据类型之后给定这个值。
4.IDENTITY
a.在设定一个列为标识列时,SQL Server自动分配一个顺序号给插入的每个行。SQL Server开始计数的数字称为种子值,而这个值随着每行增加或减少的数量值称为增量。默认情况下种子为1,增量为1.
b.标识列必须是数值类型。
c.用法很简单,只要在列的数据类型之后紧跟上IDENTITY关键字。
9.列约束
列约束就是对单个列设置的关于该列可插入数据的限制和规则。
11.表约束
表约束和列约束很相似,都是对可以插入表中的数据进行限制。它们之间有一点不同的是:表约束可以基于多个列。
5.3 ALTER语句
5.3.1 ALTER DATABASE
假设需要作些小的改动。例如,假设向数据库导入大量数据。目前,数据库大小只有15MB。因为打开了Autofrow选项,直接就可以导入,SQL Server会自动以每次5MB的增长速度扩大数据库,那么服务器至少要重新分配16次(在20MB,25MB,30MB...).如果知道将增加到100MB的数据,为什么不一次增加呢?要这么做的话,需要使用ALTER DATABASE命令。
ALTER DATABASE Accounting
MODIFY FILE
(NAME =Accounting
SIZE=100MB)
5.3.2 ALTER TABLE
如果希望给原有的表中增加一列或者多列,可以这样子:
ALTER TABLE Employees
ADD
DateOfBirth datetime NULL,
LastRaiseDate datetime NOT NULL
DEFAULT '2008-01-01'
5.4 DROP语句
例句:DROP TABLE Accounting;
再删除表的同时,可能会碰到这样的情况:返回一个ERROR:指出因为数据库正被使用,所以不能删除。如果是这样的话,要检查两个问题。
1.确保在Management Studio中的当前数据库不是要删除的数据库。
2.确保没有打开其他显示要删除的数据库为当前数据库的连接。