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

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

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 (内联结:返回满足条件得所有行)

内连接,也叫等值连接,inner join 产生同时符合A和B的一组数据。
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)

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

1.3.2 Right join (右联结)

与左联结相反。

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

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

cross join:交叉连接,得到的结果是两个表的乘积,即笛卡尔积

笛卡尔(Descartes)乘积又叫直积。
假设集合A={a,b},集合B={0,1,2},
则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。
可以扩展到多个集合的情况。
类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

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

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

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

二、子查询

查询条件嵌套的查询。

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

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

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

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

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

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

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

四、索引

在数据库表中,对字段建立索引可以大大提高查询速度。
--选择数据
select * from Test where name="王五"; --创建索引
create index name_index on Test(name); --删除索引
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. scrapy_简介页面和详情页面

    如何对提取的URL进行限定? 往上找id和class属性值,进行多次层级选择,进行内容限定 如何实现获取主页所有urls,然后交给scrapy下载后并解析详情页面,返回结果?(文章简介页面和文章详细页 ...

  2. struts 中的addFieldError

    addFieldError("字段名","错误信息")给一个字段(属性)添加错误消息 在action中添加 this.addFieldError("p ...

  3. java获取昨天的日期

    Calendar   cal   =   Calendar.getInstance();  cal.add(Calendar.DATE,   -1);  String yesterday = new ...

  4. java IO(一):File类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. mysql 出现Duplicate entry ‘xxx’ for key ‘PRIMARY’,一个自增字段达到了上限,

    mysql 出现Duplicate entry 'xxx' for key 'PRIMARY',一个自增字段达到了上限,

  6. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...

  7. SpringMVC源码之Controller查找原理

    摘要 本文从源码层面简单讲解SpringMVC的处理器映射环节,也就是查找Controller详细过程. SpringMVC请求流程 Controller查找在上图中对应的步骤1至2的过程 Sprin ...

  8. python正则实现简单计算器

    利用正则实现计算器 利用正则来实现简单计算器的功能,能够设计计算带括号的加减乘除运算.当然不使用eval等语句. 利用递归: import re from functools import reduc ...

  9. python之闭包与装饰器

    python闭包与装饰器 闭包 在函数内部定义的函数包含对外部的作用域,而不是全局作用域名字的引用,这样的函数叫做闭包函数. 示例: #-------------------------------- ...

  10. Linux(CentOS)挂载NTFS格式的U盘、移动硬盘

    以下操作均在root下执行的 1.U盘挂载 mkdir /mnt/usb //创建一个目录,用于挂载U盘 fdisk -l //查看系统中挂载的U盘,若系统有一块硬盘sdb1 代表你的U盘,/dev/ ...