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

网站提交入口百度报名网站建设费用报价

网站提交入口百度,报名网站建设费用报价,蝙蝠做等级的网站,淘宝api wordpressMYSQL多表查询 MYSQL多表查询1.多表关系笛卡尔积 2. 多表查询概述2.1 内连接2.2 外连接2.3自连接联合查询union ,union all 2.4子查询2.4.1标量子查询2.4.2列子查询2.4.3行子查询2.4.4表子查询 MYSQL多表查询 create table student(id int auto_increment primary …

MYSQL多表查询

  • MYSQL多表查询
    • 1.多表关系
      • 笛卡尔积
    • 2. 多表查询概述
      • 2.1 内连接
      • 2.2 外连接
      • 2.3自连接
        • 联合查询union ,union all
      • 2.4子查询
        • 2.4.1标量子查询
        • 2.4.2列子查询
        • 2.4.3行子查询
        • 2.4.4表子查询

MYSQL多表查询

create table student(id int auto_increment primary key COMMENT 'ID',name varchar(10) comment '姓名',no varchar(10) comment '学号'
)comment '学生表';insert into student values(null,'lisa','20001'),(null,'tracy','20002'),(null,'janms','20003'),(null,'qiaodan','20004');create table course(id int auto_increment primary key COMMENT 'ID',name varchar(10) comment '姓名'
)comment '课程表';insert into course values(null,'Java'),(null,'PHP'),(null,'Mysql'),(null,'Hadoop');create table student_course(id int auto_increment primary key COMMENT 'ID',studentid int not null  comment '学生id',courseid int not null  comment '课堂id',CONSTRAINT fk_courseid foreign key (courseid) REFERENCES course (id),CONSTRAINT fk_studentid foreign key (studentid) REFERENCES student(id)
)comment '学生课程中间表';insert into student_course  values(null,1,2),(null,1,1),(null,2,1),(null,3,1);

1.多表关系

一对多:在多的一方设置外键,关联一的一方的主键
多对多:建立中间表,中间表包含两个外键,关联两张表的主键
一对多: 通常用于表结构拆分表,对应的拆分表字段任意一方设置unique外键,关联另一方的主键

笛卡尔积

在这里插入图片描述

select * from emp,dept
–多表查询,查询出结果的所有集合情况-笛卡尔积,消除无效的笛卡尔积,通过where条件关联字段筛选;
多表连查消除笛卡尔积

SELECT s.name,s.no,c.name from student s,student_course sc,course c where s.id=sc.studentid and c.id=sc.courseid;

在这里插入图片描述

2. 多表查询概述

  • 连接查询

    1. 内连接:相当于查询A、B交集部分的数据

    2. 外连接
      左外连接:查询左表所有数据,以及两张表交集部分数据
      右外连接:查询右表所有数据,以及两张表交集部分数据

  • 子查询

2.1 内连接

隐式内连接

SELECT 字段列表 FROM 表1,表2 WHERE 条件;

显示内连接

SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件;

内连接查询的是两张表的交集部分

#隐式连接
select * from emp,dept where  emp.dept_id=dept.id;
select e.name,d.name from emp e ,dept d where  e.dept_id=d.id;#显示连接
SELECT e.name,d.name from emp e inner join dept  d on  e.dept_id=d.id;

2.2 外连接

左外连接

SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;

右外连接

SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;

#左外连接
SELECT * from emp e left  outer join  dept d on e.dept_id=d.id;

在这里插入图片描述

#右外连接
SELECT d.*,e.* from emp e right outer join dept d on e.dept_id=d.id;

在这里插入图片描述

2.3自连接

SELECT 字段列表 FROM 表A 别名A INNER JOIN 表A 别名B ON 条件;

SELECT e2.name,e1.name from emp e1 inner join emp e2 on e1.id=e2.managerid 

在这里插入图片描述
查询员工姓名,以及领导姓名;包括领导为空的员工

SELECT e2.name as '员工',e1.name from emp e2 left join emp e1 on e1.id=e2.managerid 

在这里插入图片描述

联合查询union ,union all

union将多个查询结果联合起来

SELECT*FROM 表1
UNION ALL
SELECT*FROM 表1;

#union all直接合并结果
SELECT * from emp where salary <10000
union all
SELECT * from emp where age>32

结果
在这里插入图片描述
union查询结果进行去重

#union查询结果进行去重
SELECT * from emp where salary <10000
union 
SELECT * from emp where age>32

在这里插入图片描述

对于联合查询的多张表的字段必须保持一致

2.4子查询

子查询:

  • 标量子查询(查询结果为单个值)
  • 列子查询(查询结果为一列)
  • 行子查询(子查询结果为一行)
  • 表子查询(子查询结果为多行多列)

概念:SQL语句中嵌套的SELECT语句,称为嵌套查询,又称子查询。

SELECT * FROM t1 WHRER column1=(SELECT column1* FROM t2);
子查询外部的语句可以是INSERT /UPDATE/DELETE/SELECT 的任何一个

2.4.1标量子查询

子查询返回结果是单个值(数字、字符串、日期等),最简单的形式
常用的操作:=、 <> 、> 、>= 、< 、 <=

2.4.2列子查询

列子查询:子查询的返回结果是一列(可以使多行)
常用的操作符:IN 、NOT IN 、ANY、SOME、ALL

操作符描述
IN在指定的集合范围内,多选一
NOT IN不在指定的集合范围内
ANY子查询列表内,有任意一个满足
SOME与some等同
ALL子查询返回的列表的所有值必须满足

列子查询
查询比财务部所有人工资都高的员工信息

1.查询财务人员工资
SELECT id from dept where name='财务部';SELECT salary from emp where dept_id= (SELECT id from dept where name='财务部');
2.比财务部人所有人工资都高SELECT * from emp where salary >all (SELECT salary from emp where dept_id= (SELECT id from dept where name='财务部'));
2.4.3行子查询

子查询的返回结果是一行(可以使多列)
常用的操作:=、 <>、IN、NOT IN
查询与张无忌薪资及直属领导相同的员工信息

1.先查询张无忌的薪资与直属领导
SELECT salary,managerid from emp  where name='张无忌';
2.查询与张无忌薪资及领导一样的员工信息
SELECT * from emp where (salary,managerid)=(12500,1);
3.合并sql
SELECT * from emp where (salary,managerid)= (SELECT salary,managerid from emp  where name='张无忌');

在这里插入图片描述

2.4.4表子查询

子查询返回的结果是多行多列
常用的操作符:IN
与张三与张财务薪资职位相同的员工信息

SELECT job,salary from emp  where name='张三' or name='张财务';SELECT * from emp where (job,salary) in (SELECT job,salary from emp  where name='张三' or name='张财务')

查询在2004-01-01之后入职的员工和对应的部门

1.先查询2004-01-01之后的员工信息
SELECT * from emp where entrydate>'2004-01-01'2.查询员工对应的部门 左连接包含2004-01-01之后入职没有部门的员工
SELECT e.* ,d.* from (SELECT * from emp where entrydate>'2004-01-01') e left join dept d on e.dept_id=d.id;
http://www.yayakq.cn/news/513300/

相关文章:

  • 做公司的网站有哪些东西海南网
  • 太原做网站公司5大建站服务怎么运营一个微信公众号
  • 骗别人做网站浙江建站优化品牌
  • 建设银行河北分行招聘网站wordpress qq注册
  • 午夜做网站图片优化
  • 网站建设税收分类编码网站建设需要企业
  • 贵州省建设厅网站多少中级经济师考试报名
  • 网站建站行业二网站手
  • 招聘网站系统怎么做2345浏览器网页版登录
  • 莱芜企业网站建设公司带后台的html网站源码
  • wordpress tint 2.7.0无锡seo网站排名优化
  • 三大门户网站哪家做的最好淄博网站建设 很乱
  • 建设银行网站打不开宣城市市政建设集团公司网站
  • 查询企业信息的官方网站做网站寄生虫需要哪些东西
  • 深圳营销网站建设wordpress即时通讯
  • wordpress获取文章内容过滤空格昆明seo关键字推广
  • 上海专业网站建设服务网站死链怎么办
  • 建立公司网站多少钱免费男女打扑克的软件
  • 网站备案帐号做app和做网站区别
  • 深圳做网站要多平台推广文案
  • 用户搭建网站英文字体设计网站
  • 大型网站开发 cwordpress 淘宝 采集
  • 国际销售网站有哪些网站开发工程师求职简历
  • 酒店建设网站的优势有哪些百度竞价广告推广
  • 合肥网站推广如何承接网站建设外包
  • 企业网站源码带手机版个人做网站名称可以随意更改吗
  • 青海网站开发 建设新手如何建站
  • 网站建设一二级目录mooc网站建设
  • 网站怎么做站群绍兴网站推广排名
  • 中国建设银行邀约提额网站中国欧洲陆运专线