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

SQL查询-约束-多表的更多相关文章

  1. Oracle表明明存在SQL查询数据提示表不存在异常

    今天同事遇到一个很奇怪的问题,恢复了一个数据库,表明明存在,用PLSQL和sqlplus都试过了,SQL语句select * from 表名,查询数据,却提示表名不存在异常 然而,使用select * ...

  2. sql server sql查询数据库的表,字段,主键,自增,字段类型等信息

    1.查询数据表的属性(名称.说明.是否主键.数据类型.是否自增) SELECT t1.name columnName,case when t4.id is null then 'false' else ...

  3. sql查询约束

    写作业的时候发现书上竟然找不到查询约束的语句,百度搜了好久的资料,终于查询成功,在这里记录下来 主键约束 SELECT   tab.name AS [表名],   idx.name AS [主键名称] ...

  4. SQL查询--约束

    在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看   约束是数据库用来确保数据满足业务规则的手段 约束的作用:定义规则.确保完整性   1. ...

  5. SQL查询——同一张表的横向与纵向同时比较

    表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | nam ...

  6. sql记录去重(SQL查询或者删除表中重复记录)

    .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...

  7. sql 查询所有数据库-表-表结构

    --查询数据库中的所有数据库名: SELECT * FROM Master..SysDatabases ORDER BY Name --查询某个数据库中所有的表名: select * from sys ...

  8. SQL查询出一个表数据插入到另一个表里

    下面两中方式都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的: 方式一 (select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建. selec ...

  9. 【Mysql】使用一条sql查询出库表结构信息

    1.新建查询 将以下脚本粘贴进去 脚本如下: SELECT TABLE_SCHEMA 库名, TABLE_NAME 表名, COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA ...

随机推荐

  1. C#支持从自定义日期时间格式到DateTime类型

            /// <summary>         ///         /// </summary>         /// <param name=&quo ...

  2. WPF 后台触发 Validate UI‘s Element

    wpf中有validateRule类, 用于界面元素的验证, 如何后台去控制validateRule呢? 1. UI层要binding写好的ValidateRule,分为Binding和MultiBi ...

  3. git学习 7 git每次push都输入用户名 密码

    用如下命令改成SSH的方式 git remote rm origin git remote add origin git@github.com:username/repository.git git ...

  4. lwip【4】 lwIP配置文件opt.h和lwipopts.h初步分析之一

    在这里先说一下这两个配置lwip协议栈文件opt.h和lwipopts.h的关系:          opt.h是lwip"出厂"时原装的配置文件,它的作者是瑞士科学院的Adam等 ...

  5. win10 安装nodejs,报错there is a problem in the windows installer package

    今天重装了win10系统,开始安装各种软件,装到node的时候我崩溃了,报错there is a problem in the windows installer package··· 度娘了各种安装 ...

  6. Hibernate&nbsp;Session的delete()方法

    本文介绍Hibernate Session的delete()方法.delete()方法用于从数据库中删除与Java对象对应的记录.对应游离对象和持久化对象,delete语句会做出不同的反应. AD:  ...

  7. 使用BIND安装智能DNS服务器(三)---添加view和acl配置

    智能DNS的配置主要修改named.conf文件,利用view和acl来实现. acl文件内容,这里只列出一部分,具体详细的可以参考这个网址 纯真IP库,给出了十分详细的IP地址,下载安装后,打开软件 ...

  8. 百度地图API图标、文本、图例与连线

    百度地图开放平台功能强大,使用简单,为地图的自定义提供了非常方便的途径! 本文以绘制一张全国机器辐射图为例记录其基本使用方法,效果如下图: 图中包括了带图标和文本的标注,连线以及图例. 1.关于坐标 ...

  9. 洛谷P2647 最大收益

    P2647 最大收益 题目描述 现在你面前有n个物品,编号分别为1,2,3,……,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的 ...

  10. 使用htmlparser爬虫技术爬取电影网页的全部下载链接

    昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...