• 查询-约束-多表



    一.SQL语句查询
         1.聚合函数
             COUNT()函数,统计表中记录的总数量
             注:COUNT()返回的值为long类型;
             格式:
                 SELECT COUNT(主键名) FROM 表名 WHERE 条件;
             MAX()函数,寻找最大值
             MIN()函数,寻找最小值
             SUM()函数,求和
             AVG()函数,求平均值
         2.排序查询
             ORDER BY
             默认升序(ASC)排列,降序关键字为:DESC
         3.分组查询
             以指定的列分组,默认只显示第一行纪录;通常该函数会配合聚合函数使用,很少单独使用.
             关键字:GROUP BY
             注意:
                 1)GROUP BY后的列名通常要在SELECT后出现;
                 2)分组对数据进行过滤需使用HAVING关键字;
                 3)SQL语句的固定顺序:SFWGHO;
                 4)HAVING仅对分组后的结果时行过滤;WHERE对原始表中的数据进行过滤.
         4.分页查询
             关键字:LIMIT m OFFSET n;
                 或者     LIMIT n, m;
                     m:每页显示的纪录数;
                     n:起始位置. n=(第几页-1)*m;
    二.SQL语句约束
         1.主键约束
         主键是一行记录的唯一标识,可以由多列组成,称为联合主键.
             特点:非空/唯一/不具有任何业务意义,仅为标识;
         关键字:PRIMARY KEY
         格式1:
             CREATE TABLE 表名(
                 主键名    数据类型(长度)    PRIMARY KEY,
                 列名2    .............
             );
         格式2:
             CREATE TABLE 表名(
                 列名1    数据类型(长度),
                 列名2...........,
                 PRIMARY KEY(列名1,列名2...) #联合主键
             );
         格式3:
             CREEATE TABLE 表名(
                 列名1    数据类型(长度),
                 列名2     ............
             );
             ALTER TABLE 表名 ADD CONSTRAINT 关系名称 PRIMARY KEY(列名);

        删除主键:
             ALTER TABLE    表名 DROP PRIMARY KEY;

        2.自动增长约束
             自动增长约束,只能用在整数类型的主键上;当向表中添加数据的时候 ,可以不指定主键的值,由mysql自动增长;
             关键字:AUTO_INCREMENT;
             注意:
                 1)如果一次添加数据值失败后,自动增长的主健值已使用,下次不再使用,可以人为设置下一次使用的增长的数据的值;
                 2)设置自动增长的值为100;
                     ALTER TABLE d AUTO_INCREMENT = 100;

        3.唯一约束
             关键字:UNIQUE
             删除格式:
                 ALTER TABLE 表名 DROP INDEX 列名;
                 ALTER TABLE 表名 MODIFY 列名 ....;

        4.非空约束
             关键字:NOT NULL
             删除格式:
                 ALTER TABLE 表名 MODIFY    列名 ...;

        5.默认值约束
             关键字:DEFAULT
             删除格式
                 ALTER TABLE 表名 MODIFY 列名...;

    四.多表
         1.一对多关系
         如果A表中的一条记录与B表中的多条记录相关,那么,A与B的关系就是一对多的关系,A称为主表,B称为从表;
         为保持两张表中有关系的数据的完整性与安全性,通常会设置外键;
         外键一定设计在从表中;外键的值保存的是主表中的主健的一个值;
        
         2.多对多关系
         如果A表中的一条记录与B表中的多条记录有关系,同时B表中的一条记录与A表中的多条记录也有关系,那么,A与B的关系,称为多对多的关系;
         多对多的关系必须使用第3张表,才能描述;第三张表也称为基表;
        
         3.一对一关系
         A表的数据与B表的数据一一对应,任何一方都可以作为主表也可以作为从表;实际开发中一对一关系通常会设计成一张;
         建表原则:
             外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一
             外键是主键:主表的主键和从表的主键,形成主外键关系
        
         4.外键
         格式:
             ALTER TABLE 从表 ADD CONSTRAINT 外键关系名称 FOREIGN KEY(从表中的列名) REFERENCE 主表(主键);
         删除外键:
             ALTER TABLE 从表 DROP FOREIGN KEY 外键关系名称;

    五.面试题:
    以下两种清空表的方式有什么区别:
    TRUNCATE TABLE 表名;
    DELETE FROM 表名;

    都可以清空表中的所有记录;
    TRUNCATE TABLE 表名;是先删除原来的表,再重新建立一张格式相同的新表,因此,会导致自定增长的主键的值,恢复到默认值;(默认值是1)
    DELETE FROM 表名;是将表中的纪录,逐条删除,不会改变原来的表中的主键的增长的值;
    当表中的纪录比较多的时候,建议使用TRUNCATE TABLE 表名;这种方式;

  • 相关阅读:
    ohmyzsh 更新失败(omz update error)
    连续变量的贝叶斯定理计算
    linux listen backlog
    linux fastcgi 与 phpfpm的区别
    linux netstat 命令详解
    linux dup与dup2
    DAY 233 python标准库
    DAY 231 Float问题
    DAY 232 python日期和时间
    DAY 234 python时间和日期
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7116697.html
Copyright © 2020-2023  润新知