SQL语言进阶

mysql加强


USE day1030;
SHOW TABLES;
DROP TABLE student;

-- 1 数据约束

-- 默认值
CREATE TABLE student(
    sid INT,
    sname VARCHAR(20),
    saddress VARCHAR(20) DEFAULT 'BeiJing'
);
INSERT INTO student(sid,sname) VALUES(1,'jack');

SELECT * FROM student;

-- 非空

CREATE TABLE student(
    sid INT,
    sname VARCHAR(20),
    saddress VARCHAR(20) NOT NULL
);
INSERT INTO student VALUES(1,'jack','hefei');  -- 非空字段必须赋值(非null)

-- 唯一

CREATE TABLE student(
    sid INT UNIQUE,
    sname VARCHAR(20),
    saddress VARCHAR(20) DEFAULT 'BeiJing'
);
INSERT INTO student(sid,sname) VALUES(1,'jack');
INSERT INTO student(sid,sname) VALUES(2,'jacy');  -- 只能约束有值的情形(不约束多个null)

-- 主键(非空+唯一)

CREATE TABLE student(
    sid INT PRIMARY KEY,  -- 1)通常情况下,每张表都会设置一个主键的字段,用于标记表中每条记录的唯一性
    sname VARCHAR(20),    -- 2)建议不选用包含业务含义的字段作为主键
    saddress VARCHAR(20) DEFAULT 'BeiJing'
);

-- 自增长

CREATE TABLE student(
    sid INT PRIMARY KEY AUTO_INCREMENT,  -- 主键关键字+自增长关键字
    sname VARCHAR(20),
    saddress VARCHAR(20) DEFAULT 'BeiJing'
);

CREATE TABLE student(
    sid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,  -- 0001开始递增
    sname VARCHAR(20),
    saddress VARCHAR(20) DEFAULT 'BeiJing'
);
    -- //号外:删除表的两种方式中:1)delete from student :不影响自增长约束
    --                2)truncate table student :影响自增长约束

-- 外键

CREATE TABLE employee(  -- 副表/从表
    empId INT PRIMARY KEY,
    empName VARCHAR(20),
    deptId INT,  -- 部门id
    CONSTRAINT employee_department_fk FOREIGN KEY(deptId) REFERENCES department(deptId)
    --               外键名称                      外键               参考表(参考字段)
);

CREATE TABLE department(  -- 主表
    deptId INT PRIMARY KEY,
    deptName VARCHAR(20)
);

INSERT INTO employee VALUES(1,'jack',1);
INSERT INTO employee VALUES(2,'jason',1);
INSERT INTO employee VALUES(3,'lucy',2);

INSERT INTO department VALUES(1,'computer depart');
INSERT INTO department VALUES(2,'hr depart'); 

SELECT * FROM employee;
SELECT * FROM department;

DROP TABLE employee;
DROP TABLE department;

    -- 注意:1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上;
    --       2)主表的参考字段设置为主键;
    --       3)添加数据:先添加主表,后添加副表;
    --   4)修改数据:先修改副表,后修改主表;
    --   5)删除数据:先删除副表,后删除主表。

-- 级联操作

    -- 对主表进行修改,副表也随之修改更新
    CONSTRAINT employee_department_fk FOREIGN KEY(deptId) REFERENCES department(deptId) ON UPDATE CASCADE  -- 级联修改
    CONSTRAINT employee_department_fk FOREIGN KEY(deptId) REFERENCES department(deptId) ON DELETE CASCADE  -- 级联删除

2018年10月31日

你可能感兴趣的:(SQL语言进阶)