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 -- 级联删除
网友评论