一、联结(使用 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. 007-declare 声明变量的类型

    declare [+/-] [选项] 变量名 - 给变量设定类型 + 取消变量的类型 -a 将变量声明为数组型 -i 将变量声明为整形 -x 将变量声明成环境变量 -r 将变量声明为只读变量 -p 显 ...

  2. 2017-07-01(ifconfig ifdown ifup netstat )

    ifconfig 可以查看IP地址与子网掩码 ifdown(禁用网卡) ifdown  网络设备名 ifdown eth0 ifup (启动网卡) ifup  网络设备名 ifup  eth0 net ...

  3. i2c总线的oled12864屏的u8x8运用总结

    github网址链接 https://github.com/olikraus/u8g2/wiki/u8x8reference#print 用到的库文件 #ifdef U8X8_HAVE_HW_SPI ...

  4. spark-遇到问题小结

     经常会遇到 类似 shuffle 0 的错误,或者 connect refuse .主要是shuffle 导致内存不足引起的.shuffle 分为 shuffle read 和write . 1. ...

  5. Css的优先级机制

    样式的优先级 多重样式(Multiple Style):如果外部样式.内部样式.内联样式同时应用于同一个元素,就是使用多重样式的情况. 一般情况优先级如下: (外部样式)External style ...

  6. RadioButton与监听

    public class MainActivity extends Activity implements OnCheckedChangeListener { <RadioGroup andro ...

  7. nagios 数据更新不及时的问题

    配置nagios的时候发现一个问题,就是改变了某个主机或者服务的描述之后,在主页信息总是更新很慢,而且告警信息还是老的信息,重启多次 nagios甚至重启主机都没有解决,其实这些都是由于nagios每 ...

  8. 【转】5 Best Place to Learn Linux – Linux Tutorial Sites

    Linux have amazed every tech guy and make them curious to hands on Linux. Many of us not feel Linux ...

  9. web移动端常见问题解决方案 (转)

    总结:本文总结了web移动端的常见问题并附上解决方案,包括:Meta标签.获取滚动条的值.禁止选择文本.屏蔽阴影.css之border-box.css3多文本换行.Retina屏幕高清图片.html5 ...

  10. git的学习笔记

    1. Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...