August 21, 2022
SQL JOIN # SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
JOIN演示 # sqlite> select domains.id,domains.domainname,logs.google,logs.baidu from domains inner join logs on domains.id=logs.id; ID DomainName google baidu -- ---------------- ------ ----- 1 aisoc.cn 1003 2075 2 ado.ink 1770 1660 3 nrdoc.com 1496 2621 4 getos.org 1864 2745 5 litiaotiao.cn 1574 2295 6 dotbbq.com 2927 2448 7 lyq.wiki 2543 395 8 les.moe 1166 350 9 regex.
...
August 28, 2022
SQL INNER JOIN 关键字 # INNER JOIN 关键字在表中存在至少一个匹配时返回行。
SQL INNER JOIN 语法 # SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; 或:
SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name; 注释:INNER JOIN 与 JOIN 是相同的。
SQL INNER JOIN 实例 # MariaDB [learnsql]> select domains.id,domains.domainname,logs.baidu,logs.google from domains inner join logs on domains.id=logs.id order by logs.google; +----+---------------+--------+--------+ | id | domainname | baidu | google | +----+---------------+--------+--------+ | 47 | manjushri.
...
August 28, 2022
SQL LEFT JOIN 关键字 # LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SQL LEFT JOIN 语法 # SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; 或:
SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name; 注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
SQL LEFT JOIN 实例 # 下面的 SQL 语句将返回所有网站及他们的访问量(如果有的话)。
以下实例中我们把 domains 作为左表,logs 作为右表:
MariaDB [learnsql]> select domains.domainname,logs.google from domains left join logs on domains.id=logs.id; +---------------+--------+ | domainname | google | +---------------+--------+ | getos.
...
August 28, 2022
SQL RIGHT JOIN 关键字 # RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SQL RIGHT JOIN 语法 # SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name; 或:
SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name; 注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
SQL RIGHT JOIN 实例 # 下面的 SQL 语句将返回网站的访问记录。
以下实例中我们把 domains 作为左表,logs 作为右表:
MariaDB [learnsql]> select domains.domainname,logs.google,logs.baidu,logs.sogou from domains right join logs on domains.id=logs.id order by logs.baidu desc; +---------------+--------+--------+--------+ | domainname | google | baidu | sogou | +---------------+--------+--------+--------+ | NULL | 000749 | 002977 | 000358 | | NULL | 002123 | 002939 | 000331 | | NULL | 002701 | 002843 | 000315 | | pornie.
...
August 28, 2022
SQL FULL OUTER JOIN 关键字 # FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SQL FULL OUTER JOIN 语法 SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name; SQL FULL OUTER JOIN 实例 # 下面的 SQL 语句选取所有网站访问记录。
MySQL中不支持 FULL OUTER JOIN,你可以在 SQL Server 测试以下实例。
SELECT domains.domainname, logs.baidu, FROM domains FULL OUTER JOIN logs ON domains.id=logs.id ORDER BY logs.baidu DESC; 注释:FULL OUTER JOIN 关键字返回左表(doamins)和右表(logs)中所有的行。如果 “domains” 表中的行在 “logs” 中没有匹配或者 “logs” 表中的行在 “domains” 表中没有匹配,也会列出这些行。
August 28, 2022
SQL UNION 操作符 # SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它可以从多个表中选择数据,并将结果集组合成一个结果集。使用 UNION 时,每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似。
SQL UNION 语法 # SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; UNION 操作符默认会去除重复的记录,如果需要保留所有重复记录,可以使用 UNION ALL 操作符。
SQL UNION ALL 语法 # SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; 注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
演示数据库
MariaDB [dn]> select * from isps; +-----+------------+--------------------------------------------------+ | idx | name | intro | +-----+------------+--------------------------------------------------+ | 1 | West | 西部数码老牌互联网基础服务提供商 | | 2 | Nameliso | Namesilo是一家美国的域名注册商 | | 3 | eName | 易名科技为国内知名的域名服务机构 | | 4 | CloudFlare | Cloudflare 是一个全球性的云平台 | +-----+------------+--------------------------------------------------+ MariaDB [dn]> select * from dnl; +-----+--------------------+------------+------------+------------+------------------+ | idx | Name | Created | Expiration | ISP | Note | +-----+--------------------+------------+------------+------------+------------------+ | 001 | vps.
...