修改数据表--删除约束

1、删除主键约束

ALTER TABLE tbl_name DROP PRMIARY KEY;

任何一张数据表有且只有一个主键,所以不用指定名称。

mysql> SHOW COLUMNS FROM users3;

+---------  -+---------------------   -+------+-----  +---------+-------+
| Field        | Type                       | Null | Key   | Default | Extra |
+---------  -+----------------------   +------+-----  +---------+-------+
| username | varchar(10)             | NO   | UNI  | NULL     |        |
| pid          | smallint(5) unsigned | YES | MUL  | NULL    |        |
| id            | smallint(5) unsigned | NO  | PRI    | 0         |        |
| age         | tinyint(3) unsigned    | NO  |         | NULL    |        |
+----------+----------------------      +------+-----+---------+-------+

mysql> ALTER TABLE users3 DROP PRIMARY KEY;
Query OK, 0 rows affected (0.28 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql>
mysql> SHOW COLUMNS FROM users3;
+---------  -+---------------------   -+------+-----  +---------+-------+
| Field        | Type                       | Null | Key   | Default | Extra |
+---------  -+----------------------   +------+-----  +---------+-------+
| username | varchar(10)             | NO   | PRI   | NULL    |         |
| pid          | smallint(5) unsigned | YES | MUL  | NULL    |         |
| id            | smallint(5) unsigned | NO  |         | 0         |         |
| age         | tinyint(3) unsigned    | NO  |         | NULL    |        |
+----------+----------------------      +------+-----+---------+-------+

2、删除唯一约束

ALTER TABLE tbl_name DROP  {INDEX|KEY} index_name

mysql> SHOW INDEXES FROM users3\G;
*************************** 1. row ***************************
Table: users3
Non_unique: 0
Key_name: username
Seq_in_index: 1
Column_name: username
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: users3
Non_unique: 1
Key_name: pid
Seq_in_index: 1
Column_name: pid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)

ERROR:
No query specified

删除约束

mysql> ALTER TABLE users3 DROP KEY username;
Query OK, 0 rows affected (0.30 sec)
Records: 0 Duplicates: 0 Warnings: 0

username字段依然存在,约束已经不存在了

mysql> SHOW COLUMNS FROM users3;
+---------  -+---------------------   -+------+-----  +---------+-------+
| Field        | Type                       | Null | Key   | Default | Extra |
+---------  -+----------------------   +------+-----  +---------+-------+
| username | varchar(10)             | NO   |         | NULL    |         |
| pid          | smallint(5) unsigned | YES | MUL  | NULL    |         |
| id            | smallint(5) unsigned | NO  |         | 0         |         |
| age         | tinyint(3) unsigned    | NO  |         | NULL    |        |
+----------+----------------------      +------+-----+---------+-------+

mysql> SHOW INDEXES FROM users3\G;  #刚才有两个约束,现在只剩下一个了
*************************** 1. row ***************************
Table: users3
Non_unique: 1
Key_name: pid
Seq_in_index: 1
Column_name: pid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.00 sec)

3、删除外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

显示数据表创建时的信息

mysql> SHOW CREATE TABLE users3;

| Table | Create Table

| users3 | CREATE TABLE `users3` (
`username` varchar(10) NOT NULL,
`pid` smallint(5) unsigned DEFAULT NULL,
`id` smallint(5) unsigned NOT NULL DEFAULT '0',
`age` tinyint(3) unsigned NOT NULL,
KEY `pid` (`pid`),
CONSTRAINT `users3_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `province` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
删除外键约束

mysql> ALTER TABLE users3 DROP FOREIGN KEY users3_ibfk_1;
Query OK, 0 rows affected (0.30 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> SHOW CREATE TABLE users3;

| Table | Create Table

| users3 | CREATE TABLE `users3` (
`username` varchar(10) NOT NULL,
`pid` smallint(5) unsigned DEFAULT NULL,
`id` smallint(5) unsigned NOT NULL DEFAULT '0',
`age` tinyint(3) unsigned NOT NULL,
KEY `pid` (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
删除pid的索引

mysql> ALTER TABLE users3 DROP INDEX pid;
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> SHOW CREATE TABLE users3;

| Table | Create Table

| users3 | CREATE TABLE `users3` (
`username` varchar(10) NOT NULL,
`pid` smallint(5) unsigned DEFAULT NULL,
`id` smallint(5) unsigned NOT NULL DEFAULT '0',
`age` tinyint(3) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

posted @ 2017-03-23 15:40  浅色夏沫  阅读(300)  评论(0编辑  收藏  举报