zoukankan      html  css  js  c++  java
  • 数据库之 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)*每页条数),(每页条数)
  • 相关阅读:
    进位制 与成熟表示
    例题 3-6 环状序列
    -------------------开启我的手残之旅---------我就是喜欢写笔记-------咋滴啦?-----
    图的遍历---------开始开始-------o(∩_∩)o 哈哈
    -----------什么是图?------------
    并查集-----集合以及计算----
    ----堆----希望这是一个容易上手的工具--------
    kafka-docker----(how to setup http proxy in container??)
    FW: Dockerfile RUN, CMD & ENTRYPOINT
    telnet --- no route to host solution "iptables -F " in the target machine
  • 原文地址:https://www.cnblogs.com/wushaopei/p/11732875.html
Copyright © 2011-2022 走看看