1. 程式人生 > 其它 >MYSQL 約束新增

MYSQL 約束新增

一、對已存在的表新增主鍵約束

mysql> alter table dept add primary key(deptno);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from dept;
+--------+--------------+
| deptno | dept_name    |
+--------+--------------+
|      1 | zhaoyang     |
|      2 | zhouwenqiang |
|
3 | 實施部 | | 4 | 產品部 | +--------+--------------+ 4 rows in set (0.00 sec) mysql>

2. 第二種格式:alter table 表名 add constraint 主鍵約束的名字 primary key(列名);

mysql> update employees set empno = 1 where ename=
    -> 'zhaoyang';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1
Warnings: 0 mysql> select * from employees; +-------+--------------+------+------------+------------+---------+--------+ | empno | ename | age | birth | hiredate | sal | deptno | +-------+--------------+------+------------+------------+---------+--------+ | 1 | zhaoyang |
24 | 1993-07-17 | 2021-10-18 | 5000.00 | 1 | | NULL | chenqian | 21 | 1996-05-12 | 2021-10-21 | 3001.00 | 1 | | NULL | dengdesheng | 19 | 1999-02-25 | 2021-11-15 | 4000.00 | 1 | | NULL | zhouwenqiang | 21 | 2001-01-01 | 2021-08-19 | 7000.00 | 2 | +-------+--------------+------+------------+------------+---------+--------+ 4 rows in set (0.00 sec) mysql> update employees set empno=2 where ename='chenqian'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update employees set empno=3 where ename='dengdesheng'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> alter table employees add constraint pk_emp primary key(empno); ERROR 1138 (22004): Invalid use of NULL value mysql> update employees set empno=4 where ename='zhouwenqiang'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> alter table employees add constraint pk_emp primary key(empno); Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0

第三種格式:alter table 表名 modify 列名 資料型別 primary key;

mysql> alter table employees modify empno int primary key;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

刪除主鍵約束:

mysql> alter table employees drop primary key;
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0

二、在建立表的時候同時建立主鍵約束

第一種格式:

create table 表名(

  列名1  資料型別 primary key,

  列名2 資料型別 );

mysql> create table if not exists location(
    ->  localno int primary key,
    ->  localname varchar(30));
Query OK, 0 rows affected (0.03 sec)

第二種格式:

create table 表名(

  列名1 資料型別,

  列名2 資料型別,

  constraint  主鍵約束的名字  primary key(列名1) );

mysql> create table if not exists student_info(
    ->  number int,
    ->  name   varchar(5),
    ->  sex     enum('M','F'),
    ->  id_number       char(18),
    ->  department      varchar(30),
    ->  major varchar(30),
    ->  enrollment_time date,
    ->  constraint pk_student_info primary key(number));
Query OK, 0 rows affected, 1 warning (0.01 sec)

第三種格式:

create table 表名(

  列名1 資料型別,

  列名2 資料型別,

  primary key(列名1) );

mysql> create table if not exists student_info(
    ->  number int,
    ->  name   varchar(5),
    ->  sex     enum('M','F'),
    ->  id_number       char(18),
    ->  department      varchar(30),
    ->  major varchar(30),
    ->  enrollment_time date,
    ->  primary key(number));
Query OK, 0 rows affected (0.03 sec)