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 表名;这种方式;
SQL查询-约束-多表的更多相关文章
- Oracle表明明存在SQL查询数据提示表不存在异常
今天同事遇到一个很奇怪的问题,恢复了一个数据库,表明明存在,用PLSQL和sqlplus都试过了,SQL语句select * from 表名,查询数据,却提示表名不存在异常 然而,使用select * ...
- sql server sql查询数据库的表,字段,主键,自增,字段类型等信息
1.查询数据表的属性(名称.说明.是否主键.数据类型.是否自增) SELECT t1.name columnName,case when t4.id is null then 'false' else ...
- sql查询约束
写作业的时候发现书上竟然找不到查询约束的语句,百度搜了好久的资料,终于查询成功,在这里记录下来 主键约束 SELECT tab.name AS [表名], idx.name AS [主键名称] ...
- SQL查询--约束
在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看 约束是数据库用来确保数据满足业务规则的手段 约束的作用:定义规则.确保完整性 1. ...
- SQL查询——同一张表的横向与纵向同时比较
表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | nam ...
- sql记录去重(SQL查询或者删除表中重复记录)
.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...
- sql 查询所有数据库-表-表结构
--查询数据库中的所有数据库名: SELECT * FROM Master..SysDatabases ORDER BY Name --查询某个数据库中所有的表名: select * from sys ...
- SQL查询出一个表数据插入到另一个表里
下面两中方式都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的: 方式一 (select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建. selec ...
- 【Mysql】使用一条sql查询出库表结构信息
1.新建查询 将以下脚本粘贴进去 脚本如下: SELECT TABLE_SCHEMA 库名, TABLE_NAME 表名, COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA ...
随机推荐
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- 原生JS中unshift与shift
shift() 方法:shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值:用法:arrayObject.shift()如果数组是空的,那么 shift() 方法将不进行任何操作 ...
- selenium 点击页面链接测试
点击页面链接测试 http://www.51testing.com/html/21/n-862721.html 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口 ...
- java——static声明方法注意事项
在使用 static 类型声明的方法时需要注意的是:如果在类中声明了一 static类型的属性,则此属性既可以在非 static 类型的方法中使用,也可以在 static类型的方法中使用.但用 sta ...
- hdu1754(线段树单点替换&区间最值模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题意:中文题诶- 思路:线段树单点替换&区间最大值查询模板 代码: #include & ...
- Hyperledger Fabric 第一次安装
第一次安装fabric有很多坑.记录一下,主要跟版本问题. 参考的是http://www.cnblogs.com/aberic/p/7532114.html 这篇博客. 我用的阿里云centOs 7. ...
- 2017-9-9 NOIP模拟赛
站军姿 2bc*cosA=b^2+c^2-a^2 #include<cstdio> #include<cstdlib> #include<cmath> #inclu ...
- docker 使用数据库mysql
1. docker pull mysql 获取mysql镜像 2. docker images 查看镜像列表 3. docker run -itd -P mysql bash :启动mysql镜像 ...
- MySQL注释符号
今天在执行mysql语句时很奇怪为什么没有执行,查询后发现“-- ”是mysql的注释符号,不会执行的 mysql注释符有三种: 1.#... 2."-- ",注意--后面有一个 ...
- 2、CreateJS介绍-TweenJS
需要在html5文件中引入的CreateJS库文件是easeljs-0.7.1.min.js和tweenjs-0.5.1.min.js HTML5文件如下: <!DOCTYPE html> ...