SQL 学习笔记:基本查询语句

注:这篇文章中将使用下表进行举例说明。

表名:sales  
列名:id, name, amount, price

1. 单表查询

1.1 查询指定的列

语法:

SELECT <列名> [...] FROM <表名>;

示例

SELECT id, name FROM sales;

1.2 查询全部列

语法:

SELECT * FROM <表名>;

示例

SELECT * FROM sales;

等价于

SELECT id, name, amount, price FROM sales;

1.3 查询经过计算的值

SELECT后面可以是表中的属性列,也可以是表达式、字符串常量或函数。

语法:

SELECT <目标列表达式> FROM <表名>;

示例

SELECT name, amount*price FROM sales;

我们还可以手动改变查询结果的列标题

语法:

SELECT <目标列表达式> [AS] 列标题 FROM <表名>;

示例

SELECT name, amount*price total FROM sales;

2. 选择表中的若干元组

前面的例子中,在选择列的时候,同一列的所有记录都被选中了。
有时候我们只想提取满足特定要求的记录,这时候就需要使用查询条件进行数据的筛选。

2.1 消除取值相同的行

在SELECT的后面跟上DISTINCT短语,查询结果就会自动消除重复的数据。

语法:

SELECT DISTINCT <列名> FROM <表名>;

示例

SELECT DISTINCT amount FROM sales;

2.2 查询满足条件的元组

常用的查询条件有以下六种

  1. 比较:= > < >= <= != NOT+上述运算符
  2. 确定范围:BETWEEN ... AND ... , NOT BETWEEN ... AND ...
  3. 确定集合:IN, NOT IN
  4. 字符匹配:LIKE, NOT LIKE
  5. 空值匹配:IS NULL, IS NOT NULL
  6. 多重条件:AND, OR

语法:

SELECT <目标列表达式> FROM <表名> WHERE 查询条件;

示例

(1) 比较大小的查询

SELECT name, price FROM sales WHERE price < 100;
SELECT name, price FROM sales WHERE NOT price >= 100;

(2) 确定范围的查询

SELECT * FROM sales WHERE price BETWEEN 50 AND 100;
SELECT * FROM sales WHERE price >= 50 AND price <= 100;

(3) 确定集合的查询

SELECT * FROM sales WHERE amount IN (10, 20, 50);
SELECT * FROM sales WHERE name IN ('商品1', '商品2');

(4) 字符匹配的查询

语法:

[NOT] LIKE '<匹配符>' [ESCAPE '<转义字符>']

匹配符可以包含普通字符,也可以包含通配符。
通配符%:任意长度(包括0)的字符。
通配符_:任意单个字符。

例如想查询联想电脑或外星人电脑的销售记录,可以输入

SELECT name FROM sales WHERE name LIKE '%电脑';

又比如想找商品名为4个字的某某饮料的销售记录,可以输入

SELECT * FROM sales WHERE name LIKE '__饮料';

(5) 涉及空值的查询

空值(NULL)在数据库中有特殊含义,它表示不确定的值,不能简单使用=或!=来判断。
若要判断某个值是否为空,应该使用 IS NULLIS NOT NULL 语句。

SELECT * FROM sales WHERE amount IS NULL;
SELECT * FROM sales WHERE amount IS NOT NULL;

(6) 多重条件查询

WHERE语句后面除了跟上单个查询条件外,还可以同时跟上多个查询条件。
如果是要同时满足多个条件,则使用 AND 短语;
如果只要满足任意一个条件即可,则使用 OR 短语。

SELECT * FROM sales WHERE amount > 10 AND price < 50;
SELECT * FROM sales WHERE name LIKE '%电脑' OR name LIKE '%手机'

3. 对查询结果排序

SQL语句支持对查询结果以特定条件进行排序,可根据单列排序,也可根据多列来排序。
如果根据多列排序,则第一列中具有相同值的多个记录将根据第二列进行排序。
若第二列也相同,则根据用户指定的第三列进行排序,以此类推。

语法:

ORDER BY <列名> [ASC|DESC] [, <列名> [ASC|DESC] ...]

对所有商品按价格从低到高升序排列

SELECT * FROM sales ORDER BY price;
SELECT * FROM sales ORDER BY price ASC;

价格相同时,按商品数量从多到少降序排列

SELECT * FROM sales ORDER BY price, amount DESC;

相关文章

Loading Likes...

发表评论

电子邮件地址不会被公开。 必填项已用*标注