自学W3School
http://www.w3school.com.cn/sql/index.asp
索引和约束
索引是什么?
相当于隐形的目录,以此计算机能更加快速高效地查询数据。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
如何创建索引?
CREATE {UNIQUE} INDEX Index_Name ON Table_Name(Column_Name) {DESC}
注释:在表上创建一个唯一的索引(添加UINIQUE关键字)。唯一的索引意味着两个行不能拥有相同的索引值。
注释:以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC
注释:若希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开
CREATE INDEX Index_Name ON Table_Name(Column1_Name,Column2_Name,...)
约束是什么?
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
我们将主要探讨以下几种约束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
NOT NULL
NOT NULL 约束强制列不接受 NULL 值。示例如下:
CREATE TABLE Table_Eg{
Id INT NOT NULL,
Eg CHAR(20)
}
ALTER TABLE Table_Eg
ADD COLUMN Name NVARCHAR(200) NOT NULL
CHECK
CHECK 约束用于限制列中的值的范围。可对单一列设CHECK,示例如下:
CREATE TABLE Table_Eg{
Id INT NOT NULL CHECK(Id>0),
Eg CHAR(20)
}
ALTER TABLE Table_Eg
ADD CHECK(Id>0)
也可对整张表的多个列CHECK:
CREATE TABLE Table_Eg{
Id INT,
Price INT,
COSNTRAINT chk_Table_Eg CHECK(Id>0 AND Price>=0)
}
DEFAULT
DEFAULT 约束用于向列中插入默认值。 如果没有规定其他的值,那么会将默认值添加到所有的新记录。示例如下:
CREATE TABLE Table_Eg{
Id INT,
Price INT DEFAULT 0
}
ALTER Table_Eg
ADD DEFAULT 0 FOR Price
UNIQUE
UNIQUE 为列或列集合提供了唯一性的保证,每张表可以有多个 UNIQUE。示例如下:
CREATE TABLE Table_Eg{
Id INT UNIQUE,
Price INT DEFAULT 0
}
多个UNIQUE:
CREATE TABLE Table_Eg{
Id INT,
Eg CHAR(20),
COSNTRAINT uc_Table_Eg UNIQUE(Id,Eg)
}
下篇重点讲主键和外键Primary Key & Foreign Key