表和索引

 

表是用来存储数据和操作数据的逻辑结构,关系数据库中的数据都表现为表的形式。表的结构包括列(column)和行(row)。

索引是有效组织表数据的方式,它由表中一列或多列按照一定得排列顺序组成。也是一种数据对象。

 

 

1 掌握创建、删除表的方法

 

T_sql
   Create table
   [ database_name.[owner].| [owner.]table_name
   (
       { <column_definition>
               |column_name as computed_column_expression
                     |<table_constraint>
              } [,…n]
   )

 

[on {file_group|default}]    ------定义表存储在指定的文件组中
[textimage_on {filegroup | default}]   ----如果表中有ntext、text、image类型的数据,则将这----些数据存储在这里指定的文件组中
 
<column_definition>::={column_name data_type}
[     [default constant_expression]
|   [identity [ (seed,increment)]
]
[<column_constraint>][…n]

 

 

删除表

如:

Drop table  example-1 

Drop table  pubs.dbo.example-2

   Dbo 是database owner 的缩写,是数据库对象所有者,sql server中的对象的标准写法是:

          Databasename.databaseownername.objectname

   Dbo 是一个架构(schema)与sql2000不同,在2005中表的调用格式:

          “数据库.架构名.表名”

   表删除后数据也将删除,不能使用drop table语句删除系统表

2 掌握查看、修改表的定义、属性的方法

 

查看表

 

Sp_help table_name
Sp_spaceused  table_name
Sp_depends   table_name
Sp_rename  old_table_name,new_table_name

 

 

修改表

 

Alter  table  table_name
{
[alter column column_name
     {new_data_type [null |not null]}
|add
     {      <column_definition>
               |column_name as computed_column_expression
                     |<table_constraint>
              } [,…n]
 
|  drop
     {constrait constraint_name
       | column column_name
     }[,….n]
| {check| nocheck} constraint {all |constraint_name[,…n]}
 
| {enable|disable}trigger  {all | trigger_name [,…n]}
 
 
}
 
<column_definition>::={column_name data_type}
 [<column_constraint>][…n]

 

3 理解索引的特点

索引是sql server在列上建立的一种数据库对象。其对表中数据提供逻辑排序,可以提高数据的访问速度。

   Sql server提供了两种形式的索引,簇集(clustered)索引和非簇集(nonclustered)索引.

簇集索引根据键的值对行进行排序,所以每个表只能有一个簇集索引。非簇集索引不根据键值排序,索引数据结构与数据行是分开的。由于非簇集索引的表没有按顺序进行排列,所以查找速度明显低于带簇集索引的表。

建立索引会占用磁盘空间。

   下列情况适合建立索引

(1)       经常被查询的列,如经常在where子句中出现的列

(2)       在order by 子句中使用的列

(3)       是外键或主键的列

(4)       该列的值唯一的列

下列情况不适合建立索引

(1)       在查询中很少的列

(2)       包含太多重复选用值的列。如:性别列

(3)       数据类型为bit、text、image等的列不能建立索引

用户可以在多个列上建立索引,这种索引叫做复合索引

 


4 掌握创建和删除索引的方法

DROP INDEX不能用来删除建表时自动创建的索引,而主键会自动创建聚集索引;
主键是一种约束,可以通过ALTER TABLE tablename Drop CONSTRAINT 删除,主键去除了,依附于主键的索引也自动消除。

 

T_sql

Create [unique] [ clustered |nonclustered] 
Index index_name on table (column [,…n])
Drop   index   ‘table.index’ [,….n] 
Use pubs
Go
Create table emp_pay
(employeeid int not null,
Base_pay  money  not null,
Commission decimal (2,2) not null
)
Go

 

Create unique clustered index employeeid_ind
On emp_pay (employeeid)
Go

User pubs
Go
 
Drop index emp_pay.employeeid_ind
Go