什么是数据库?数据库的作用想学数据库必看 (3)数据库操作 排序, 聚合函数 ,分组查询,分页查询,模糊查询,数据完整性
2018-03-20 22:24
1076 查看
排序 order by 列名 asc (默认) desc 5.1 查询所有学生记录, 按年龄升序排序 SELECT * FROM stu ORDER BY sage; 或者 SELECT * FROM stu ORDER BY sage; 5.2查询所有学生记录,按照年龄降序排序 SELECT * FROM stu ORDER BY age DESC; 5.3 查询所有雇员 , 按月薪降序排序 , 如果月薪相同时,按编码升序排序 SELECT *FROM emp ORDER BY sal DESC,empno ASC ; 聚合函数 sum avg max min count 聚合函数是用来做纵向运算的函数; COUNT(); 统计指定列不为NULL的记录行数; MAX(); 计算指定列的最大值, 如果指定列是字符串类型,那么使用字符串排序运算; MIN();计算指定列的最小值 如果指定 列式字符串类型 那么使用字符串排序运算; SUM(); 计算指定列的数值和, 如果指定列类型不是数值类型, 那么计算结果为0; AVG();计算指定里的平均值,如果指定列类型不是数值类型,那么计算结果为0; 6.1 COUNT 当需要纵向统计时可以使用COUNT() 查询emp表中记录数: SELECT COUNT (*) AS CNOT FROM emp; 查询emp表中佣金的人数 SELECT COUNT (com) cnot FROM emp; 注意: 因为count()函数中给出的是comm列,那么只统计comm列非NULL的行数 查询emp表中月薪大于2500的人数; SELECT COUNT (*) FROM emp WHERE sal > 2500; 统计月薪与佣金之和大于2500元的人数: SELECT SOUNT (*) AS cont FROM emp WHERE sal +IFNULL (com,0)>2500; 查询有佣金的人数 有领导的人数; SELECT COUNT (comm),COUNT(mgr) FROM emp; 6.2 sum 和 AV 4000 G (自动过滤器) 当需要纵向求和使用sum()函数. 查询所有雇员月薪和: SELECT SUM(sal) FROM emp; 查询所有雇员月薪和 以及所有雇员佣金和; SELECT SUM (sal), SUM(comm)FROM emp; 统计所有员工平均工资; SELECT AVG(sal) FROM emp; 6.3 MAX和 MIN 查询最高工资 和最低工资: SELECT MAX(sal), MIN(sal)FROM emp; 7 分组查询 当需要分组查询时需要使用GROUP BY 子句 例如查询每个部门的工资和 , 这说明要使用部门来分组. 注意: 饭盒聚合函数同时出现的列名 一定要写在 group BY 之后 7.1 分组查询 查询每个部门的部门编号和每个部门的工资和;. SELECT deptno , SUM(sal) FROM emp GROUP BY depyno; 查询每个部门的部门编号以及每个部门的人数; SELECT deptno , COUNT(*) FROM emp GROUP BY deptno; 查询每个部门的部门编号以及每个部门工资大于1500的人数; SELECT deptno , COUNT(*) FROM emp WHRE sal >1500 GRUP BY deptno; 7.2 HAVING 子句 (分组后使用的条件) 查询工资总和大于9000的部门编号以及工资和 SELECT deptno , SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000; 注: having 与 where 的区别: 1.having是在分组后对数据进行过滤. where是在分组钱对数据进行过滤 2.having 后面可以使用聚合函数(统计函数) where后面不可以使用聚合函数. WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件, 那么这行记录不会参加分组, HAVING 是对分组后数据的约束 8. LIMIT LIMIT 用来限定查询结果的起始行,以及总行数 8.1查询5行记录,起始行从0开始SELECT * FROM emp LIMIT 0,5; 注意起始行从0 开始,即第一行开始; 8.2 查询10行记录, 起始行从3开始 SELECT *FROM emp LIMIT 3,10; 8.3分页查询 如果一页记录起始行为0 , 一共查询10行; 第二页记录起始行为10,一共查询10行 第三页记录起始行为20,一共查询10行 模糊查询 当想查询姓名中包含a字母的学生时就需要使用模糊查询了. 模糊查询需要使用关键字LIKE. 通佩符: 任意一个字符 %:任意0~n个字符 '%张%' '张_' 数据的完整性 作用: 保证用户输入的数据保存到数据库中是正确的. 确保数据的完整性 = 再创建表时给表中添加约束 Insert into student (id ,name,gender) values(null,'bbb','x'); student id name gender 1 wang m 2 Aaa x 完整性的分类: 实体完整性; 域完整性; 引用完整性; 1. 实体完整性 实体:即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用: 标识每一行数据不重复. 约束类型 : 主键约束(primary key) 唯一约束(unique) 自动增长列(auto_increment) --------------------------- 1.1主键约束 (primary key) 注:每个表中要有一个主键 特点 : 数据唯一 , 且不能为null 例: 第一种添加方式: CREATE TABLE student( in int, name varchar(50), primary key(id) ); 联合主键是一个主键 只要两个字段不完全一样 就可以 CREATE TABLE student( classid int , stuid int, name varchar(50), primary key (classid,stuid) ); 第三种添加方式 CREATE TABLE student( id int, name varchar(50) ); ADD CONSTRATNT (添加约束) ALTER TABLE student ADD CONSTRAINT PRIMARY KEY (id); ----------------------------- 1.2唯一约束(unique); 特点:数据不能重复.(可以有空值) CREATE TABLE student( Id int primary key, Name varchar(50) unique ); ----------------------------- 1.3 自动增长列(auto_increment 给主键添加自动增长的数值,列只能是整数类型 (注意数据被删除了 也会 按照原来的数进行增长 不是主键也能添加自动增长列) CREATE TABLE student( Id int primary key auto_increment, Name varchar(50) ); INSERT INTO student(name) values ('tom'); ----------------------------- 域完整性 域完整性的作用: 限制此单元格的数据正确, 不对照此列的其他单元格比较 域代表当前单元格 域完整性约束:非空约束(not null ) 默认值约束(default) 1.1非空约束: not null CREATE TABLE student( Id int primary key, Name varchar(50)not null, Sex varchar(10) ); INSERT INTO student values (1,'tom',null) 1.2 默认值约束 default CREATE TABLE student( Id int pirmary key, Name varchar(50) not null Sex varchar(10)default'男' ); 默认约束 插入的时候 给null 可以 会把 null 插入进去 自动增长的主键给 null 可以 会自动增长 insert into student1 values(1,'tom','女'); insert into student1 values(2,'jerry',default); Student sid name 1 wl 2 dp score id score sid 1 15 1 2 20 2 3 25 3 4 60 4 5 45 5 6 36 6 引用完整性 (参照完整性) 外键约束: FOREIGN KEY 例 : CREATE TABLE student( sid int pirmary key, name varchar(50) not null, sum varchar(10) default'man' ); CREATE TABLE SCORE ( Id int , score int, sid int, 外键的数据类型一定要与主 键的类型一致 CONSTRAINT fk_score_sid foreign key (sid) references student (sid) ); 第二种添加外键方式. ALTER TABLE score ADD CONSTRAINT fk stu score FOREIGN KEY(sid) REFERENCES stu(id);
相关文章推荐
- 【Oracle】day04_子查询_分页查询_DECODE_排序_集合操作_高级分组
- 什么是数据库?数据库的作用想学数据库必看 (2)数据库操作 库, 表,列
- 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法
- 数据库——MySQL(二)(增删查改、去重,分页、模糊查询、排序)
- 06-mysql中的查询(排序、聚合函数、分组、分页)(第二章)
- IOS-CoreData(增删改查、表关联、分页和模糊查询、多个数据库)
- 查询结果排序,多列排序,聚合函数,查询分组,筛选结果,select语句执行顺序
- 数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结
- thinkphp怎么like模糊查询数据库的信息curd操作
- C# MongoDB 查询,分组,聚合,排序,条件,分页
- 【原创】StreamInsight查询系列(八)——基本查询操作之分组排序
- jsp单页面数据库查询模板:支持分页、排序、简单搜索、设置每页显示页数功能
- 终极解决sqlserver、MySQL、Oracle三种数据库模糊查询语句,ssm框架mybatis操作数据库
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- [转]数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。
- 数据库(5)聚合、分组、排序、分页
- 终极解决sqlserver、MySQL、Oracle三种数据库模糊查询语句,ssm框架mybatis操作数据库
- C# MongoDB 查询,分组,聚合,排序,条件,分页
- [数据库]MongoTemplate之分组分页复合条件查询
- Android将sqlite数据库保存到SD卡以及数据库增删改查操作,模糊查询like or