• 2018年3月14日学习总结


    数据约束

    1.默认值

    CREATE TABLE student(
    
        sid INT,
    
        sname VARCHAR(20),
    
        ssex VARCHAR(5),
    
        address VARCHAR(100) DEFAULT '山东淄博'
    
    )
    
    INSERT INTO student(sid,sname,ssex)
    
    VALUES(1,'张三','');
    
    INSERT INTO student VALUES(2,'李四','','山东济南');
    
    SELECT * FROM student;
    
    DROP  TABLE student;

    设置山东淄博为默认值,没有添加值的时候默认显示山东淄博,但是如果下面字段添加了值则显示当前添加的值,允许添加值为null。

    2.非空

    CREATE TABLE student(
    
     
    
        sid INT NOT NULL,
    
        sname VARCHAR(20) NOT NULL,
    
        ssex VARCHAR(5) NOT NULL,
    
        address VARCHAR(100)
    
     
    
    )

    3.唯一约束

    CREATE TABLE student(
    
     
    
        sid INT UNIQUE,
    
        sname VARCHAR(20),
    
        ssex VARCHAR(5),
    
        address VARCHAR(20)
    
    )

    唯一字段可以插入null,唯一约束对null不起作用

    如果在设置了唯一的字段名中插入的字段相同,出现错误

    4.主键(非空+唯一)

    不能为空,只能有一个,相当于身份证

    CREATE TABLE student(
    
     
    
        sid INT PRIMARY KEY,
    
        sname VARCHAR(20),
    
        ssex VARCHAR(5),
    
        address VARCHAR(20)
    
     
    
    )

    如果重复或者为null ,会出现错误

    5.自增长

    是在主键基础上实现自增长

    CREATE TABLE student(
    
     
    
        sid INT PRIMARY KEY AUTO_INCREMENT,
    
        sname VARCHAR(20),
    
        ssex VARCHAR(5),
    
        address VARCHAR(20)
    
     
    
    )
    
    INSERT INTO student(sname,ssex,address) VALUES('张三','','山东淄博');
    
    sid自动增长,从0开始
    
     
    
    CREATE TABLE student(
    
     
    
        sid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
    
        sname VARCHAR(20),
    
        ssex VARCHAR(5),
    
        address VARCHAR(20)
    
     
    
    )

    零填充,当数字不满4位时,其他位数用零进行填充

    Delete from student清空表的时候只删除数据,删除不了约束,当再添数据时,会出现下面的情况

    TRUNCATE TABLE student;清空表的时候可以删除数据和表约束,当再次添加数据时,重新自增长

    6.外键

    CREATE TABLE emp(
    
        eid INT PRIMARY KEY AUTO_INCREMENT,
    
        ename VARCHAR(20) NOT NULL,
    
         deptid INT
    
         CONSTRAINT fk_deptid FOREIGN KEY(deptid)
    
    定义一个外键名
    
         REFERENCES dept(did)
    
     )

    没有设置外键的是主表,设置外键的是副表,先插入主表的数据

    注意:

                         1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

                         2)主表的参考字段通用为主键

                         3)添加数据: 先添加主表,再添加副表

                         4)修改数据: 先修改副表,再修改主表

                         5)删除数据: 先删除副表,再删除主表

    7.级联操作

    CREATE TABLE emp(
    
        eid INT PRIMARY KEY AUTO_INCREMENT,
    
        ename VARCHAR(20) NOT NULL,
    
         deptid INT
    
         CONSTRAINT fk_deptid FOREIGN KEY(deptid) ON UPDATE CASCADE或者ON DELETE CASCADE
    
    定义一个外键名
    
         REFERENCES dept(did)
    
     )

    级联修改: ON UPDATE CASCADE

    级联删除: ON DELETE CASCADE

    将上面语句添加后可以修改或删除数据

    连接查询

    1. 1.     交叉连接

    SELECT * FROM tb1 CROSS JOIN tb2;不建议用

    1. 2.     内连接

    SELECT * FROM tb1 INNER JOIN tb2 ON tb1.f1=tb2.c1;用得较多

    筛选条件

    1. 3.     左外连接

    连接条件和内连接一样,内连接的结果基础上,加上左边表中所有不符合连接条件的数据,相应本应放右边表的字段的位置就自动补为“null”值。

    SELECT * FROM product LEFT JOIN product_type ON product.protype_id=product_type.protype_id;
    1. 4.     右外连接
    SELECT * FROM product right product_type ON product.protype_id=product_type.protype_id;
  • 相关阅读:
    Django(一)
    web 框架
    图片
    day16
    day 15
    day14 HTML CSS
    day12
    day11
    python IO多路复用,初识多线程
    python socket
  • 原文地址:https://www.cnblogs.com/jason111/p/8577976.html
Copyright © 2020-2023  润新知