数据库之 MySQL --- 数据处理 之 表的约束与分页(七)

个人博客网:https://wushaopei.github.io/    (你想要这里多有)


    1、约束 :为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制     

​  

    NOT NULL 非空约束,规定某个字段不能为空
    UNIQUE  唯一约束,规定某个字段在整个表中是唯一的
    PRIMARY KEY  主键(非空且唯一)
    FOREIGN KEY  外键
    CHECK  检查约束
    DEFAULT  默认值   

    约束分类 :列级约束 vs 表级约束

       约束的填加的方式 :

               1.创建表的时候
               2.修改表的时候

【1】not null 非空约束,规定某个字段不能为空

CREATE TABLE emp(
emp_id INT NOT NULL, -- 列级约束
emp_name VARCHAR(20)
)

DESC emp
SELECT * FROM emp
INSERT INTO emp(emp_id,emp_name) VALUES(1,'aaaa')
INSERT INTO emp(emp_id) VALUES(2)
DELETE FROM emp

【2】修改表的时候添加约束

ALTER TABLE emp
MODIFY emp_name VARCHAR(20) NOT NULL

【3】UNIQUE  唯一约束,规定某个字段在整个表中是唯一的


CREATE TABLE emp2(
emp_id INT UNIQUE,
emp_name VARCHAR(20)

)

DESC emp2
SELECT * FROM emp2
INSERT INTO emp2(emp_id,emp_name) VALUES(3,'aaaa')
INSERT INTO emp2(emp_id,emp_name) VALUES(4,'aaaa')

CREATE TABLE emp3(
emp_name VARCHAR(20),
emp_password VARCHAR(20)
)

DROP TABLE emp3

【4】 将用户名和密码看成是一组,组和组 之间不能相同

ALTER TABLE emp3
ADD UNIQUE (emp_name,emp_password)

【5】添加约束: uk_name_pwd索引

ALTER TABLE emp3
ADD CONSTRAINT uk_name_pwd UNIQUE (emp_name,emp_password);

【6】删除约束:删除约束

ALTER TABLE emp3
DROP INDEX uk_name_pwd;

DESC emp3
SELECT * FROM emp3
INSERT INTO emp3(emp_name,emp_password)VALUES('aaaa','12234')
INSERT INTO emp3(emp_name,emp_password)VALUES('bbbb','12344')

【7】  PRIMARY KEY  主键(非空且唯一)
           一个表中只能有一个主键 (可以将多个列进行组合成primary key)

CREATE TABLE emp4(
emp_id INT PRIMARY KEY,
emp_name VARCHAR(20)
)

INSERT INTO emp4(emp_id,emp_name)VALUES(2,'aaa')


CREATE TABLE emp5(
emp_id INT,
emp_name VARCHAR(20),

【8】 表级约束

CONSTRAINT rn_emp_id PRIMARY KEY(emp_id,emp_name)
)

DESC emp5

【9】FOREIGN KEY  外键 外键约束

 员工表

    注意 :1.deps叫做主表,emps叫做从表
           2.先创建主表,再创建从表
           3.外键关联的那个列必须是主键
           4.插入数据,应该先插入到主表,再插入到从表

CREATE TABLE emps(
emps_id INT PRIMARY KEY,
emps_name VARCHAR(20),
deps_id INT,
FOREIGN KEY(deps_id) REFERENCES deps(deps_id)
)

-- 部门表
CREATE TABLE deps(
deps_id INT PRIMARY KEY,
deps_name VARCHAR(20)
)

DROP TABLE deps
DESC deps
DESC emps

【10】 插入数据

INSERT INTO deps VALUES(10,'hr')
INSERT INTO emps VALUES(1,'aa',10)

【11】 查看表的索引

SHOW INDEX FROM emp3

【12】 check : 检查约束
            -- mysql无效,orcal有效

CREATE TABLE temp(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT CHECK(age>20),
PRIMARY KEY(id)
);

INSERT INTO temp VALUES(1,'aa',10)
SELECT * FROM temp


 【13】  defult : 可以设置默认值

CREATE TABLE temp2(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT DEFAULT 20,
PRIMARY KEY(id)
);
INSERT INTO temp2(id,NAME) VALUES(1,'aa')

SELECT * FROM temp2


【14】   AUTO_INCREMENT : 自增长

CREATE TABLE n(
n_id INT PRIMARY KEY AUTO_INCREMENT,
n_name VARCHAR(20)
)

INSERT INTO n(n_name) VALUES('aa')
DELETE FROM n

SELECT * FROM n

【15】  limit  分页 :

SELECT * FROM employees LIMIT 0,20 -- 0从哪一条数据开始, 20偏移量
 
 
    (当前页数-1)*每页条数,每页条数
    SELECT * FROM employees LIMIT ((当前页数-1)*每页条数),(每页条数)

 

posted @ 2019-10-24 16:19  维宇空灵  阅读(270)  评论(0编辑  收藏  举报