当前位置: 首页 > news >正文

网站开发数据流程图怎么画城市建设规划网站

网站开发数据流程图怎么画,城市建设规划网站,c2c平台怎么下载,广告公司网站官网实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE 来演示如何进行多表查询。表结构的代码以及插入的数据如下: DROP database IF EXISTS scott; CREATE database IF NOT EXIST…
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE 来演示如何进行多表查询。表结构的代码以及插入的数据如下:
DROP database IF EXISTS `scott`;
CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE `scott`;DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (`deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',`dname` varchar(14) DEFAULT NULL COMMENT '部门名称',`loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (`empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',`ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',`job` varchar(9) DEFAULT NULL COMMENT '雇员职位',`mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号',`hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',`sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',`comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',`deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号'
);DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade` (`grade` int(11) DEFAULT NULL COMMENT '等级',`losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',`hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into dept (deptno, dname, loc)
values (20, 'RESEARCH', 'DALLAS');
insert into dept (deptno, dname, loc)
values (30, 'SALES', 'CHICAGO');
insert into dept (deptno, dname, loc)
values (40, 'OPERATIONS', 'BOSTON');insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);insert into salgrade (grade, losal, hisal) values (1, 700, 1200);
insert into salgrade (grade, losal, hisal) values (2, 1201, 1400);
insert into salgrade (grade, losal, hisal) values (3, 1401, 2000);
insert into salgrade (grade, losal, hisal) values (4, 2001, 3000);
insert into salgrade (grade, losal, hisal) values (5, 3001, 9999);

可以看到有三张表部门表dept,员工表emp,工资等级表salgrade。

多表查询

在MySQL中,多表查询是指在一个查询中涉及到两个或更多的表。这种查询通常用于从多个相关的数据表中检索数据。多表查询的关键在于使用连接条件来关联不同表中的数据。

内连接

内连接(Inner Join)是一种SQL操作,用于从两个或多个表中检索相关数据。内连接通过在连接条件满足的情况下返回两个表中匹配的行。内连接仅返回那些在连接条件下有匹配的行,其他不匹配的行将被排除。

select 列名1,列名2 from 表名1 inner join 表名2 on 条件;

以上为内连接的标准写法,还有以下写法和内连接得到的效果一致,更简单。

select 列名1,列名2... from 表名1,表名2... where 条件;
显示雇员名、雇员工资以及所在部门的名字
  因为上面的数据来自 EMP DEPT 表,因此要联合查询
写法一
select emp.ename,emp.sal,dept.dname from emp inner join dept on emp.deptno=dept.deptno;

写法二

select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno;

左外连接

select 列名1,列名2... from 表名1 left join 表名2 on 条件;

左外连接(Left Join)是一种SQL操作,用于从两个或多个表中检索相关数据。左外连接返回左表中的所有记录,以及右表中与左表匹配的记录,如果右表中没有匹配项,左表的记录仍然会被返回,但右表的字段会显示为 NULL。

现在创建两张表学生表stu和成绩表exam,并插入数据,其代码如下:

create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);
查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
select * from stu left join exam on stu.id=exam.id;

右外连接

右外连接(Right Join)是一种SQL操作,用于从两个或多个表中检索相关数据。右外连接返回右表中的所有记录,以及左表中与右表匹配的记录。如果左表中没有匹配项,左表的字段会显示为 NULL。

select 列名1,列名2... from 表名1 right join 表名2 on 条件;
stu 表和 exam 表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要
显示出来
select * from stu right join exam on stu.id=exam.id;

自连接

自连接是一种特殊的多表查询,可以理解为自己与自己之间进行多表查询。

select 列名1,列名2... from 表名 as 别名1, 表名 as 别名2;
显示上级领导的编号和姓名(mgr 是员工领导的编号 --empno
select distinct leader.empno,leader.ename from emp leader,emp worker where worker.mgr=leader.empno;

子查询

子查询(Sub Query)是指在一个查询语句中嵌套另一个查询语句,其中内层查询的结果作为外层查询的条件或数据来源。子查询也被称为嵌套查询或内层查询,而包含子查询的查询语句被称为外层查询或父查询。

单行子查询

select ... from ... where 列名 = (select ... from ...);
显示 SMITH 同一部门的员工
select * from dept=(select deptno from emp where ename='smith');

多行子查询

select ... from ... where 列名 in (select ... from ...);
select ... from ... where 列名 比较操作符 all(select ... from ...);
select ... from ... where 列名 比较操作符 any(select ... from ...);

在单行子查询中,子查询的结果是单行数据,所以能进行=。如果是多行查询,那么此时就不能进行判等,而是使用inallany这三个关键字,来进行范围判断。

in:判断是否是多行数据中的一个

in关键字:查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10
己的
select ename,job,sal,deptno from emp where job in (select job from emp where deptno=10) and deptno!=10;

all:判断是否所有数据都满足条件
all关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select ename,job,sal,deptno from emp where sal > all (select sal from emp where deptno=30);

any:判断是否有数据满足条件
any关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门
的员工)
select ename,job,sal,deptno from emp where sal > any (select sal from emp where deptno=30);

多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。
select ... from ...
where (列1, 列2...) 逻辑运算符 (select 列1, 列2... from ...);

查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人

select ename from emp where (deptno,job)=(select deptno,job from emp where ename='smith') and ename!='smith';

from子句中使用子查询

子查询语句出现在 from 子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。
select ... from (select ... from ...) as 别名 where ...;
1.显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
select ename,deptno,sal,format(asal,2) from emp,(select deptno de,avg(sal) asal from emp group by deptno) tmp where sal>asal and deptno=de;

2.查找每个部门工资最高的人的姓名、工资、部门、最高工资
select ename,sal,emp.deptno from emp,(select deptno,max(sal) msal from emp group by deptno) tmp where sal=msal and emp.deptno=tmp.deptno;

3.显示每个部门的信息(部门名,编号,地址)和人员数量

合并查询

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 unionunion all。

union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

select ... from ... union select ... from ...;
将工资大于 2500 或职位是 MANAGER 的人找出来
select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='manager';

union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
select ... from ... union all select ... from ...;

将工资大于2500或职位是MANAGER的人找出来

select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='manager';

http://www.yayakq.cn/news/205575/

相关文章:

  • 本地网站建设视频北京市建设厅官方网站
  • 网站制作软件 aws企业网站源码怎么用
  • 东直门小学的网站建设wordpress防下载
  • 网站开发的书籍非响应式网站优点
  • 精品课程网站建设毕业设计论文紫金网站建设公司
  • 代搭建网站网站建设和托管哪家好
  • 站酷网下载wordpress 客户端源码
  • net快速建站新建网站百度搜不到
  • 徐州模板自助建站河北网页制作
  • 深圳网站建设费用多少分类信息网站开发需求方案
  • 网站制作工具 织梦正规接单赚佣金的平台
  • photoshop怎么做网站找合伙人的网站做淘宝
  • 两学一做网站飘窗科技网站建设
  • 新楼盘网站模板建设公积金网站
  • 网站开发vs2013沈阳男科医院哪家医院好
  • 福建住房和城乡建设网站证书查询从零开始创建wordpress主题.pdf
  • 淘客网站怎么做 知乎专业的单位网站开发开发
  • 菏泽哪里有做网站的php网站开发培训班
  • 超市网站建设策划书wordpress4.8.3安装
  • 广西公路建设协会网站湖南中维电力建设有限公司网站
  • 做网站需要哪些栏目四大门户网站创始人
  • 做网站一个月赚多少厦门中小企业网站制作
  • 福州做网站企业企业网站推广注意事项
  • 房地产怎么做网站推广代理网络阅卷
  • 镇江还有什么网站吗wordpress程序备份
  • 东莞网站建设网站建设多少钱如何给网站2做推广
  • 网站建设的重要指标项目建设方案包括哪些内容
  • 网站建设数据库放哪简述网站建设步骤
  • 企业网站加视频wordpress营销模板
  • 准备网站的工作深圳市住房和建设局网站住房保障服务