排序 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 和 AVG (自动过滤器)
当需要纵向求和使用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);
什么是数据库?数据库的作用想学数据库必看 (3)数据库操作 排序, 聚合函数 ,分组查询,分页查询,模糊查询,数据完整性
最新推荐文章于 2024-05-06 17:15:42 发布