第9天-mysql创建高级联结
2016-04-11 19:27
330 查看
一、使用表别名
在sql中,除了可以使用列别名之外,也可以使用表别名,这样做有两个理由缩短sql语句 允许在单个select语句中使用相同的表
例子:
SELECT name, age, sex FROM students as s, courses as c, course_selection as cs WHERE cs.student_id = s.id AND c.course_teacher = 'zhang' AND c.course_id = cs.course_id;
上面的语句使用了表别名,缩短了sql语句的长度。
二、使用不同类型的联结
目前为止我们使用的都是内部联结,sql中还存在其他三种类型的联结:自联结 自然联结 外部联结
1、自联结
假设我们想在students表中找出和学生
jyjxycgw分数相同的所有学生的信息。
编写查询语句如下:
SELECT id, name, sex, age, score FROM students WHERE score = ( SELECT score FROM students WHERE name = 'jyjxycgw' );
输出为:
+-----+----------+--------+-----+-------+ | id | name | sex | age | score | +-----+----------+--------+-----+-------+ | 2 | jyjxycgw | male | 44 | 27 | | 121 | ibtzfqzo | female | 34 | 27 | | 126 | hjvgmryx | female | 21 | 27 | | 170 | jaqzptez | male | 53 | 27 | | 194 | kuxvtxwd | female | 17 | 27 | | 427 | iuuludyb | male | 52 | 27 | | 432 | dhhmommn | female | 40 | 27 | | 455 | kkhiunlf | male | 90 | 27 | | 463 | jnlnrezu | female | 61 | 27 | | 489 | zurgnibf | male | 55 | 27 | | 653 | tkpkhbhq | male | 43 | 27 | | 879 | kvprpaph | female | 11 | 27 | | 908 | atydodkc | female | 4 | 27 | +-----+----------+--------+-----+-------+
上面使用了一个简单的select子查询,我们还可以使用联结达到同样的效果:
SELECT a.id, a.name, a.sex, a.age, a.score FROM students as a, students as b WHERE a.score = b.score AND b.name = 'jyjxycgw';
输出完全相同。
与其等价的join语法:
SELECT a.id, a.name, a.sex, a.age, a.score FROM students as a JOIN students as b on a.score = b.score AND b.name = 'jyjxycgw';
2、自然联结
无论何时对表进行联结,应该至少有一个列出现在不止一个表中(被联结的列)。这样在使用标准联结(前面提到的内部联结)的时候,重复的列会不止出现一次。而所谓自然联结是排除了那些重复的列,使得重复的列只出现一次的联结。
系统没有这样的功能,需要我们自己指定,方法是指定从各个表中指定要select的列。
这不是废话吗?
3、外部联结
许多联结将一个表中的行与另一各表中的行相关联。但有时候需要包含没有关联行的那些行相关文章推荐
- MySQL基础二:数据表操作
- Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- MySQL乱码问题
- MYSQL--慢查询,卡死等处理
- mysql数据库-海量数据的存储和访问解决方案(之一)
- Mysql批量更新数据
- 影响Mysql性能的重要参数详解
- mysql分库分表总结
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
- MySQL安装或重装后出现无法启动MySQL服务错误:发生系统错误2 系统找不到指定的文件
- MySQL 数据类型
- mysql if 函数
- MYSQL 【汇总数据】 【分组数据】 学习记录
- mysql权限
- mysql 游标的使用方法
- Mysql(一) - 数据库和表的基本操作 及 数值类型
- mysql集群之MYSQL CLUSTER
- Win7 64位安装MySQL
- mysql触发器