`
Donald_Draper
  • 浏览: 979860 次
社区版块
存档分类
最新评论

Mysql添加约束

阅读更多
MySQL中对三种约束的支持:http://leekai.me/mysql-zhong-dui-san-zhong-yue-shu-de-zhi-chi/
MySQL的InnoDB默认支持5中约束,
– primary key
– unique key
– foreign key
– default
– not null
今天我们来操作一下唯一约束创建与删除,首先创建表:
CREATE TABLE `user1` (
  `name` varchar(20) NOT NULL,
  `email` varchar(100) default NULL,
  `phone` varchar(11) default NULL,
  PRIMARY KEY  (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


查看表描述:
mysql> use test;
Database changed
mysql> desc user1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | NO   | PRI |         |       |
| email | varchar(100) | YES  |     | NULL    |       |
| phone | varchar(11)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set

添加唯一约束:
mysql> alter table user1 add constraint emailUnique UNIQUE(email);
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc user1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | NO   | PRI |         |       |
| email | varchar(100) | YES  | UNI | NULL    |       |
| phone | varchar(11)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set

查看表创建语句:唯一约束已添加
mysql> show create table user1;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user1 | CREATE TABLE `user1` (
  `name` varchar(20) NOT NULL,
  `email` varchar(100) default NULL,
  `phone` varchar(11) default NULL,
  PRIMARY KEY  (`name`),
  UNIQUE KEY `emailUnique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> show index from user1;
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name    | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| user1 |          0 | PRIMARY     |            1 | name        | A         |           0 | NULL     | NULL   |      | BTREE      |         |
| user1 |          0 | emailUnique |            1 | email       | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set

删除唯一约束:注意删除约束的方式,是drop INDEX,而不是drop INDEX;
mysql> alter table user1 drop INDEX emailUnique;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0
mysql> show index from user1;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| user1 |          0 | PRIMARY  |            1 | name        | A         |           0 | NULL     | NULL   |      | BTREE      |         |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set

mysql> show create table user1;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                           |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user1 | CREATE TABLE `user1` (
  `name` varchar(20) NOT NULL,
  `email` varchar(100) default NULL,
  `phone` varchar(11) default NULL,
  PRIMARY KEY  (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> desc user1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | NO   | PRI |         |       |
| email | varchar(100) | YES  |     | NULL    |       |
| phone | varchar(11)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set
mysql> 

添加联合唯一约束:
mysql> alter table user1 add constraint email_Phone_Unique UNIQUE(email,phone);
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc user1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | NO   | PRI |         |       |
| email | varchar(100) | YES  | MUL | NULL    |       |
| phone | varchar(11)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set

mysql> show create table user1;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                               |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user1 | CREATE TABLE `user1` (
  `name` varchar(20) NOT NULL,
  `email` varchar(100) default NULL,
  `phone` varchar(11) default NULL,
  PRIMARY KEY  (`name`),
  UNIQUE KEY `email_Phone_Unique` (`email`,`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> show index from user1;
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name           | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| user1 |          0 | PRIMARY            |            1 | name        | A         |           0 | NULL     | NULL   |      | BTREE      |         |
| user1 |          0 | email_Phone_Unique |            1 | email       | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |
| user1 |          0 | email_Phone_Unique |            2 | phone       | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |
+-------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set

mysql> 
0
0
分享到:
评论

相关推荐

    MySQL 字段约束 mysql学习笔记

    MySQL 字段约束是指在 MySQL 中对字段的定义时添加的约束或修饰符,它们可以用来增加对输入数据的约束。今天我们来看一下 MySQL 的字段约束:NULL 和 NOT NULL 修饰符、DEFAULT 修饰符、AUTO_INCREMENT 修饰符。 ...

    MySQL外键约束常见操作方法示例【查看、添加、修改、删除】

    再根据新的需求重新添加约束。 4. **删除外键约束** 删除外键约束直接使用`ALTER TABLE`命令即可。例如,要从`vip`表中删除`user_id`的外键约束: ```sql ALTER TABLE vip DROP FOREIGN KEY FK1C81D1738DA76; ...

    MySQL的约束-外键约束

    在数据库设计中,数据完整性是至关重要的,而MySQL的约束机制正是为了确保数据完整性和一致性而设立的。本文将深入探讨其中的一种约束类型——外键约束(Foreign Key Constraint),它是关系数据库模型中的核心概念...

    MySQL数据表添加字段

    接下来,我们来看MySQL添加字段的语法: ```sql ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件]; ``` 这个命令的解释如下: - `<表名>`:指定你想要修改的表的名称。 - `<新字段名>`:即将添加的新字段...

    MySQL非空约束(not null)案例讲解.doc

    MySQL 非空约束(NOT NULL)是指字段的值不能为空,这种约束可以在创建表时或修改表时添加。非空约束的作用是确保字段的值不能为空,否则数据库系统就会报错。 创建表时设置非空约束 在创建表时,可以使用 NOT ...

    mysql外键的添加与删除参考.pdf

    MySQL 外键的添加与删除参考 MySQL 外键是关系数据库管理系统中的一种约束机制,它能够确保数据的一致性和完整性。外键是指在一个表中字段的值必须存在于另一个表中的字段值中。MySQL 中的外键只能在 InnoDB 存储...

    二、MySQL表约束和表关系学习ppt

    - 在MySQL中,添加外键约束使用`ALTER TABLE`语句,可以指定`ON DELETE`和`ON UPDATE`行为,以控制当父表记录更改或删除时子表的响应。 总的来说,理解并熟练掌握MySQL的表约束和表关系对于设计高效、稳定且符合...

    Mysql纯命令行添加用户

    本文将详细介绍如何在MySQL命令行环境下添加用户、管理权限以及删除用户。 1. **创建用户** 使用`CREATE USER`语句来创建新的用户。基本格式如下: ``` CREATE USER 'username'@'host' IDENTIFIED BY 'password'...

    MySQL删除表的时候忽略外键约束的简单实现

    在MySQL数据库管理中,删除表是一项需要谨慎操作的任务,尤其是当表之间存在外键约束时。外键约束是关系数据库中确保数据完整性和一致性的重要机制,它不允许在父表(引用其他表的字段的表)中删除那些已被子表引用...

    MySQL——表的约束

    表的约束,主键 候选键 非空约束 默认值,创建主键(表级方式和列级方式 单列主键,复合主键)修改主键 删除主键;创建候选键 修改候选键 删除候选键;创建非空约束 删除非空约束;添加默认值 修改默认值;

    MySQL约束课堂笔记.md

    ### MySQL约束课堂笔记知识点 #### DQL:查询语句 **1. 排序查询** - **语法**:`ORDER BY`子句用于对结果集按照一个或多个列的值进行排序。 - 示例语法:`ORDER BY column1 ASC|DESC, column2 ASC|DESC` - `...

    数据一致性守护者:MySQL外键约束深度解析

    除了创建外键约束之外,MySQL还提供了多种管理外键约束的方法,包括添加、删除和修改外键约束等操作。 1. **添加外键约束**:如果在创建表时未定义外键约束,可以通过`ALTER TABLE`语句添加外键约束。 ```sql ...

    MySQL完整性约束相关资料

    例如,创建表时可以添加约束: ```sql CREATE TABLE Students ( ID INT PRIMARY KEY, Name VARCHAR(50) NOT NULL, Age INT CHECK (Age BETWEEN 0 AND 150) ); ``` 或者在已有表上添加约束: ```sql ALTER ...

    MySQL约束(三).pdf

    - **示例**:添加约束:`ALTER TABLE students ADD CONSTRAINT chk_age CHECK (age BETWEEN 18 AND 25);` 10. **约束在复杂查询中的应用**: - **定义**:展示如何在复杂的SQL查询中利用约束。 - **作用**:提高...

    MySQL常用约束-20121224-最新版

    根据提供的文件信息,本文将详细解析 MySQL 中常用的几种表约束,并通过具体的 SQL 语句示例来阐述每种约束的应用场景及其重要性。 ### 一、主键约束(PRIMARY KEY) 主键约束用于唯一标识表中的每一行记录,确保...

    mysql添加字段.docx

    首先,我们来看一下MySQL添加字段的基本语法: ```sql ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件]; ``` 1. **<表名>**:这是你要修改的已有数据表的名称。确保表名符合MySQL的命名规则,通常是小写...

    mysql处理添加外键时提示error 150 问题的解决方法

    MySQL 处理添加外键时提示 Error 150 问题的解决方法 MySQL 中添加外键时,可能会遇到 Error 150 的问题,这个问题是 MySQL 本身的 bug,已经被报告到 MySQL 开发者列表中很多年了。然而,导致这个错误的原因却并...

    MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

    MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

Global site tag (gtag.js) - Google Analytics