zoukankan      html  css  js  c++  java
  • day57-mysql-五种约束和sql语句逻辑执行顺序

    二、sql语句逻辑执行顺序
            (7)     SELECT 
            (8)     DISTINCT <select_list>     去重复
            (1)     FROM <left_table>
            (3)     <join_type> JOIN <right_table>
            (2)     ON <join_condition>
            (4)     WHERE <where_condition>
            (5)     GROUP BY <group_by_list>
            (6)     HAVING <having_condition>
            (9)     ORDER BY <order_by_condition>  
            (10)    LIMIT <limit_number>
    
    三、五种约束:    
    1.外键约束:对两个表的关系进行一些约束。例如dept表里面有部门id,那么person表的部门id不能为空,否则无法一一对应。
        如果需要外键约束,最好创建表同时创建外键约束:
        create table person(dept_id int(11) DEFAULT NULL,
            CONSTRAINT fk_id FOREIGN key(dept_id) REFERENCES dept(did));
        
        已经创建表后,追加外键约束:
        添加外键:
            alter table person add CONSTRAINT fk_id FOREIGN key(dept_id) REFERENCES dept(did);
    
        删除外键
            alter table person DROP FOREIGN key fk_id
    
        注:插入数据时,先插入主表中的数据,再插入从表中的数据。
    
               删除数据时,先删除从表中的数据,再删除主表中的数据。
    
    
    2.唯一约束 -- UNIQUE,也叫唯一索引约束,id_name添加到设计表的索引那里。设置唯一约束之后,id和name无法重复,
             例如id是1,name是tom,那么将无法插入id是1,name是tom的值。
        create table t4(
                id int(10) not null,
                name varchar(255) ,
                unique id_name(id,name));
    
        ALTER table t4 add UNIQUE id_name(id,name) --表格创建之后添加唯一约束。
    
        alter table t4 DROP index id_name --删除
    
    3.默认值约束(defaultcreate table t5(
            id int(10) not null primary key,
            name varchar(255) default '张三');
    
        INSERT into t5 VALUES(3,DEFAULT),(4,DEFAULT);
        insert into t5(id) values(5),(6);
    
    4.非空约束
         关键字: NOT NULL ,表示 不可空. 用来约束表中的字段列
        create table t1(
                   id int(10) not null primary key,
                   name varchar(100) null );       
    
    5.主键约束
         用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。
        create table t2(id int(10) not null primary key); 
        注意: 主键这一行的数据不能重复且不能为空。
        
        还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识
        create table t3(
            id int(10) not null,
            name varchar(100) ,
            primary key(id,name));
    
        alter table t3 add primary key(id,name); --表格创建之后添加主键约束
    
    6.表与表之间关系
        1.一对多  ,一对一 ,多对多
    
    
    7.数据库设计三范式
        1.第一范式(确保每列保持原子性)
        2.第二范式(确保表中的每列都和主键相关)
  • 相关阅读:
    spring 之 AOP
    spring 之 动态代理
    为 NSDate 添加扩展类 判断时间
    iOS 日期相关总结
    iOS 请求出现 "Request failed: bad request (400)"
    NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) 解决办法
    poj-3302
    辽宁省赛——杨鲁斯卡尔专场-J
    辽宁省赛——杨鲁斯卡尔专场 -F
    zzuli训练赛_05_13-D
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/12257524.html
Copyright © 2011-2022 走看看