小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-04-02 / 24 阅读
0
0

MySQL设置主键约束和删除主键约束|默认值约束|主键约束和唯一约束唯一索引约束区别|删除唯一约束

MySQL设置主键约束和删除主键约束|默认值约束|主键约束和唯一约束唯一索引约束区别

目标:

  • 为score设置默认值约束
  • 为id设置主键约束
  • 删除所有约束
//创建数据库
create database|schema test1;
//进入数据库
use test1;
//创建数据表
mysql> create table stu (id int(10),name varchar(30),sco
Query OK, 0 rows affected (0.11 sec)

mysql> show columns from stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(10)     | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
//设置主键约束
mysql> alter table stu modify id int(10) primary key;
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show columns from stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(10)     | NO   | PRI | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
//设置默认值约束
mysql> alter table stu modify score float default 0;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show columns from stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(10)     | NO   | PRI | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| score | float       | YES  |     | 0       |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
//删除默认值约束
mysql> alter table stu modify score float;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
//删除主键约束
mysql> alter table stu drop primary key;
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show columns from stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(10)     | NO   |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql主键约束和唯一约束区别

1.主键约束(PRIMARY KEY)

  1. 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
  2. 是不可能(或很难)更新.
  3. 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
  4. 主健可作外健,唯一索引不可;

2.唯一性约束(UNIQUE)

  1. 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
  2. 只要唯一就可以更新.
  3. 即表中任意两行在 指定列上都不允许有相同的值,允许空(NULL).
  4. 一个表上可以放置多个唯一性约束

3.唯一索引(INDEX)

创建唯一索引可以确保任何生成重复键值的尝试都会失败。

唯一性约束和主键约束的区别:

(1).唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。

(2).在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引

约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。

唯一性约束与唯一索引有所不同:

(1).创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。

(2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。

也就是说其实唯一约束是通过创建唯一索引来实现的。

在删除时这两者也有一定的区别:

删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,

而删除了唯一索引的话就可以插入不唯一的值。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_35823441/article/details/113990212

删除约束

如果不知道唯一约束所对应的索引名称,可以先执行以下查询来获取索引信息:

SHOW INDEX FROM your_table;

在使用 mysql 数据库时,我们经常需要添加约束来保证数据的完整性和一致性。约束是一种数据库对象,它可以限制某个列的取值范围,规定两个表之间的关系,以及限制某些操作的执行。但是,在某些情况下,我们需要删除这些约束,比如修改表结构、删除表等。本文将介绍如何在 mysql 中删除约束。

  1. 删除主键约束

主键约束是最常用的约束之一,它可以保证某个列的取值唯一,并且不为空。如果想删除主键约束,可以使用 ALTER TABLE 语句和 DROP PRIMARY KEY 子句。例如,下面的语句将删除一个名为 students 的表中的主键约束:

ALTER TABLE students DROP PRIMARY KEY;
  1. 删除唯一约束

唯一约束可以保证某个列的取值唯一,但是与主键不同的是,它可以允许空值。如果想删除唯一约束,可以使用 ALTER TABLE 语句和 DROP INDEX 子句。例如,下面的语句将删除一个名为 students 的表中的唯一约束:

ALTER TABLE students DROP INDEX unique_name;
  1. 删除外键约束

外键约束可以保证两个表之间的关联关系,用来维护数据一致性。如果想删除外键约束,可以使用 ALTER TABLE 语句和 DROP FOREIGN KEY 子句。例如,下面的语句将删除一个名为 orders 的表中的外键约束:

ALTER TABLE orders DROP FOREIGN KEY fk_customer_id;

注意,fk_customer_id 是该外键约束的名字,需要根据实际情况进行替换。

  1. 删除检查约束

检查约束是一种用来限制列取值的条件约束,它可以用于保证数据的一致性。如果想删除检查约束,可以使用 ALTER TABLE 语句和 DROP CHECK 子句。例如,下面的语句将删除一个名为 students 的表中的检查约束:

ALTER TABLE students DROP CHECK age_check;

注意,age_check 是该检查约束的名字,需要根据实际情况进行替换。

总结:

在 MySQL 数据库中,约束是维护数据一致性和完整性的关键。但是,在某些情况下,我们需要删除这些约束。本文介绍了如何在 MySQL 中删除主键约束、唯一约束、外键约束和检查约束。只需简单的 ALTER TABLE 语句和相应的子句,就可以方便地删除约束。当然,在删除约束之前,需要仔细考虑其对数据的影响,并且备份好数据,以免造成不可挽回的后果。

转载自:https://www.php.cn/faq/521602.html


评论