MySQL—约束

2019-02-19  本文已影响0人  d93c0d3b5051

基本概念

约束

1. 非空约束

CREATE TABLE emp(
    id INT(10) NOT NULL,
    Name VARCHAR(20) NOT NULL DEFAULT 'abc',
    sex CHAR NULL
)
创建约束
ALTER TABLE emp
MODIFY sex VARCHAR(30) NOT NULL
在这里插入图片描述
ALTER TABLE emp
MODIFY sex VARCHAR(30) NULL
在这里插入图片描述
ALTER TABLE emp
MODIFY Name VARCHAR(15) DEFAULT 'ddx' NULL
在这里插入图片描述
2. 唯一约束
#创建表并指定用户名和密码组合不能重复
CREATE TABLE USER (
    id INT NOT NULL,
    NAME VARCHAR(25),
    PASSWORD VARCHAR(16),
    CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
)
在这里插入图片描述
ALTER TABLE USER
MODIFY NAME VARCHAR(20) UNIQUE
在这里插入图片描述
ALTER TABLE USER
ADD CONSTRAINT uk_name_pwd_1 UNIQUE(NAME,PASSWORD);
#利用别名
ALTER TABLE USER
DROP INDEX uk_name_pwd_1

3. 主键约束

CREATE TABLE EMP1(
    id INT AUTO_INCREMENT PRIMARY KEY,
    NAME VARCHAR(20)
);
在这里插入图片描述
CREATE TABLE EMP2(
    id INT NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(20),
    pwd VARCHAR(15),
    CONSTRAINT emp2_id_pk PRIMARY KEY(id)
);
在这里插入图片描述
CREATE TABLE EMP3(
    id INT NOT NULL,
    NAME VARCHAR(20),
    pwd VARCHAR(15),
    CONSTRAINT emp3_pk PRIMARY KEY(NAME,pwd)
);
在这里插入图片描述
ALTER TABLE emp5
drop PRIMARY KEY;
在这里插入图片描述
ALTER TABLE emp5
ADD PRIMARY KEY(NAME, pwd)
在这里插入图片描述

4. 外键约束

#创建主表
CREATE TABLE dept(
    dept_id INT AUTO_INCREMENT PRIMARY KEY,
    dept_name VARCHAR(20)
);

#创建从表
CREATE TABLE emp(
    emp_id INT AUTO_INCREMENT PRIMARY KEY,
    last_name VARCHAR(15),
    dept_id INT,
    CONSTRAINT emp_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id)
); 
在这里插入图片描述
#创建主表
CREATE TABLE classes(
    id INT,
    NAME VARCHAR(20),
    number INT,
    PRIMARY KEY(NAME, number)
);

#创建从表
CREATE TABLE student(
    id int AUTO_INCREMENT PRIMARY KEY,
    classes_name VARCHAR(20),
    classes_number INT,
    FOREIGN KEY(classes_name, classes_number) REFERENCES classes(NAME, number)
)
ALTER TABLE emp
DROP FOREIGN KEY emp_dept_id_fk;
ALTER TABLE emp
ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept(dept_id);

外键约束的关键字

上一篇 下一篇

猜你喜欢

热点阅读