MySQL(6):约束
来源:互联网 发布:python spark 环境搭建 编辑:程序博客网 时间:2024/06/08 06:55
约束包括:NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY以及CHECK等5种类型。
版本号为5.0.22的MySQL数据库,据说没有CHECK约束。
1. 主键约束
DROP DATABASE IF EXISTS mydb1;
CREATE DATABASE mydb1;
USE mydb1;
CREATE TABLE tb1 (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增长
uName VARCHAR(32)
);
INSERT INTO tb1 (uName) VALUES ('qcy1');
INSERT INTO tb1 (uName) VALUES ('qcy2');
INSERT INTO tb1 (uName) VALUES ('qcy3');
INSERT INTO tb1 (uName) VALUES ('qcy4');
INSERT INTO tb1 (uName) VALUES ('qcy5');
SELECT * FROM tb1;
数字转字符串
/* 比如将123转换为char类型 */
SELECT CAST(123 AS CHAR) FROM DUAL;
/* 或者使用concat方法 */
SELECT CONCAT(123,'');
2. 唯一性约束
CREATE TABLE tb2 (
id INT UNIQUE,
uName VARCHAR(32)
);
INSERT INTO tb2 (id,uName) VALUES (1,'qcy1');
INSERT INTO tb2 (id,uName) VALUES (2,'qcy2');
INSERT INTO tb2 (id,uName) VALUES (2,'qcy3'); -- 报错
3. 非空约束
CREATE TABLE tb3 (
id INT PRIMARY KEY AUTO_INCREMENT,
uName VARCHAR(32) NOT NULL
);
INSERT INTO tb3 (uName) VALUES ('qcy');
INSERT INTO tb3 (uName) VALUES (''); -- 可以!
-- INSERT INTO tb3 (uName) VALUES (null); -- 不可以!
SELECT * FROM tb3;
4. 外键约束
-- 部门表
CREATE TABLE dept (
dId INT PRIMARY KEY AUTO_INCREMENT,
dName VARCHAR(64)
);
INSERT INTO dept (dName) VALUES ('财务部');
INSERT INTO dept (dName) VALUES ('科技部');
-- 雇员表
CREATE TABLE employee (
eId INT PRIMARY KEY AUTO_INCREMENT,
eName VARCHAR(64),
dId INT REFERENCES dept(dId) -- 只这样做,尽管这样不会报错!
-- 但是!外键没有搭起来!
);
INSERT INTO employee (eName, dId) VALUES ('qcy',3); -- 竟然可以添加一个3进去
DESC employee; -- 看不见外键
SELECT * FROM employee; -- 根本就没有把外键约束建立起来!
-- 要在表级建外键
-- constraint 外键名称_FK foreign key(从表的外键列) references 主表名称(外键指向从表的哪一列);
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
eId INT PRIMARY KEY AUTO_INCREMENT,
eName VARCHAR(64),
-- dId INT REFERENCES dept(dId),
dId INT,
CONSTRAINT emp_FK FOREIGN KEY (dId) REFERENCES dept(dId)
);
SHOW CREATE TABLE employee;
DESC employee;
SELECT * FROM dept;
INSERT INTO employee (eName,dId) VALUES ('qcy',2);
INSERT INTO employee (eName,dId) VALUES ('qcy2',1);
INSERT INTO employee (eName,dId) VALUES ('qcy3',3);
SELECT * FROM employee;
SELECT eId, eName, dName FROM employee e, dept d
WHERE e.dId = d.did ORDER BY eId ASC;
DESC employee;
-- “外键”约束也可以references to 本表中的某一列。
CREATE TABLE producttype(
id INT PRIMARY KEY,
catagory VARCHAR(32),
parentId INT,
CONSTRAINT type_fk FOREIGN KEY (parentid) REFERENCES producttype(id));
INSERT INTO producttype VALUES(1,'电器',NULL);
INSERT INTO producttype VALUES(2,'电冰箱',1);
INSERT INTO producttype VALUES(3,'电视机',1);
SELECT * FROM producttype WHERE parentId = 1;
advanced 分页
select * from table_name limit offset, N;
-- offset 偏移量
-- N 要取几条记录
通常应用软件开发的时候,会指定一页显示多少条记录pageSize,查询的时候,要查询一共多少条rowCount
获取某一页的信息,有一个页码参数pageNow
pageCount = (rowCount - 1) / pageSize + 1;
SELECT * FROM student LIMIT 偏移量为((pageNow-1) * pageSize), 要取出的记录数是 pageSize;
- MySQL(6):约束
- MySQL(五)数据约束
- (Mysql 三)mysql的约束
- Mysql约束
- Mysql约束
- mysql约束
- MySQL约束
- mysql约束
- mysql约束
- mysql约束
- mysql约束
- MYSQL约束
- MySQL约束
- MySQL约束
- MySQL---约束
- MySQL 约束
- [Mysql] 约束
- MySQL-约束
- iOS第三方登录 微信登录 第三方登录微信详解AF3.0
- C++期末复习知识点
- AJAX
- const
- yii2框架-yii2文档资料整理(一)
- MySQL(6):约束
- jQuery——层叠选择器
- UVA1585
- FPGA 学习之路(四) modesim仿真方法
- iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
- 输入框被限制效果,只能输入指定类型的数据
- 盒式布局栗子
- http协议之request案例二:防止非法链接
- Activity的启动模式(LaunchMode)