数据约束
默认值
当用户对使用默认值的字段不插入值的时候,就使用默认值,默认值的字段允许为null。
非空
gender VARCHAR(2) NOT NULL -- 非空
非空字段必须赋值且非空字符不能插入null
唯一
id INT UNIQUE, -- 唯一
对字段的值不能重复可重复插入null,类似主键 非空唯一 NOT NULL UNIQUE
自增长
sid INT PRIMARY KEY AUTO_INCREMENT,
不能插入null,可以不赋值,自动递增
零填充
sid INT(3) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
如图:
主键
id INT PRIMARY KEY, -- 主键
非空+唯一
外键
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
-- 外键名称 外键 参考表(参考字段)
注意事项:
添加数据: 先添加主表,再添加副表
修改数据: 先修改副表,再修改主表
删除数据: 先删除副表,再删除主表
多表查询
交叉连接:
SELECT * FROM empp JOIN dept
将两个表不设定任何条件的连接起来
内连接:
SELECT * FROM empp JOIN dept ON empp.`did`=dept.`did`
找到两个表中相同字段后按照值对应连接起来
左[外]连接:
SELECT * FROM empp LEFT JOIN dept ON empp.`did`=dept.`did`
内连接的结果基础上,加上左边表中所有不符合连接条件的数据,相应放右边表的字段的位置就自动补为“null”值。
如图:
右[外]连接:
SELECT * FROM empp RIGHT JOIN dept ON empp.`did`=dept.`did`
如图:
全[外]连接:
SELECT * FROM empp FULL JOIN dept ON empp.`did`=dept.`did`
其实是左右连接的“并集”(消除重复项),加上左表中不满足条件的所有行(右边对应补null),再加上,右表中不满足条件的所有行(左边对应补null)。
在MYSQL中不适用
in子查询:
SELECT protype_name FROM product_type WHERE protype_id=(SELECT protype_id FROM product WHERE pro_name LIKE '%素尼%4G手机%')
表示该操作数(字段值) 等于 该子查询的其中任意一个只,就算满足条件。
联合查询:
SELECT pro_id,pro_name FROM product
UNION
SELECT protype_id,protype_name FROM product_type
将两个表上下合并,下边没有字段及字段类型,通用第一个的属性
如图: