【1】
最近发现mysql的约束语句忘记的差不多了,在学习mybatis时才发现,自己几乎除了mysql基础语句,以他的已经抛之脑后了,今天就复习一下
【2】
1. 先复习一下sql的完整语句
select 字段列表 from 表名 where 条件 Group by 分组字段 Having 分组后条件 Order by 排序 limit 分页限定
【3】
1.多个字段查询
Select 列名,列名 from 表名;
2.去除某一列重复的数据
select distinct 列明 from 表名;
3.计算列的和,如果两个列都是数字类型,那么可以相加后查询
例如:select id,name,salary,allowance,salary+ifunll(allowance,0) from emp;
注意:这里的ifnull是为了防止allowance为空。
4.起别名操作,在列名后加上as+新名字
【3】排列查询
1.语法:order by 排列字段1 排列方式,排列字段2 排列方式.......
2.排列方式 ①ASC升序,默认。②DESC降序
举例:SELECT * FROM account ORDER BY ID DESC;
【4】聚合函数
1.count:计算个数,一般选择非空的主键或者*
2.max:最大值
3.min:最小值
4.avg:平均值
举例:SELECT AVG(ID) FROM account
【5】分组查询
1.group by
2.举例
按照性别分组。分别查询男、女同学的数学平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
【6】分页查询
1.limit 开始的索引,每页查询的条数;
2.举例
每页分成3份,从哪条开始查的公式:(当前页-1)*每页的份数
SELECT * FROM student LIMIT 0,3; -- 第1页
SELECT * FROM student LIMIT 3,3; -- 第2页
SELECT * FROM student LIMIT 6,3; -- 第3页
【7】外键约束,这里唯一约束,非空约束,主键约束就不写了
1.foreign key,让表于表产生关系,从而保证数据的正确性。
2.语法
创建外键表
create table 表明(
外键列...,
外键列...,
constraint 外键名称 foreign key(外键列名称) references 主表名称 (主表列名称)
)
这里外键名称随便起
3.创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
4. 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
【8】内连接查询
1.只有两个表相匹配的行才能在结果集中出现
2.显式内连接语句
inner可以省略
* SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;
* SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`;
3.隐式内连接查询
SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
SELECT ,emp.gender, FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
【9】外连接查询
1.左外连接,就是展示左表的所有数据,加上右表的对应数据
SELECT t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;、
2.右外连接,就是展示右表的所有数据,加上左表的对应数据
SELECT * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;
















