SQL—检索数据

  • 数据库(database):
    • 是一个以某种有组织的方式存储的数据集合。最简单的方法是将数据库想象为一个文件柜。

SELECT语句

使用select检索表数据

  • 检索单个列:(pro_name是列名,Products是表)
    – SELECT pro_name FROM Products;
  • 检索多个列
    – SELECT pro_id,pro_price,pro_name FROM Products;
  • 检索所有列:(* 是通配符)
    – SELECT * FROM Products;
  • 检索不同的值:(DISTINCT)
    SELECT DISTINCT vendo_id FROM Products 注意不能部分使用DISTINCT。因为DISTINCT 作用于所有的列,不仅仅是跟在最后的那一列。比如:SELECT DISTINCT pro_id,pro_price,所有的列都会被检索出来。
  • 限制结果:(LIMIT)
    – SELECT pro_name FROM Products LIMIT 5 OFFSET 5 (注意:第1点、LIMIT 1 OFFSET 1会检索第2行,而不是第1行。第2点、LIMIT 4 OFFSET 3等价于LIMIT 3,4)
  • 使用注释:(–或#或/* /)
    – SELECT pro_name –这是一条注释 FROM Products (第一点:注释使用–(两个连字符)嵌在行内。–之后就是注释。 第二点:在一行的开始使用#。这一整行都将作为注释。第三点:注释从/
    开始,到/结束,/和*/之间的任何内容都是注释)

排序检索数据

排序数据(ORDER BY)

保证ORDER BY是SELECT语句中最后一条语句,如果不是,就会出现错误信息。

  • 按单个列排序:(pro_name是列名,Products是表)
    – SELECT pro_name FROM Products ORDER BY pro_name ;
  • 按多个列排序
    – SELECT pro_id,pro_price,pro_name FROM Products ORDER BY pro_name,pro_price;
  • 按列位置排序
    – SELECT pro_id,pro_price,pro_name FROM Products ORDER BY 2,3;
  • 指定排序方向
    – SELECT pro_id,pro_price,pro_name FROM Products ORDER BY pro_price DESC; // 降序排序 (注意:如果想在多个列进行降序排序,必须对每一列指定DESC关键字)

过滤数据

使用WHERE语句

数据库一般包含大量的数据,很少需要表中的所有行。通常只会根据特定的操作或报告的需要提取表中数据的子集。只检索所需数据需要的指定的搜索条件(search criteria),搜索条件也称为过滤条件(filter condition),在SELECT语句中,数据根据WHERE语句中指定的搜索条件进行过滤。WHERE语句在表名(FROM语句)之后给出。
– SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price = 3.67;

WHERE语句操作符

操作符说明操作符说明
=等于>大于
<>不等于>=大于等于
!=不等于!>不大于
<小于BETWEEN在指定的两个值之间
<=小于等于IS NULL为NULL值
!<不小于nil
  • 检查单个值
    • SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7;
  • 不匹配检查
    • SELECT vend_id,pro_name FROM Products WHERE vend_id <> 'DLL02';
  • 范围值检查:(指定开始日期和结束日期之间的所以日期或者价格区间)
    • SELECT pro_price,pro_name FROM Products WHERE pro_price BETWEEN 5 AND 8;
  • 空值检查
    • SELECT cust_name FROM Customers WHERE cust_email IS NULL;

高级过滤数据

组合WHERE子句

主要有两种方式:即以AND子句或者OR子句的方式使用。区别在AND要满足多个条件,而OR在WHERE子句的第一个条件得到满足的情况下就不会计算第二个条件了(不管第二个条件是否满足,相应的行22都会被检索出来) 。如果WHERE子句中,有AND也有OR,优先2处理AND操作符。

  • AND操作符
    • SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 AND pro_name = 'DLL02';
  • OR操作符
    • SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 OR pro_name = 'DLL02';
  • 求值顺序
    • SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 OR pro_name = 'DLL02' AND pro_id = '3';

IN操作符

IN操作符用来指定条件范围,范围中的每个条件度可以匹配。IN取一组由逗号分隔、扩在圆括号中的合法值。

  • SELECT pro_price,pro_name FROM Products WHERE vend_id IN ('DLL02','BRS02');

NOT操作符

WHERE子句中的NOT也有且只有一个功能,那就是否定其后所跟的任何条件

  • SELECT pro_price,pro_name FROM Products WHERE NOT vend_id = 'DLL02' ORDER BY pro_name ;
    原文作者:Mg明明就是你
    原文地址: https://www.jianshu.com/p/557c16d3cbf8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞