查询基础--SELECT、运算符

SELECT语句基础

列的查询

SELECT 子句中列举了希望从表中查询出的列的名称,而 FROM 子句
则指定了选取出数据的表的名称。

#查询特定的列
SELECT < 列名 > ,……
 FROM < 表名 > ;
#查询全部的列
SELECT   *
FROM < 表名 >;

接下来,我们尝试从第 1 章创建出的 Product (商品)表中,查询
出图 2-1 所示的 product_id (商品编号)列、 product_name (商
品名称)列和 purchase_price (进货单价)列
在这里插入图片描述

SELECT product_id,product_name,purchase_price FROM product;

查询出的列的顺序可以任意。查询多列时,需要使用逗号进行分隔。 查询结果中列的顺序和SELECT 子句中的顺序相同。

为列设定别名

SQL 语句可以使用 AS 关键字为列设定别名

SELECT product_id AS id,
product_name AS name,
purchase_price AS price
FROM Product;
#别名可以使用中文,使用中文时需要用双引号(")括起来
SELECT product_id AS " 商品编号 ",
product_name AS " 商品名称 ",
purchase_price AS " 进货单价 "
FROM Product;

常数的查询

SELECT 子句中不仅可以书写列名,还可以书写常数。代码清单 2-6
中的 SELECT 子句中的第一列 ’ 商品 ’ 是 字符串常数 ,第 2 列 38 是 数字
常数 ,第 3 列 ‘2009-02-24’ 是 日期常数 ,它们将与 product _ id
列和 product _ name 列一起被查询出来。

SELECT ' 商品 ' AS string, 38 AS number, '2009-02-24' AS date,
product_id, product_name
FROM Product;

在这里插入图片描述

从结果中删除重复行

想要删除重复行时,可以通过在 SELECT 子句中使用DISTINCT 来实现
在这里插入图片描述

SELECT DISTINCT product_type
FROM Product;

在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多
行中时,也会被合并为一条 NULL 数据。对含有 NULL 数据的 purchase _
price (进货单价)列使用 DISTINCT 的 SELECT 语句。除了两条 2800 的数据外,两条 NULL 的数据也被合并为一条。

DISTINCT 也可以像代码清单 2-9 那样在多列之前使用。此时,会
将多个列的数据进行组合,将重复的数据合并为一条。

SELECT DISTINCT product_type, regist_date
FROM Product;

在这里插入图片描述

where语句 选择记录

前面的例子都是将表中存储的数据全都选取出来,但实际上并不是每
次都需要选取出全部数据,大部分情况都是要选取出满足“商品种类为衣
服”“销售单价在 1000日元以上”等某些条件的数据。

SELECT < 列名 >, ……
FROM < 表名 >
WHERE < 条件表达式 >;

首先通过WHERE 子句查询出符合指定条件的记录,然后再选取出 SELECT 语句指定的列。
SQL 中子句的书写顺序是固定的,不能随意更改。 WHERE 子句必须
紧跟在 FROM 子句之后,书写顺序发生改变的话会造成执行错误

SELECT product_name, product_type
FROM Product
WHERE product_type = ' 衣服 ';

在这里插入图片描述

注释的写法

1行注释
书写在“–”之后,只能写在同一行。
多行注释
书写在“/”和“/”之间,可以跨多行。

运算符

运算符就是对其两边的列或者值进行运算(计算或者比较大小等)的符号。

算术运算符

SELECT product_name, sale_price,
sale_price * 2 AS "sale_price_x2"
FROM Product;

在这里插入图片描述
四则运算所使用的运算符 ( + 、 - 、 * 、 / ) 称为算术运算符。运算符就
是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,
并返回结果的符号。加法运算符 ( + ) 前后如果是数字或者数字类型的列
名的话,就会返回加法运算后的结果。SQL 中除了算术运算符之外还有其
他各种各样的运算符。SQL 中也可以像平常的运算表达式那样使用括号 ( )
所有包含 NULL 的计算,结果肯定是 NULL。

比较运算符

学习 WHERE 子句时,我们使用符号 = 从 Product 表中选
取出了商品种类( product _ type )为字符串 ’ 衣服 ’ 的记录。下面让
我们再使用符号 = 选取出销售单价( sale_price )为 500 日元(数字
500 )的记录

SELECT product_name, product_type
FROM Product
WHERE sale_price = 500;

像符号 = 这样用来比较其两边的列或者值的符号称为比较运算符,
符号 = 就是比较运算符。在 WHERE 子句中通过使用比较运算符可以组合
出各种各样的条件表达式
接下来,我们使用“不等于”这样代表否定含义的比较运算符 <> ,
选取出 sale _ price 列的值不为 500 的记录

SELECT product_name, product_type
FROM Product
WHERE sale_price <> 500;

在这里插入图片描述
选取出销售单价大于等于1000日元的记录

SELECT product_name, product_type, sale_price
FROM Product
WHERE sale_price >= 1000;

选取出登记日期在2009年9月27日之前的记录

SELECT product_name, product_type, regist_date
FROM Product
WHERE regist_date < '2009-09-27';

还可以使用比较运算符对计算结果进行比较。在 WHERE 子句中指定了销售单价( sale_price )比进货单价( purchase_price )高出 500 日元以上的条件表达式。为了判断是否高出 500 日元,需要用 sale_price 列的值减去 purchase_price
列的值。
WHERE 子句的条件表达式中也可以使用计算表达式

SELECT product_name, sale_price, purchase_price
FROM Product
WHERE sale_price - purchase_price >= 500;

对字符串使用不等号时的注意事项

创建 Chars 表并插入数据
-- DDL :创建表
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr));
SQL Server PostgreSQL
-- DML :插入数据
BEGIN TRANSACTION;
INSERT INTO Chars VALUES ('1');
INSERT INTO Chars VALUES ('2');
INSERT INTO Chars VALUES ('3');
INSERT INTO Chars VALUES ('10');
INSERT INTO Chars VALUES ('11');
INSERT INTO Chars VALUES ('222');
COMMIT;

选取出大于 ‘2’ 的数据的 SELECT 语句

SELECT chr
FROM Chars
WHERE chr > '2';

在这里插入图片描述
chr 列被定为字符串类型,并且在对字符串类型的数据进行大小比较时,使用的是和数字比较不同的规则。典型的规则就是按照字典顺序进行比较,也就是像姓名那样,按照条目在字典中出现的顺序来进行排序。该规则最重要的一点就是,以相同字符开头的单词比不同字符开头的单词更相近。
Chars 表 chr 列中的数据按照字典顺序进行排序的结果如下所示。
1
10
11
2
222
3

对NULL的选取

=NULL用运算符不能提出NULL
选取 NULL 的记录

SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IS NULL;

反之,希望选取不是 NULL 的记录时,需要使用 IS NOT NULL 运
算符

SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IS NOT NULL;
发布了6 篇原创文章 · 获赞 8 · 访问量 1202

猜你喜欢

转载自blog.csdn.net/weixin_43289424/article/details/103899430