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

互联网公司怎么找网站建设客户江阴企业网站制作

互联网公司怎么找网站建设客户,江阴企业网站制作,河北石家庄最新消息今天,app推广员是做什么的一、什么是多表查询 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立…

一、什么是多表查询

        多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进 行关联。

二、为什么需要多表查询

1、是否可以将多个表合并为一张表?

        答:可以,不过会有弊端。

2、弊端1:会增加很多冗余数据。

        比如:如果有员工表和部门表。在员工表中有100个人在10号部门,在部门表中只需要有一条数据记录该部门即可。但是合成一张表后就会有大量的数据冗余。

2、弊端2:在进行查询数据的时候数据需要从磁盘加载到内存中,当一张表的字段更多,加载相同数量的记录就需要更多的IO,影响查询性能。

3、弊端3:在事务中,因为表会锁定。如果是一张表,那么多人共用并不方便,效率也会更低。

三、熟悉需要使用的表

四、错误的多表查询(笛卡尔积

1、案例

#案例:查询员工的姓名及其部门名称
SELECT last_name, department_name
FROM employees, departments;

分析:107 * 27 = 2889。错误条数的查询是因为员工表中的每一条记录都匹配了一遍部门表中的每一条记录,这种错误被称为笛卡尔积错误。错误的原因就是因为缺少了多表连接的条件

2、笛卡尔积(或交叉连接)的理解

        笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能 组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中元素个数的乘积数。

        SQL92中,笛卡尔积也称为交叉连接 ,英文是 CROSS JOIN 。在 SQL99 中也是使用 CROSS JOIN表示交 叉连接。它的作用就是可以把任意表进行连接,即使这两张表不相关。在MySQL中如下情况会出现笛卡尔积:

#查询员工姓名和所在部门名称
SELECT last_name,department_name FROM employees,departments;
SELECT last_name,department_name FROM employees CROSS JOIN departments;# 交叉连接
SELECT last_name,department_name FROM employees INNER JOIN departments;# 内连接
SELECT last_name,department_name FROM employees JOIN departments;

3、案例分析与问题解决

笛卡尔积的错误会在下面条件下产生

1、省略多个表的连接条件(或关联条件)

2、连接条件(或关联条件)无效

3、所有表中的所有行互相连接

为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件。 加入连接条件后,查询语法:

SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column1 = table2.column2; #连接条件

上述案例的正确写法:

#案例:查询员工的姓名及其部门名称
SELECT last_name, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id;

注意:在查询的多个表中有相同列(字段)时,必须在列名之前加上表名前缀

建议:从sql优化的角度,建议多表查询时,每个字段前都指明其所在的表

优化:如果查询的字段很多,那么就会写得很长,可以对查询的表起别名。但是如果起了别名,需要用表名就必须使用别名,而不能再使用原名。

SELECT emp.last_name, dept.department_name
FROM employees emp, departments dept
WHERE emp.department_id = dept.department_id;

4、n个表实现多表连接

如果有n个表实现多表查询,则至少需要n-1个连接条件。

例如:

五、多表查询的分类

1、分类

角度一:针对连接条件而言,分为等值连接非等值连接

角度二:针对连接的表间关系来讲,分为自连接非自连接

角度三:内连接外连接。(见第11章)

2、示例

等值连接示例:

连接条件使用等号限制。

SELECTe.last_name,e.salary,e.department_id,d.department_name
FROMemployees e,departments d
WHERE e.department_id = d.department_id;

非等值连接示例:

连接条件不是使用等号限制的。

SELECTe.last_name,e.salary,j.grade_level
FROMemployees e,job_grades j
WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;

自连接示例:

连接相同的两张表称为自连接。(将一张表看成两张相同的表。当t1和t2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。然后两个表再进行多表连接查询。)

SELECT t1.employee_id, t1.last_name, t2.employee_id manager_id, t2.last_name manager_name
FROM employees t1,employees t2
WHERE t1.manager_id = t2.employee_id

非自连接示例:

连接不同的两张或多张表,称为非自连接。

SELECTe.last_name,e.salary,e.department_id,d.department_name
FROMemployees e,departments d
WHERE e.department_id = d.department_id;

扩展:

  • 多个表中有相同列时,必须在列名之前加上表名前缀。
  • 在不同表中具有相同列名的列可以用 表名 加以区分。
  • 使用别名可以简化查询。 列名前使用表名前缀可以提高查询效率。需要注意的是,如果我们使用了表的别名,在查询字段中、过滤条件中就只能使用别名进行代替, 不能使用原有的表名,否则就会报错。
http://www.qdjiajiao.com/news/12792.html

相关文章:

  • 文化传播集团网站建设2345网址导航下载桌面
  • 有没有哪个网站怎么做动漫新闻的刷推广链接
  • wordpress钉钉登录免费培训seo网站
  • 做推送实用网站今天重大新闻头条
  • 58网站自己做百度今日数据统计
  • 做外贸b2b网站上海互联网管理系统推广公司
  • wordpress词 条主题免费关键词优化工具
  • 东莞一站式网站推广运营百度seo排名在线点击器
  • 国家工程建设标准化协会网站百度招商客服电话
  • 搭建网站需要做什么最新热搜新闻
  • 怎么下载自己做的网站微信广告推广平台
  • 开封做网站睿艺美哈尔滨新闻头条今日新闻
  • 高端企业网站建设蓦然郑州网站建设网页模板免费下载网站
  • 学做网站开发优化网站推广
  • 给人做ppt的网站网站seo优化工具
  • 苏州企业网站建设电工培训学校
  • 网站建设600分站优缺点南宁网站建设服务公司
  • 网站开发用px还是rem友情链接适用网站
  • 做时时彩网站牌照申请抖音营销推广怎么做
  • 搭建网站属于什么专业网站怎么优化搜索
  • 东莞网站建设效果好最近国际新闻
  • 最好大连网站建设杭州推广系统
  • 学做川菜的网站最佳搜索引擎
  • 全景网站开发网络广告营销的特点
  • 企业网站开发douyanet广州最新发布最新
  • 有什么网站可以做浏览单今日新闻播报
  • 辽宁省品牌建设促进会网站廊坊seo优化排名
  • 5万左右的新能源电动汽车网站推广优化排名教程
  • 济南网站建设铭盛信息江门搜狗网站推广优化
  • wordpress url路由志鸿优化网官网