zoukankan      html  css  js  c++  java
  • SQL查询-约束-多表


    一.SQL语句查询
         1.聚合函数
             COUNT()函数,统计表中记录的总数量
             注:COUNT()返回的值为Long类型;可通过Long类的intValue()方法转为int类型
             格式:
                 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;
             补充:
                 TOP 5: SQL Sevser: SELECT TOP 5
                 ROWNUM <= 5: ORACLE: WHERE ROWNUM <= 5
                 FETCH 5 ROWS ONLY: DB2

    二.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 表名;这种方式;

  • 相关阅读:
    Leetcode Reverse Words in a String
    topcoder SRM 619 DIV2 GoodCompanyDivTwo
    topcoder SRM 618 DIV2 MovingRooksDiv2
    topcoder SRM 618 DIV2 WritingWords
    topcoder SRM 618 DIV2 LongWordsDiv2
    Zepto Code Rush 2014 A. Feed with Candy
    Zepto Code Rush 2014 B
    Codeforces Round #245 (Div. 2) B
    Codeforces Round #245 (Div. 2) A
    Codeforces Round #247 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7137582.html
Copyright © 2011-2022 走看看