alter table添加表约束
翻阅了一下网上关于alter table添加表约束的资料,学习下,然后供自己以后使用。

仅仅供自己使用。。。

总结alter table ### add constraint ## 使用方法

添加表约束

首先看下alter table的定义(百度百科):

Alter table,网络程序及编程中所用的术语。通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。

数据库SQL语言的修改语句,可以用来修改基本表,其一般表示格式为:

ALTER TABLE<表名>[改变方式]

改变方式:

· 加一个栏位: ADD “栏位 1” “栏位 1 资料种类”

· 删去一个栏位: DROP “栏位 1”

· 改变栏位名称: CHANGE “原本栏位名” “新栏位名” “新栏位名资料种类”

· 改变栏位的资料种类: MODIFY “栏位 1” “新资料种类”

由上可以看出,修改基本表提供如下四种修改方式:

(1)ADD方式:用于增加新列和完整性约束,列的定义方式同CREARE TABLE语句中的列定义方式相同,其语法格式:

ALTER TABLE <表名> ADD <列定义>|<完整性约束>。由于使用此方式中增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束。

(2)DROP方式:用于删除指定的完整性约束条件,或删指定的列,其语法格式为:

ALTER TABLE<表名> DROP [<完整性约束名>]

ALTER TABLE<表名> DROP COLUMN <列名>

注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN <列名>)。

(3)CHANGE方式,用于修改某些列,其语法格式:

ALTER TABLE [表名] CHANGE <原列名> TO <新列名><新列的数据类型>

(4)MODIFY方式,用于修改某些列的数据类型,其语法格式:

ALTER TABLE [表名] MODIFY [列名] [数据类型]

先创建的库个表 如下 : 下面示例用到表结构

create database Text_DB

go

use Text_DB

go

create table Teacher

(

TeaId int not null ,

TeaName varchar(20) not null,

TeaAge int ,

TeaAddress varchar(50)

)–为了更直观的看到效果 这里就先不添加约束

一.Alter 主要作用针对是给已经创建的表进行添加和修改删除约束 的操作

1.给已经创建的表添加约束

分为两种方式,一种是在创建约束 并同时给所创约束定义一个名字 这样可以再次进行操作,比如删除时候要用到

另一种方式是直接创建约束 不命名的,但是再次操作时候是不方便的

第一种:

Alter table 表名 add constraint 约束 字 约束类型(列名)

例:

-----添加约束(命名)-----------

alter table Teacher add constraint PK_1 primary key (TeaId)–主键约束

alter table Teacher add constraint UN_1 unique(TeaName)–唯一约束

alter table Teacher add constraint CK_1 check (TeaAge>0)–范围约束

alter table Teacher add constraint DE_1 default ‘123’ for TeaAddress --默认约束

–外键约束,这里就不一一举例了,语法如下

alter table 表名 add constraint 约束名 foreign key(关联字段) references 主表(关联字段)

第二种:

Alter table 表名 add 约束(列名)

例: 分别给 Teacher表中添加 主键 唯一 和范围约束

alter table Teacher add primary key (TeaId)–主键

alter table Teacher add unique(TeaName)–唯一

alter table Teacher add check (TeaAge>0)–范围约束

alter table Teacher add default ‘123’ for TeaAddress --默认约束

alter table 表名 add foreign key(列名) references 主表(列名)–外键

2.删除约束: 语法

alter table 表名 drop constraint 约束名–删除约束

例:(删除Teacher表中的约束)

alter table Teacher drop constraint PK_1 --删除主键约束

alter table Teacher drop constraint UN_1 --删除唯一约束

alter table Teacher drop constraint CK_1 --删除范围约束

alter table Teacher drop constraint DE_1 --删除默认约束

二. Alter table 用法 针对表结构进行修改,比如添加列删除列等等…

1.添加列 语法

Alter table 表名 ADD 列名 数据类型

例: (给Teacher 表中添加一列 notes 数据类型为varchar(200))

alter table Teacher add notes varchar(200)

2.删除表中的列 语法

Alter table 表名 drop column 列名

例:(删除表中的notes列)

alter table Teacher drop column notes

3.修改某一列中的数据类型语法

Alter table 表名 alter column 列名 数据类型

例:(将Teacher 表中的notes列更改为int类型)

alter table Teacher alter column notes int

ALTER TABLE ADD增加多个字段外键约束

/* 创建表 及设置 主键 */

CREATE TABLE TABLE_USER

(USER_ID INT IDENTITY(1,1) NOT NULL,

USER_NAME NVARCHAR(40) NOT NULL,

LAST_UPDATED_BY NVARCHAR(15),

LAST_UPDATED_DATE DATETIME,

CONSTRAINT USER_PK PRIMARY KEY (USER_ID)

);

/*ALTER TABLE 增加多个字段 */

ALTER TABLE TABLE_USER ADD

DEPARTMENT_ID INT NOT NULL,COMPANY_ID INT NOT NULL,TEMP_COL NVARCHAR(10);

/*ALTER TABLE 增加多个外键 */

ALTER TABLE TABLE_USER ADD

CONSTRAINT USER_DEPARTMENT_FK FOREIGN KEY(DEPARTMENT_ID) REFERENCES TABLE_DEPARTMENT(DEPARTMENT_ID) ,CONSTRAINT USER_COMPANY_FK FOREIGN KEY(COMPANY_ID) REFERENCES TABLE_COMPANY(COMPANY_ID) ;

/*ALTER TABLE 删除字段 */

ALTER TABLE TABLE_USER DROP COLUMN TEMP_COL;

–删除约束 --先查出约束名 EXEC sys.sp_helpconstraint @objname = N’bulkinserttest’ --表名 ALTER TABLE dbo.bulkinserttest DROP CONSTRAINT ck_bulkinsert

例子:

向表中增加一个 varchar 列:

ALTER TABLE distributors ADD address varchar(30);

从表中删除一个字段:

ALTER TABLE distributors DROP COLUMN address RESTRICT;

在一个操作中修改两个现有字段的类型:

ALTER TABLE distributors

ALTER COLUMN address TYPE varchar(80),

ALTER COLUMN name TYPE varchar(100);

使用一个 USING 子句, 把一个包含 UNIX 时间戳的 integer 字段转化成 timestamp with time zone:

ALTER TABLE foo

ALTER COLUMN foo_timestamp TYPE timestamp with time zone

USING

timestamp with time zone ‘epoch’ + foo_timestamp * interval ‘1 second’;

对现存字段改名:

ALTER TABLE distributors RENAME COLUMN address TO city;

更改现存表的名字:

ALTER TABLE distributors RENAME TO suppliers;

给一个字段增加一个非空约束:

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

从一个字段里删除一个非空约束:

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

给一个表增加一个检查约束:

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

删除一个表和它的所有子表的检查约束:

ALTER TABLE distributors DROP CONSTRAINT zipchk;

向表中增加一个外键约束:

ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;

给表增加一个(多字段)唯一约束:

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

给一个表增加一个自动命名的主键约束,要注意的是一个表只能有一个主键:

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

把表移动到另外一个表空间:

ALTER TABLE distributors SET TABLESPACE fasttablespace;

  1. 主键约束

要对一个列加主键约束的话,这列就必须要满足的条件就是非空。因为主键约束:就是对一个列进行了约束,约束为(非空、不重复)。

【格式】alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)

例子:要对一个列加主键,列名为id,表名为emp

alter table emp add constraint ppp primary key (id)

  1. check约束

就是给一列的数据进行了限制

【格式】alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)

例子:年龄列的数据都要大于20,表名(emp) 列名(age)

alter table emp add constraint xxx check(age>20)

某一列(sex)取值只能为“男”和“女”的约束表达式:

ALTER TABLE 表的名称 ADD CONSTRAINT 约束的名称 CHECK (sex in (‘男’,‘女’))

  1. unique约束

这样的约束就是给列的数据追加的不重复的约束类型

【格式】alter table 表名 add constraint 约束名称 约束类型(列名)

例子:给ename列加个unique,让ename列的数据不重复

alter table emp add constraint qwe unique(ename)

  1. 默认约束

意思很简单,就是让此列的数据默认为一定的数据

【格式】alter table 表名称 add constraint 约束名称 约束类型 默认值 for 列名

例子:emp表中的gongzi列默认为10000

alter table emp add constraint jfsd default 10000 for gongzi

  1. 外键约束

这个有点难理解了,外键其实就是引用。

因为主键实现了实体的完整性,外键实现了引用的完整性,应用完整性规定,所引用的数据必须存在!其实就是个引用。

【格式】alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)

例子:

一个表名称叫dept 里面有2列数据 一列是ID一列是ENAME

id:表示产品的编号

ename:表示产品的名称

另外一个表格名称是emp 里面有2列数据,一列是ID 一列是DID

id:表示用户号

did:表示购买的产品号

要让emp表中的did列去引用dept表中的id

可以用下面的方法

alter table emp add constraint jfkdsj foreign key (did) references dept (id)

转自:https://www.cnblogs.com/zz-blog/p/8250779.html

alter table添加表约束相关推荐

  1. java里面怎么添加表约束_alter table添加表约束

    翻阅了一下网上关于alter table添加表约束的资料,学习下,然后供自己以后使用. 仅仅供自己使用... 总结alter table ### add constraint ## 使用方法 添加表约 ...

  2. postgresql表中间加列_PostgreSQL ALTER TABLE命令

    PostgreSQL的ALTER TABLE命令用来添加,删除,或修改现有表中的列. www.yiibai.com 还可以使用ALTER TABLE命令添加和删除现有表上的各种制约因素. yiibai ...

  3. 自己动手为Spark 2.x添加ALTER TABLE ADD COLUMNS语法支持

    SparkSQL从2.0开始已经不再支持ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], .. ...

  4. mysql alter table drop constraint_MySQL添加,修改,删除表的列,约束等表的定义。

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  5. mysql alter table delete column_MySQL 添加列,修改列,删除列 详细说明

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  6. mysql alter table add foreign key_mysql alter table add foreign (errno: 150)添加外键150错误

    在原有的users 表和orders表上,为orders添加外键alter table tbl_order add foreign key fk_user_id(user_id) references ...

  7. mysql添加外键语句解释 ALTER TABLE ADD CONSTRAINT FOREIGN KEY() REFERENCES

    给sudent表添加约束外键 语句: ALTER TABLE student ADD CONSTRAINT fk_student_userid FOREIGN KEY(userid) REFERENC ...

  8. Hive中alter table 对分区表的操作:添加列,修改列,删除历史分区

    alter table 用于在已有的hive表中添加.修改删除列 在分区表中添加新的一列: alter table table_name add columns(columns_name double ...

  9. ALTER TABLE 语句添加字段

    ALTER TABLE xx ADD is_repeat VARCHAR(4) DEFAULT NULL COMMENT '是否重复领取(0:否,1:是)'; ALTER TABLE xx ADD c ...

  10. Oracle alter table详解

    //建测试表 create table dept( deptno number(3) primary key, dname varchar2(10), loc varchar2(13) ); crea ...

最新文章

  1. android单片机蓝牙小车,手把手教你做蓝牙小车
  2. 解决An error occured while deploying the file. This probably means that the app contains ARM...
  3. 玻璃体混浊研究中需要解决的问题(持续更新中)
  4. STM32F10x_StdPeriph_Lib_V3.5.0库与系统滴答定时器(Systick)
  5. matlab为自定义后缀文件设置图标_【V3.0更新】| 这可能是全网最好用的文件管理神器了......
  6. DCL实现多线程安全的高性能懒汉模式
  7. html与css重置代码,发个自己的CSS重置基础代码
  8. java一个式子开根号语句_Oracle查询语句,你知道几个?(上)
  9. JavaScript学习总结(14)——12个令人惊叹的JavaScript技巧
  10. 睡眠多少分钟一个循环_关于科学睡眠丨90分钟一个睡眠周期,每晚循环3到5次...
  11. html---标题居中,背景图片
  12. php展厅控制系统,展厅中控系统
  13. 医学影像处理科研训练
  14. 教你唱千千阙歌,粤语版的
  15. 但得有心能自奋,何愁他日不雄飞
  16. 无法保存打印机设置 。操作无法完成 错误(0x0000001)
  17. 模拟算法考试训练题和答案1
  18. 专题8:dfs和bfs
  19. linux遇到nul字符,服务器崩溃,系统日志中出现ascii NUL字符(^ @ ^ @ ^ @ ...)
  20. ChatGPT 是什么?

热门文章

  1. 计算机艺术未来发展趋势,数字媒体艺术未来的发展趋势探讨
  2. 5G应用加速落地,酷雷曼VR直播应时而生。
  3. idea切换工作空间_IntelliJIDEA使用技巧
  4. 计算机保研面试之机器学习
  5. Win10自带浏览器MicroEdge无法打开网页---解决办法
  6. 华为服务器安装操作系统
  7. 一元稀疏多项式计算器
  8. bios设置raid启动模式Linux,[BIOS设置]BIOS中RAID模式怎么设置?
  9. MFI认证——苹果MFI账号申请
  10. Android 运行时权限检测流程,申请危险权限组权限代码