一、联结(使用 where(早) 和 join(晚) 都可以完成联结)

1.1 从 Teacher 表和 Profession 表中,查询出老师的名字和所属专业的名称。

  1. SELECT t.`l_name`,t.`f_name`,p.`name` from `Teacher` as t,`Profession` as p where t.`profession_id`=p.`id`;

1.2 内联结

1.2.1 Inner join (内联结:返回满足条件得所有行)

  1. 内连接,也叫等值连接,inner join 产生同时符合AB的一组数据。
  1. SELECT t.`l_name`,t.`f_name`,p.`name` from `Teacher` as t inner join `Profession` as p on t.`profession_id`=p.`id`;

1.2.2 nature join (自然联结:也是返回满足条件得所有行)

1.3 外联结

1.3.1 Left join (左联结:等价于 left outer join)

  1. 返回左表中所有的行,如果左表中的行没有匹配右表中的行,就会返回 NULL

1.3.2 Right join (右联结)

  1. 与左联结相反。

1.3.3 Full join (全联结:返回左表右表中所有的行,如果在另一个表中无匹配,则该表的行显示 NULL)

1.3.4 Cross join (交叉联结:两个表中所有可能的组合)

  1. cross join:交叉连接,得到的结果是两个表的乘积,即笛卡尔积
  2. 笛卡尔(Descartes)乘积又叫直积。
  3. 假设集合A={a,b},集合B={0,1,2},
  4. 则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。
  5. 可以扩展到多个集合的情况。
  6. 类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则AB的笛卡尔积表示所有可能的选课情况。

1.3.5 union join (联合联结:返回只有一个表有值,另一个表为空的数据组合。)

  1. 实际用的很少,很多 DBMS 不支持该查询。

1.4 自联结(两个表都是自己,使用较少)

二、子查询

  1. 查询条件嵌套的查询。

三、集合操作(连接两个查询语句)

3.1 UNION 返回两个查询的所有行,但是会删除相同行

  1. 如:查询老师和学生都来自哪些城市。

3.2 INTERSECT 返回两个查询所有的共同行

  1. 如:查询哪些城市同时是老师和学生的故乡。

3.3 EXCEPT 返回第一个查询中存在,但是第二个查询中不存在的所有行,会删除相同行。

  1. 如:列出所有不是学生家乡,但是教师的家乡的城市。

四、索引

  1. 在数据库表中,对字段建立索引可以大大提高查询速度。
  1. --选择数据
  2. select * from Test where name="王五";
  3. --创建索引
  4. create index name_index on Test(name);
  5. --删除索引
  6. drop index name_index on Test;

mysql4 - 高级操作的更多相关文章

  1. [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)

    点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...

  2. cassandra高级操作之索引、排序以及分页

    本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...

  3. MySQL学习笔记_9_MySQL高级操作(上)

    MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1;               #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...

  4. MySQL学习笔记_10_MySQL高级操作(下)

    MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...

  5. python列表(list)的使用技巧及高级操作

    python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...

  6. C语言指针的高级操作

    C语言指针的高级操作 指针  指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...

  7. django之创建第8-3个项目-数据库数据提取之高级操作

    1.配置test2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. SpringMVC整合Mongodb开发,高级操作

    开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 +  ...

  9. Git高级操作

    本文是在Git操作指南基础上衍生出来的高级操作,如果你对git不是很熟悉,建议你先阅读Git操作指南. 一.忽略提交特定文件 如果你不想让一些文件上传到git仓库中,可以让Git忽略特定文件或是目录, ...

随机推荐

  1. hibernate解读之session--基于最新稳定版5.2.12

    前言 hibernate是一个实现了JPA标准的,用于对象持久化的orm框架.博主近一年开发都在使用. 前段时间在工作中遇到了一个hibernate的问题,从数据库查找得到对象后,修改了其中部分字段值 ...

  2. junit4X系列--Assert与Hamcrest

    原文出处:http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html.感谢作者无私分享 到目前,JUnit4所有的核心源码都已经讲解过了 ...

  3. Linkin大话eclipse快捷键

    刚来这家公司的时候,作为菜鸟的我在帮别人调试代码的时候,有人说我快捷键使用的很熟悉. 呵呵,工欲善其事必先利其器,以下这些快捷键是最常用的也是要必须记住的. [Ctrl开头] Ctrl+1:快速修复 ...

  4. MYSQL导入大量数据碰到的问题及解决方法

    在项目中,经常会碰到往数据库中导入大量数据,以便利用sql进行数据分析.在导入数据的过程中会碰到一些需要解决的问题,这里结合导入一个大约4G的txt数据的实践,把碰到的问题以及解决方法展现出来,一方面 ...

  5. 错误:Invalid action class configuration that references an unknown class named [XXX]的解决

    问题: 用http的方式直接调用类,执行完毕后报错误信息Invalid action class configuration that references an unknown class name ...

  6. Java数据结构和算法(十四)——堆

    在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...

  7. 【nginx】nginx解决跨域详解

    使用场景:本地运行一个项目,但是要访问外域的api接口,存在跨域问题,解决方式有很多,但我尝试用nginx解决,搜索了网上文章后再加上尝试终于成功, 其中一些注意事项和大家分享一下. 一.window ...

  8. PHP判断变量是否为空的几种方法小结

    1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_e ...

  9. Mysql基本命令一

    一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...

  10. Django中不返回QuerySets的API -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...