标签:基本 条件语句 条件 根据 标识 phone 工程 gen 外连接
MySQL术语:
表的连接方式
数据准备
创建两张表:student表,college表。
student表结构;
CREATE TABLE `student` (
`studentId` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`phone` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`collegeId` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`studentId`),
KEY `collegeId` (`collegeId`)
) ENGINE = MyISAM CHARSET = utf8 COLLATE utf8_unicode_ci;
创建的表:
college表结构:
CREATE TABLE `college` (
`collegeId` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`collegeName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`collegeId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
创建的表:
内连接
内连接就是标间的主键与外键连接,只取键值一致的,可以获取双方表中的数据。语法:
SELECT 列明1,列明2......FROM 表1 INNER JOIN 表2 ON 表1.外键 = 表2.主键 WHERE 条件语句;
具体MySQL代码:SELECT student.name,college.collegeName FROM student INNER JOIN college ON student.collegeId = college.collegeId;
查询结果:
说明:通过表的内连接,实现了对两张表的数据的查询。将student表中的name字段与college表中的collegeName字段查询出来。
外连接
与取得两张表中的数据相比,外连接只能取得其中一方存在的数据,外连接又分为左连接和右连接两种情况。
左外连接
左外连接是以左表为标准,值查询在左边表中存在的数据,当然需要两个表中的键值一致。语法为:
SELECT 列明1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键 = 表2.主键 WHERE条件语句;
MySQL代码:SELECT student.name,collegeName FROM student LEFT OUTER JOIN college ON student.collegeId = college.collegeId;
运行结果;
可以看到,与内连接不同的是:【钱七】这个学生虽然没有学校ID,但是也被查询出来了,这就是我们所说的,左外连接会以左表中的全部数据作为基础进行查询。
右外连接
同理,右连接将会以右边的数据作为基础,进行检索。语法为:
SELECT 列名1 FROM 表2 RIGHT OUTER JOIN 表2 ON 表1.外键 = 表2.主键 WHERE 条件语句;
代码:
SELECT student.name,college.collegeName FROM student RIGHT OUTER JOIN college ON student.collegeId = college.collegeId;
运行结果:
从运行结果中可以看到,结果是根据右边的数据表college为基础进行检索的。因为表student中并没有“厦大”对应的学生,所以检索出来的结果为NULL。
总结:
自连接
自连接顾名思义,就是根据自己连接自己。
现在我们修改【student】表的数据如下,进行效果验证。
代码:SELECT * FROM student s,student a WHERE a.collegeId = s.collegeId AND a.name <> s.name ORDER BY a.collegeId;
可以看出我们就将【student】表,在同一个学生的学生查出来了。
语句解释:
子查询
通常我们在查询的SQL中嵌套查询,成为子查询。子查询通常会使得复杂的查询变得简单,但是相关的子查询要对基础表中的的每一条数据都进行子查询的动作,座椅当表彰的数据量过大的时候,一定要慎重选择。基本语法如下:
SELECT 列明1 ...FROM
代码:
SELECT * FROM (SELEC
T student.name,college.collegeName FROM student INNER JOIN college ON student.collegeId = college.collegeId)b WHERE b.collegeName = ‘清华‘;
结果:
标签:基本 条件语句 条件 根据 标识 phone 工程 gen 外连接
原文地址:https://www.cnblogs.com/liujianjun8181/p/10319302.html