维护表
2016-12-06 15:13
176 查看
2016.12.6
十八.维护表
18.1 表的列
表可以设计成包含任意数目的列,每个列有针对该列的具体属性。列的第一个并且是最明显的属性就是列的名称,表中的每一个列必须要有一个唯一的名称。
列的第二个属性是数据类型。
列的第三个属性是,是否可以把它定义为自增型的列。
列的第四个属性是是否允许包含NULL值。
最后一个属性值是是否给列赋予默认值。
18.2 主键和索引
索引是一种物理结构,可以为数据库表中任意的列添加索引,索引可以加速数据的检索。索引中真实数据是隐藏的,但是索引中包含了一种维护列的排序信息的结构。
索引的缺点在于索引需要更多的存储空间以及降低相关的列的数据更新速度,这是因为任何时候插入或者修改一行记录,索引都需要重新计算该列的值的正确排列顺序。
可以对任意列进行索引,但是只能指定一个列为主键。
主键实际上可以是由多个列组成,这样的主键叫复合主键。主键必须包含唯一值,不能包含NULL值。主键可以成为索引,使得相关的数据行的检索速度更快。
18.3 外键
外键是从一个表中的一个列到另外一个不同表中的一个列的直接引用,当设置一个外键时,会要求指定两个列。配置了外键的表通常称为位于子表中。而另一个表中被引用的列则称为是在父表中。
设置外键时,可以为父表中涉及更新和删除的行设置一些具体行为,常见如下:
(1)NO Action,任何时候要更新父表相关列时,都要检查,防止子表中任意行指向不存在的值。
(2)Cascade,在更新父表中的值时如果影响到了子表的行,那么会自动的更新子表中的行,以反映出父表中的新值。
(3)Set Null,当更新或者删除父表中的值时,会自动把子表中所有受影响的行的外键更新为NULL值。
18.4 创建表
SQLServer:
CREATE TABLE tablename
(column1 INT IDENTITY(1,1)
PRIMARY KEY NOT NULL,
column2 INT NOT NULL REFERENCES
relatedtable (column),
column3 VARCHAR(25) NULL,
Column4 FLOAT NULL DEFAULT(10))
MYSQL:
CREATE TABLE tablename
(column1 INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
column2 INT NOT NULL ,
column3 VARCHAR (25) NULL,
Column4 FLOAT NULL DEFAULT 10,
CONSTRAINT FOREIGN KEY(column2)
REFERENCES ’ relatedtable’ (column));
ORACLE:不允许有自增类型的列
CREATE TABLE tablename
(column1 INT PRIMARY KEY NOT NULL,
column2 INT NOT NULL ,
column3 VARCHAR (25) NULL,
Column4 FLOAT DEFAULT 10 NULL,
CONSTRAINT “ForeignKey” FOREIGN KEY(column2)
REFERENCES relatedtable (column));
修改表:ALTER TABLE tablename
删除表:DROP TABLE tablename
18.5 创建索引
CREATE INDEX indexname
ON tablename (column)
删除索引:
DROP INDEX indexname
ON tablename
十八.维护表
18.1 表的列
表可以设计成包含任意数目的列,每个列有针对该列的具体属性。列的第一个并且是最明显的属性就是列的名称,表中的每一个列必须要有一个唯一的名称。
列的第二个属性是数据类型。
列的第三个属性是,是否可以把它定义为自增型的列。
列的第四个属性是是否允许包含NULL值。
最后一个属性值是是否给列赋予默认值。
18.2 主键和索引
索引是一种物理结构,可以为数据库表中任意的列添加索引,索引可以加速数据的检索。索引中真实数据是隐藏的,但是索引中包含了一种维护列的排序信息的结构。
索引的缺点在于索引需要更多的存储空间以及降低相关的列的数据更新速度,这是因为任何时候插入或者修改一行记录,索引都需要重新计算该列的值的正确排列顺序。
可以对任意列进行索引,但是只能指定一个列为主键。
主键实际上可以是由多个列组成,这样的主键叫复合主键。主键必须包含唯一值,不能包含NULL值。主键可以成为索引,使得相关的数据行的检索速度更快。
18.3 外键
外键是从一个表中的一个列到另外一个不同表中的一个列的直接引用,当设置一个外键时,会要求指定两个列。配置了外键的表通常称为位于子表中。而另一个表中被引用的列则称为是在父表中。
设置外键时,可以为父表中涉及更新和删除的行设置一些具体行为,常见如下:
(1)NO Action,任何时候要更新父表相关列时,都要检查,防止子表中任意行指向不存在的值。
(2)Cascade,在更新父表中的值时如果影响到了子表的行,那么会自动的更新子表中的行,以反映出父表中的新值。
(3)Set Null,当更新或者删除父表中的值时,会自动把子表中所有受影响的行的外键更新为NULL值。
18.4 创建表
SQLServer:
CREATE TABLE tablename
(column1 INT IDENTITY(1,1)
PRIMARY KEY NOT NULL,
column2 INT NOT NULL REFERENCES
relatedtable (column),
column3 VARCHAR(25) NULL,
Column4 FLOAT NULL DEFAULT(10))
MYSQL:
CREATE TABLE tablename
(column1 INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
column2 INT NOT NULL ,
column3 VARCHAR (25) NULL,
Column4 FLOAT NULL DEFAULT 10,
CONSTRAINT FOREIGN KEY(column2)
REFERENCES ’ relatedtable’ (column));
ORACLE:不允许有自增类型的列
CREATE TABLE tablename
(column1 INT PRIMARY KEY NOT NULL,
column2 INT NOT NULL ,
column3 VARCHAR (25) NULL,
Column4 FLOAT DEFAULT 10 NULL,
CONSTRAINT “ForeignKey” FOREIGN KEY(column2)
REFERENCES relatedtable (column));
修改表:ALTER TABLE tablename
删除表:DROP TABLE tablename
18.5 创建索引
CREATE INDEX indexname
ON tablename (column)
删除索引:
DROP INDEX indexname
ON tablename