高级SQL:探索您的SQL命令的详细信息
SQL或结构化查询语言是一种特殊用途的编程语言,用于管理关系数据库系统(RDBMS)。基本的SQL语句包括从表中删除内容或记录、更新表中的记录或向表中插入新数据等操作。高级SQL侧重于更复杂的SQL策略和语句的设计。此外,它还关注连接、视图和子查询。连接和子查询是可互换的。然而,SQL使用子查询和连接视图来隐藏查询的复杂性。
UNION和UNION ALL操作符:
对于组合SELECT命令的两个或多个语句的结果集,使用UNION和UNION ALL操作符。在每个SELECT语句中,要组合的列应该具有相同的数据类型和列顺序。
联盟:
默认情况下,UNION操作符只选择不同的值。
一般的语法:
SELECT column-name(s) FROM table1
例子:
让我们为我们的示例创建两个名为“生产者”和“接收者”的表。
生产商
接收器
从生产国中选择国家
UNION SELECT Country FROM receiver ORDER BY Country;
此示例将不包括来自Producers表中列Country的重复值。
联盟:
这个操作符也将包括来自表Producers中列Country的重复值,并根据Country对它们进行排列。
一般的语法:
SELECT column-name(s) FROM table1
例子:
SELECT Country FROM Producers UNION FROM receiver ORDER BY Country; / /从生产者联盟中选择国家
这将从列国家中选择重复的值。
内联视图:
可以在SQL语句的“FROM”子句中使用子查询。内联视图允许您将子查询视为预定义的表或视图。它只存在于创建它的查询中。
一般的语法:
SELECT " column-name " FROM (inline view);
交叉算子:
INTERSECT操作符类似于UNION命令,对两个SQL语句进行操作。INTERSECT和UNION的区别在于,UNION充当OR运算符,而INTERSECT运算符充当and运算符。
一般的语法:
SQL语句1 SQL语句2;
例子:
让我们以之前的“生产者”和“接收者”表为例。
SELECT Country FROM Producers INTERSECT SELECT Country FROM receiver;
此示例将选择那些同时出现在生产者和接收者表中的国家。
输出:
国家
意大利
-命令:
MINUS命令还操作两个SQL语句。MINUS命令保留第一个语句的结果,然后从第一个语句的结果减去从第二个语句获得的结果,从而得到最终的结果。如果第二个语句包含第一个语句中没有的结果,那么该结果将被忽略。应该注意,MINUS命令只选择不同的值。
了解更多关于SQL数据库从头开始通过教程在Udemy.com
一般的语法:
SQL语句1减SQL语句t2;
例子:
让我们以“生产者”和“接收者”表为例。
SELECT Country FROM生产国减去接收国
输出:
国家
德国
解释:
第一条语句将返回一个包含Country as Italy和Germany的结果,而第二条语句将产生一个包含Country as Italy和Mexico的结果。第二个语句包含第一个语句中没有的结果,比如墨西哥,将被忽略,并从第一个语句中减去意大利。最终的结果将是“德国”。
限制命令:
在SQL中,默认情况下返回所有满足条件的结果。但有时,您不希望检索所有原始数据。因此,LIMIT命令用于检索所有记录的子集。此外,对于LIMIT命令,ORDER BY命令通常用于按特定列对列表排序。可以使用多个列对列表进行排序。
一般的语法:
SQL语句1 LIMIT [N];[N]是我们想要显示的值的数量。
例子:
让我们以创建一个名为“Producers”的表为例。
SELECT ProID,ProName,ContactName,Country FROM生产者ORDER BY ProID DESC LIMIT 2;
现在,这个示例将只显示表producer中的两行,按降序排列。
子查询:
子查询为您提供了将一条SQL语句添加到另一条SQL语句中的灵活性。
一般的语法:
SELECT column-name1 FROM table-name1 WHERE column-name2 FROM table-name1 WHERE column-name2
语句" (SELECT column-name3 FROM table-name2 WHERE condition); "被认为是内部查询而语句“SELECT column-name1 FROM table-name1 WHERE column-name2[比较运算符]”被认为是外查询.
例子:
SELECT ProName FROM生产者WHERE Country IN (SELECT Country FROM接收者WHERE ConatactName= ' Angela ');
输出:
ProName
尼科
存在:
在上面的示例中,使用In语句将内部查询与外部查询链接起来。也可以使用其他操作符,如<、>或=。类似地,EXISTS是一种特殊的操作符,用于检查内部查询是否返回一行。只有当内部查询返回任何行时,外部查询才会继续,否则将不会执行。
一般的语法:
SELECT * FROM table-name1 WHERE EXISTS (SELECT * FROM table-name2 WHERE EXISTS);
案例:
CASE用于为SQL语句提供if-then-else条件逻辑。SQL中有两种类型的CASE语句。
简单的例子:
使用simple CASE,将表达式与静态值进行比较。
语法:
SELECT CASE (column-name) WHEN value1 THEN result1 WHEN value2 THEN result2 .......ELSE result END FROM table name;
ELSE子句是可选的。
搜索的例子:
在search CASE中,表达式将与一个或多个逻辑条件进行比较。
语法:
SELECT CASE WHEN condition3 THEN result3 WHEN condition4 THEN result4 ELSE result END FROM table name;
ELSE子句是可选的,但“condition”可以包含一个或多个逻辑语句。