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

建设网站细节要钱吗

建设网站细节,要钱吗,深圳品牌网站开发,合肥网站建设新浪营销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 …

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/458576/

相关文章:

  • 建设网站优化做网站企业的发展前景
  • 郑州做网站公司中开发一个游戏软件需要多少钱
  • 沈阳专业做网站开发公司爱站网关键词搜索工具
  • 北京建网站住房和城乡建设局是干什么的
  • 做ppt的网站叫什么名字个人网站怎么建立步骤
  • 做全世界的生意的网站wordpress sso
  • 都什么网站用wordpressphp在网站开发中的应用
  • 中鼎国际建设集团网站网站开发公司广告语
  • 江苏广宇建设集团有限公司 网站建设网站企业运营
  • 建设网站应注意什么wordpress随机注册
  • 深圳网站seo公司邮箱发网站建设主题怎么写
  • 网站的区别网站服务运营队伍与渠道建设
  • 杭州做网站的好公司品牌建设之道有哪些
  • 对比网页设计网站光明区建设局网站
  • 网站免费下载软件.net网站开发书
  • 网站开发在线学习怎么制作公众号动图
  • 福鼎网站建设9uu域名更新自动转跳
  • 哪家公司做网站最好东莞企业推广网站制作
  • 商城类网站和o2o网站银行网站开发技术方案
  • 牡丹江建设银行网站云南技术网站建设销售
  • 企业网站建设费用怎么记账自己可以做网站么
  • 怎么给网站做网站地图国内外知名市场调研公司
  • 网站搜索排优化怎么做网站备案更改网站负责人
  • opensns wordpress搜索引擎排名优化亚当
  • 教育类电商网站wordpress图片使用图床
  • 天津常规网站建设系列福建网站模板
  • 西安计算机培训机构哪个最好品牌推广百度seo
  • 做设计在哪个网站接单装修在线设计平台
  • 宜昌永东建设网站新网站收录多少关键词
  • 建设网站了还能消除吗互联网网站建设水平