天天看点

SQL基础(二):SQL命令

1、SQL SELECT TOP 子句

  SELECT TOP 子句用于规定要返回的记录的数目。SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的(或者比如选取某个最新的数据:我们可以按降序排序,然后选取第一个数据)

  注释:并非所有的数据库系统都支持 SELECT TOP 子句。

  语法:SELECT TOP number|percent column_name(s) FROM table_name;

  MySQL语法:SELECT column_name(s) FROM table_name LIMIT number;

  Oracle 语法:SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

2、SQL LIKE 操作符

  LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。(通常与通配符一起配合使用)

  语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

  通过使用 NOT 关键字,您可以选取不匹配模式的记录。

3、SQL 通配符

  通配符与 SQL LIKE 操作符一起使用。SQL 通配符用于搜索表中的数据。在 SQL 中,可使用以下通配符:

  

SQL基础(二):SQL命令

  https%:以字母 "https" 开始

  %oo%:包含字母oo

  _oogle:以任一字符开始,然后是 "oogle" 的所有记录

  %代表一个或多个字符,_代表一个字符

  [charlist] 通配符:MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

4、IN 操作符

  IN 操作符允许您在 WHERE 子句中规定多个值。(in查询可以规定多个值)

  NOT column_name IN (value1,value2,…),不在规定的值内

  语法:SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);

5、SQL BETWEEN 操作符

  BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

  语法:SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

  注意:在不同的数据库中,BETWEEN 操作符会产生不同的结果!在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。因此,请检查您的数据库是如何处理 BETWEEN 操作符!

  下面是2个表的数据,用于实例演示:

SQL基础(二):SQL命令
SQL基础(二):SQL命令

 6、别名

  通过使用 SQL,可以为表名称或列名称指定别名。基本上,创建别名是为了让列名称的可读性更强。

  列的别名语法:SELECT column_name AS alias_name FROM table_name;

  表的别名语法:SELECT column_name(s) FROM table_name AS alias_name;

  列的别名实例:

SQL基础(二):SQL命令
SQL基础(二):SQL命令

  表的别名实例:

SQL基础(二):SQL命令

  在下面的情况下,使用别名很有用:(1)在查询中涉及超过一个表(2)在查询中使用了函数(3)列名称很长或者可读性差(4)需要把两个列或者多个列结合在一起

 7、SQL JOIN

  SQL JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

SQL基础(二):SQL命令

  不同的 SQL JOIN 类型:

INNER JOIN:如果表中有至少一个匹配,则返回行

LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

FULL JOIN:只要其中一个表中存在匹配,则返回行

 8、SQL INNER JOIN 关键字

  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;

  注释:1、INNER JOIN 与 JOIN 是相同的。

      2、INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Websites" 表中的行在 "access_log" 中没有匹配,则不会列出这些行。

SQL基础(二):SQL命令

 9、SQL LEFT JOIN 关键字

  LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

  语法: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 关键字从左表(Websites)返回所有的行,即使右表(access_log)中没有匹配。

SQL基础(二):SQL命令

 10、SQL RIGHT JOIN 关键字

  RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

  语法: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 关键字从右表(Websites)返回所有的行,即使左表(access_log)中没有匹配。

SQL基础(二):SQL命令

11、SQL FULL OUTER JOIN 关键字

  FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。

  FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

  语法:SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;

  注释:FULL OUTER JOIN 关键字返回左表(Websites)和右表(access_log)中所有的行。如果 "Websites" 表中的行在 "access_log" 中没有匹配或者 "access_log" 表中的行在 "Websites" 表中没有匹配,也会列出这些行。

  几种JOIN对比:

SQL基础(二):SQL命令
SQL基础(二):SQL命令
SQL基础(二):SQL命令
SQL基础(二):SQL命令