JAVA_DAY21:使用DQL操作数据库,函数,笛卡尔积,多表查询
1:DQL是什么
Data Query Language 简称DQL,数据库查询语言, 关键字为SELECT。
2:语法

3:基本用法

4:as

5:DISTINCT

6:where
where条件语句后一般跟条件语句

7:排序

8:函数
1:统计数量

2:统计和
sum 统计某一列数据的和
语法:select sum(列名) from 表名;
1:统计一个班级数学总成绩?
2:统计一个班级语文、英语、数学各科的总成绩
3:求平均值
avg 统计某一列平均值
select avg(列名) from 表名;
1:求一个班级数学平均分?
2:求一个班级总分平均分?
4:求最值
max 统计一列最大值 min 统计一列最小值
求班级最高分和最低分(数值范围在统计中特别有用)
3:多表查询(连接查询)
在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询
最终需要查询的数据来源于不同的表中时,这个时候需要考虑使用连接查询;
一.emp员工表
drop table if exists emp; create table if not exists emp( empno int primary key auto_increment, ename varchar(10) not null, job varchar(20), salary double(8,2), mgr int(10), bonus double(6,2), hiredate date, deptno int(10) );
一.插入数据
insert into emp values(null,'mary','sales',7000,6,1000,'2014-1-1',10); insert into emp values(null,'lily','sales',6000,1,800,'2014-5-1',10); insert into emp values(null,'tom','sales',5000,1,4000,'2014-3-1',10); insert into emp values(null,'james','account',8000,6,null,'2014-2-1',20); insert into emp values(null,'scott','teaching',8000,6,3000,'2014-1-20',30); insert into emp values(null,'tom','BOSS',38000,null,null,'2013-1-20',30); insert into emp values(null,'kitty','teaching',7000,5,700,'2014-5-20',30); insert into emp values(null,'kitty','teaching',6000,5,500,'2014-6-20',30); insert into emp values(null,'green','analyst',15000,6,1000,'2014-2-20',40); insert into emp values(null,'brown','analyst',12000,9,7000,'2014-4-20',40); insert into emp values(null,'danis','department',3000,6,800,'2014-3-4',50); insert into emp values(null,'brown','department',1800,11,600,'2014-4-20',50); insert into emp values(null,'smith','department',1200,11,500,'2014-5-20',50);
一.部门表 dept
drop table if exists dept; create table if not exists dept( deptno int primary key, dname varchar(30), dlocation varchar(255) ); insert into dept values(10,'teaching','北京'); insert into dept values(20,'analyst','武汉'); insert into dept values(30,'department','上海'); insert into dept values(40,'sales','郑州'); insert into dept values(50,'account','广州');
1:笛卡尔积介绍

对于数据库中 针对于两张表的记录数的所有记录进行匹配。
将A表中每条记录 与 B表中每条记录进行 匹配 获得笛卡尔积
select * from emp;
select * from dept;
select * from emp,dept; 显示结果就是笛卡尔积
笛卡尔积结果 就是 两个表记录乘积 例如A 表3条 B表4条
注意: 笛卡尔积结果是无效的,必须从笛卡尔积中选取有效的数据结果 !!!找到他们的关联关系
因为记录所有的显示出来 而我们需要的往往是有效的数据。。。。

2:内连接查询
关键字:inner join --- on
内链接查询的数据和等值关联查询得到的数据是一样的,是2中表中共有的数据;
语句:select * from a_table a inner join b_table b on a.a_id = b.a_id;
3:外连接查询
左外连接 - 以左表为基准表,左表的所有的数据全部会显示,不管右表是否有匹配项
关键字:left [outer] join on
语句:SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;
右外连接
关键字:right join on / right outer join on
语句:SELECT * FROM a_table a right outer join b_table b on a.a_id = b.b_id;
4:连接查询比较


浙公网安备 33010602011771号