SQL Server的基本数据定义
创建基本表——create table
- 语句的基本格式
create table <表名>(<列定义清单>)
- 说明:
(1) 表名不能有重复(更严格的说是两个关系之间不能有同名,包括视图)
(2) 列定义清单内定义所有属性列的结构情况,内容包括: <列名><数据结构>[<默认值>|<标识列设置>][<完整性约束>] (方括号中为选填项)
(3) <列名>规定该列属性名称,不能有两个同名列。
(4)<数据类型>,规定了该列的数据类型。各具体DBMS所提供的数据类型是不同的
(5)<默认值>:DEFAULT常量表达式,表示该列上某值未被赋值时的默认值。
(6)<标识列设置>:IDENTTTY(初始值、步长值),当向表中添加新行时, Microsoft SQ(Server将为该标识列提供一个唯一的、递增的值。
(7)<该列的完整性约束>:该列上数据必须符合的条件。最常见的有:
NOTNULL 该列值不能为空 NULL 该列值可以为空
UNIQUE该列值不能有相同者SQL只要求语句的语法正确就可以,对字母大小写等格式不作规定;
一条语句可以放在多行上,字和符号间有一个或多个空格分隔;一般每个列定义单独占一行(或数行), 每个列定义中相似的部分对齐(这不是必须的),从而增加了可读性,让人一目了然。
表结构的修改——ALTERTABLE
基本表的结构是会随系统需求的变化而修改的, 因此可能需要增加、修改或删除其中一列 (或完整性约束条件,增加或删除表级完整性约束等)
- 语句基本格式
ALTERTABLE语句的基本格式如下:ALTERTABLE<表名>
[ADD<列名><数据类型>[列的完整性约束]]|[ADD<表级完整性约束>]
[ALTERCOLUMN<列名><新的数据类型>]
[DROPCOLUMN<列名>]
[DROPCONSTRAINT<表级完整性约束名>];
- 说明
(1)ADD:为表增加一新列或者表级完整性约束, 具体规定与CREATETABLE的相当,但新列必须允许为空(除非有默认值);
(2)DROPCOLUMN:在表中删除一个原有的列;
(3)ALTERCOLUMN:修改表中原有列的数据类型, 通常,当该列上有约束定义时,不能修改数据类型;
(4)DROPCONSTRAINT:删除原有的表级完整性约束。
删除基本表——DROPTABLE
- 语句基本格式
DROPTABLE语句的基本格式如下:DROPTABLE<表名1>[,<表名2>];
- 说明
此语句一执行,指定的表即从数据库中删除(表被删除,表在数据字典中的定义也被删除) ,此表上建立的索引和视图也被自动删除 (有些系统对建立在此表上的视图的定义并不删除,但也无法使用了)。 DROPTABLE语句一次可以删除多个表,多表间用逗号分开。
创建索引——CREATEINDEX
在一个基本表上,可建立若干索引,以提供多种存取路径, 加快查询速度。索引的建立和删除工作由DBA或表的拥有者(dbowner)负责。 用户在查询时并不能选择索引,选择索引的工作由DBMS自动进行。
- 语句基本格式
CREATEINDEX语句的基本格式如下:CREATE[UNIQUEJ[CLUSTEREDINONCLUSTERED] INDEX<索引名>ON<表名I视图名>(<列名清单>);
上述语句为规定<表名>建立一索引,索引名为<索引名>。
- 说明
(1)<列名清单>中,每个列名后都要指定ASC(升序)或DESC(降序)。 若不指定,默认为升序。
(2)本语句建立索引的排列方式为首先以<列名清单>中第一个列的值排序; 该列值相同的记录,按下一列名的值排序;以此类推。
(3)UNIQUE:规定索引的每一个索引值只对应于表或视图中唯一的记录, 可允许存在NULL值,但不允许存在有多个NULL值。
(4)CLUSTERED:规定此索引为“聚族索引”,一个表或者视图只允许有一个聚族索引。 建立聚簇索引后,表在磁盘中的物理存储顺序将与聚簇索引中的一致。 (在最常查询的列上建立聚簇索引可以加快查询速度; 在经常更新的列上建立聚簇索引,则DBMS维护索引的代价太大)
(5)NONCLUSTERED:规定此索引为非聚簇索引,是SQL的默认选项。 一个表可有多个非聚簇索引。对于非聚簇索引, 数据的物理存储顺序独立于索引存储顺序。 每个索引行均包含非聚簇键值和一个或多个行定位器(指向包含该值的行)。 每个索引均可以提供对数据的不同排序次序的访问。
删除索引——DROPINDEX
建立索引是为了加快查询速度,但若对表中数据的增删改频繁, 则系统将会花费更多的时间来维护索引,即索引的维护开销将有所增大, 从而降低了系统的运行效率。因此,不必要的索引应及时删除。
- 语句基本格式
DROPINDEX语句的基本格式如下:DROPINDEX<索引名1>[,<索引名2>];
- 说明
(1)删除规定的索引,该索引在数据字典中的描述也将被删除。
(2)<索引名>:规定使用“表名l视图名.索引名”的格式。其中,表名l视图名表示索引列所在的表或索引视图。