1.去除空值
-- 过滤空值 如果该值为null 当做0来处理 用 IFNULL 处理 去除空值
SELECT 字段1 , 字段2 ,字段1 + IFNULL(字段2,0) as total from 表名;
2.排序 ORDER BY
降序 desc
查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序
SELECT * from 表名 ORDER BY 字段名 desc ;
升序 asc 一般默认为升序
SELECT * from 表名 ORDER BY 字段名 asc;
3.聚合函数 sum avg max min count
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
查询佣金的 记录数 count(字段) 查询的是不为空 的 记录数
select count(字段名) from 表名;
统计月薪与佣金之和大于2500元的人数:
select count(*) from 表名 where 字段 + IFNULL(字段,0) > 2500;
查询薪金综合
select sum(字段) from 表名;
查询所有雇员月薪和,以及所有雇员佣金和:
SELECT sum(字段),sum(字段) from 表名;
统计所有员工平均工资
select AVG(字段 +IFNULL(字段,0)) from 表名;
5.分组查询 GROUP BY
查询每个部门的部门编号 和部门(按部门分组)工资和
注意分组查询时查询的字段必须是分组的
select deptno,sum(sal) from emp group by deptno;
查询每个部分门编号及人数
字段,COUNT(*)from 表名 GROUP BY 字段;
查询工资总和大于9000的部门编号以及工资和
HAVING 关键字是分组之后使用的筛选条件(能使用函数)
where 分组之前使用(不能使用函数)
SELECT 字段, 字段(字段) FROM 表名 GROUP BY 字段 HAVING sum(字段) > 9000;
6.分页查询
分页 查询 参数0 代表起始页 参数3 代表 每页显示数据 从第0条数据开始显示显示3条
SELECT * from emp LIMIT 0,3;
7.模糊查询
模糊查询
当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。
通配符:
_ 任意一个字符
%:任意0~n个字符
'%张%' '张_'
select * from emp where ename like 'w%';
select * from emp where ename like 'w_';
8.数据完整性
作用:保证用户输入的数据保存到数据库中是正确的。
确保数据的完整性 = 在创建表时给表中添加约束
完整性的分类:
实体完整性:
域完整性:
引用完整性:
1> . 实体完整性
即表中的一行(一条记录)代表一个实体(entity)
实体完整性的作用:标识每一行数据不重复。
约束类型: 主键约束(primary key) 唯一约束(unique) 自动增长列(auto_increment)
第一种添加方式:
CREATE TABLE student(
id int primary key,
name varchar(50)
);
第二种添加方式:此种方式优势在于,可以创建联合主键
CREATE TABLE student(
id 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 CONSTRAINT(添加约束)
ALTER TABLE student ADD CONSTRAINT
给主键添加自动增长的数值,列只能是整数类型
(注意数据被删除了 也会按照原来的数进行增长 不是主键也能添加自动增长列)
CREATE TABLE student(
Id int primary key auto_increment,
Name varchar(50)
);
2> 域完整性
域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较
域代表当前单元格
域完整性约束:非空约束(not null) 默认值约束(default)
1.1 非空约束:not null
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10)
);
1.2 默认值约束 default
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10) default ‘男’
);
默认约束 插入
3>引用完整性
外键约束:FOREIGN KEY
例:
CREATE TABLE student(
sid int pirmary key,
name varchar(50) not null,
sex varchar(10) default ‘男’
);
create table score(
id int,
score int,
sid int , -- 外键列的数据类型一定要与主键的类型一致
CONSTRAINT fk_score_sid foreign key (sid) references student(sid)
);
第二种添加外键方式。
ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id);