alter table 总结

增加列:

alter tabel table_name  add column_name datatype;

删除列:

alter tabel table_name  drop column column_name;

要改变表中列的数据类型,不同的系统命令不同:

To change the data type of a column in a table, use the following syntax:

SQL Server / MS Access:

ALTER TABLE table_name
ALTER COLUMN column_name datatype

My SQL / Oracle:

ALTER TABLE table_name  MODIFY column_name datatype

增加约束.

alter table table_name  add constraint 约束名称 增加的约束类型 (列名)

 

NOT NULL 约束

 不能像这样:alter table emp add constraint not_null_name not null(name)

NOT NULL constraint can't be added at table level 

not null不像其他的约束,不能在表级定义。这个很多人都不知道,值得注意。如果硬要加,用modify,数据类型还是原来的类型,最后加上not null。

to add the constraint u need to modify the column

   alter table emp modify ename char(10)  not null;

unique约束:

ALTER TABLE Persons  ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

主键约束:

ALTER TABLE Persons   ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)

外键约束:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders  FOREIGN KEY (Id_P)  REFERENCES Persons(Id_P)

SQL CHECK 约束

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

ALTER TABLE Persons  ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')


取消约束:

alter table table_name drop constraint constraint_name;

DEFAULT 约束

DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新纪录。

参见:http://www.w3cschool.cn/sql_default.html  有点不同

主键 = 非空 + 唯一

 非空

唯一 = 有值的话 值要不同

外键 = 有值 一定要在被引用的表的数据中

原文地址:https://www.cnblogs.com/youxin/p/2772467.html