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:连接查询比较

 

posted @ 2021-12-26 17:34  这题我不会  阅读(72)  评论(0)    收藏  举报