zoukankan      html  css  js  c++  java
  • MySQL数据约束和关联查询

     1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null。

    2 非空 not null:在建表的时候字段后使用  not null。

    非空字段必须赋值,并且不能是null。

    3 唯一:主键和unique 字段必须唯一。

    注意:unique 对 null 值不起作用。只对有值的字段数据进行约束。

    4 主键primary key:就是not null 和 nuique的联合。

    5 自增长auto_increment:

    6 外键:约束两张表,主要是解决数据冗余。

    alter table tablename1

    add foreign key column name1

    references tablename2 column name2

    on delete restrict/cascade/set null;

    在建表的时候创建外键,在添加完字段后 foreign key(column ame) reference table name2  (column name2) on delete cascade/restrict/set null。

    注意:

    1)被约束的表为附表,约束别人的表是主表,外键设置在附表上。

    2)添加数据是先添加主表数据,再添加附表数据

    3)不能直接修改主表,先修改附表数据。

    4)删除数据,先删除附表数据,再删除主表数据。

    二、数据库表的设计原则,三大范式

    第一范式:要求表中的每个字段必须是不可分割的独立单元,第一范式(确保每列保持原子性)

    第二范式:要求每张表表达一个思想,表的每个字段都和主键有依赖,第二范式(确保表中的每列都和主键相关)

    第三范式:要求每张表主键之外的每个字段都只能和主键有直接依赖关系,第三范式(确保每列都和主键列直接相关,而不是间接相关)

    三、关联查询

    查询规则:1)确定查询那些表 2)确定查询哪些字段 3)表与表之间的连接条件

    例如:

    表1: student

    CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    sname VARCHAR(20) NOT NULL,
    sgender CHAR(2) NOT NULL,
    sage SMALLINT NOT NULL,
    sphone VARCHAR(11),
    address VARCHAR(400));

    表2:englishScore

    CREATE TABLE englishScore(
    id INT PRIMARY KEY AUTO_INCREMENT,
    sscore SMALLINT,
    sid INT NOT NULL,
    FOREIGN KEY(sid) REFERENCES student(id) ON DELETE CASCADE
    );

    查询学生姓名和成绩

    3.1 内连接查询,两张表或多张表的连接条件都非空

    SELECT sname, sscore
    FROM student S, englishScore ES
    WHERE S.id = ES.sid;

    相当于是使用下面语句执行查询

    SELECT sname, sscore
    FROM student S
    INNER JOIN englishScore ES
    ON S.id = ES.sid;

    3.2 左外连接

    SELECT S.sname, ES.sscore
    FROM student S
    LEFT JOIN englishScore ES
    ON S.id = ES.sid;

    3.3 右外连接

    SELECT S.sname, ES.sscore
    FROM student S
    RIGHT JOIN englishScore ES
    ON S.id=ES.sid;
  • 相关阅读:
    教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
    那些年,我们在Django web开发中踩过的坑(一)——神奇的‘/’与ajax+iframe上传
    刷题记录:[De1CTF 2019]Giftbox && Comment
    刷题记录:[强网杯 2019]Upload
    刷题记录:[XNUCA2019Qualifier]EasyPHP
    [RoarCTF 2019]simple_uplod
    [RoarCTF 2019]Online Proxy
    [RoarCTF]Easy Java
    [RoarCTF]Easy Calc
    刷题记录:[DDCTF 2019]homebrew event loop
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6672387.html
Copyright © 2011-2022 走看看