MySQL中添加、删除约束

Wesley13
• 阅读 720

MySQL中6种常见的约束:主键约束(primary key)、外键约束(foreign key)、非空约束(not null)、唯一性约束(unique)、默认值约束(defualt)、自增约束(aoto_increment),下面是添加、删除这几种约束的一些方法。

--我已经建了数据库; 1 -- 添加约束

 2 -- 1、建表时添加约束:
 3 CREATE TABLE goodstest (  
 4   GID INT(10) NOT NULL AUTO_INCREMENT,
 5   GNAME VARCHAR(20) NOT NULL,
 6   GPRICE FLOAT NOT NULL,
 7   GNUM INT(10) NOT NULL,
 8   PRIMARY KEY (GID),
 9  UNIQUE KEY (GNAME),
10  FOREIGN KEY (col_name) REFERENCES tab_name(col_name)
11 );
12 
13 
14 -- 2、通过ALTER语句添加约束
15 -- 主键约束
16 -- 语法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...) [index_option]
17 ALTER TABLE goodstest ADD PRIMARY KEY(GID);
18 -- 语法:ALTER TABLE tab_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]/* 可以更改列定义但不能更改其名称,在不重命名列定义的情况下更改列定义比CHANGE更方便。*/
19 -- 通过修改列定义添加或者添加主键,修改约束一般是先删掉原有的后重新添加
20 ALTER TABLE goodstest MODIFY GID INT(10) PRIMARY KEY;
21 -- 语法:ALTER TABLE tab_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRET | AFTER col_name] /*原始定义中存在但未为新定义指定的属性不会继续使用。即以新定义为准*/
22 ALTER TABLE goodstest CHANGE GID GID INT(10) PRIMARY KEY;/* 当不需要重命名时两个相同的列名是必要的*/ 
23  
24  
25 -- 唯一性约束
26 -- 语法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (key_part,...) [index_option] ...
27 ALTER TABLE goodstest ADD CONSTRAINT GNAME_UNI UNIQUE KEY(GNAME);/*如果没有用CONSTRAINT设置约束名 系统会自动生成*/
28 -- 同理可用MODIFY COLUMN及CHANGE COLUMN方法添加
29 -- 外键约束
30 -- 语法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition
31  ALTER TABLE gsales ADD FOREIGN KEY(GID) REFERENCES goods(GID);
32 
33 -- 默认约束
34 -- 语法:AlTER TABLE goodstest ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}/*删除以及设置*/
35 
36 
37 -- 非空约束以及自增约束:在定义时设置,或者通过MODIFY COLUMN 和 CHANGGE COLUMN设置及删除
38 -- 一张表只能有一个自增长列,并且该列必须定义了约束(可以是主键约束,也可以是唯一约束,也可以是外键约束,但是不可以是非空和检查约束)
39 
40 
41 -- 删除约束
42 
43  -- 语法:ALTER TABLE tab_name DROP PRIMARY KEY;/*主键是唯一的就这样就行了*/
44  -- 语法:ALTER TABLE tab_name DROP [INDEX | KEY] index_name /*删除唯一性约束*/
45  -- 语法:ALTER TABLE tab_name DROP FOREIGN KEY fk_name/*删除外键约束*/

参考:https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

参考:https://blog.csdn.net/a909301740/article/details/62887992

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
CuterCorley CuterCorley
3年前
数据库编程 MySQL 技巧与经验
1.MySQL创建数据表时设定引擎并添加外键约束创建两个数据表,在它们之间添加外键约束,然后在被添加外键的表中添加数据,发现并没有提示报错,很正常地插入了数据,说明外键没有添加成功,在SQL可视化工具里查看表的属性,并点击外部键会出现弹窗,提示是因为引擎的问题,导致不能添加外键。MySQL安装时默认用的表引擎是MyISAM,而MyISAM是不支持外键的,如
Wesley13 Wesley13
3年前
SQL 删除外键列
一 SQL删除列的语句是:altertabletableNamedropcolumncolumnName(其中,tableName为表名,columnName为列名)但是,如果某列有约束时,不能直接删除,需要先删除约束,再删除列。如果某个列是外键,在不知道外键约束名称的情况下,那么首先是查找外键约束名称,根据名称删除约束,
Easter79 Easter79
3年前
sqlserver2005创建唯一约束的方法
对于一个表中非主键列的指定列,唯一(UNIQUE约束|:强制非主键上的实体完整性的约束。UNIQUE约束确保未输入重复值,并创建一个索引以增强性能。)约束确保不会输入重复的值。例如,在employee表中emp\_id列是主键,可以定义一个唯一约束来要求表中社会安全号码(ssn)列的项是唯一的。在数据库关系图中,可以使用"索引/键"属性页创建、
Wesley13 Wesley13
3年前
MySQL字段约束及多表查询
前言:mysql的字段约束是以后必不可免的,下面主要写了四个:主键约束用于唯一且不能为空;非空约束即不能为空可以重复;唯一约束即可以为空但必须唯一;外键约束是让表与表之间有一定的关联;当然如何使用还看下文,多表就不在这总结了。如果你对前面的知识有所遗忘或感兴趣MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解
Stella981 Stella981
3年前
Go 语言编程 — gorm 的数据完整性约束
目录文章目录目录实体完整性(主键约束)用户定义完整性(非空约束、唯一约束、检查约束和默认值)参照完整性(外键约束)关联关系一对一、一对多关联多对多关联示例实体完整性(主键约束)每个关系(表)至少存在一个主
Wesley13 Wesley13
3年前
MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束a) 非空约束,notnullb) 唯一约束,uniquec) 主键约束,primarykeyd) 外键约束,foreignkey1,非空约束,针对某个字段设置其值不为空,如:学生的姓名不能为空droptableifexistst_studen
Wesley13 Wesley13
3年前
oracle逐步学习总结之约束(基础五)
 原创作品,转自请在文章明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10167717.htmloracle中的约束主要有非空约束(notnull)、唯一性约束(unique)、主键约束(primarykey)和检查约束(check)。一、notnull:指定在该列的数据不能为null,插入数据
Wesley13 Wesley13
3年前
mysql约束与索引的区别
一:约束作用:是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具(约束);这里主要讲解mysql的约束:1、非空约束:notnull;指示某列不能存储NULL值2、唯一约束:unique();uk unique约束的字段,要求必须是唯一的,但null除外;3、主键约束:
Wesley13 Wesley13
3年前
mysql 表的完整性约束
mysql表的完整性约束阅读目录  概览  notnull  unique  primarykey  foreignkey概览  为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作