前文回顾:
目录
SELCET 查询
- 从表中选取数据时需要使用 SELECT 语句,也就是只从表中选出(SELECT)必要数据的意思。通过 SELECT 语句查询并选取出必要数据的过程称为匹配查询或查询(query)。
- SQL 语句使用换行符或者半角空格来分隔单词,在任何位置进行分隔都可以,(子句过长时,为方便起见可以换行)。但是如果在中间插入空行(无任何字符的行)会造成执行错误。
-
select male, female from table
- 设定汉语别名时需要使用双引号( " )括起来,字符串使用单引号
- 在 SELECT 语句中使用 DISTINCT 可以删除重复行,DISTINCT 关键字只能用在第一个列名之前,在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时 , 也会被合并为一条 NULL 数据
注释的书写方法
- 1行注释
- 书写在“--”之后,只能写在同一行。
- 多行注释
- 书写在“/*”和“*/”之间,可以跨多行。
算术运算符和比较运算符
- 四则运算所使用的运算符 ( + 、 - 、 * 、 / ) 称为算术运算符。运算符就是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号。加法运算符 ( + ) 前后如果是数字或者数字类型的列名的话,就会返回加法运算后的结果。(PS.所有包含 NULL 的计算,结果肯定是 NULL)
含义 | 运算符 |
加法运算 | + |
减法运算 | - |
乘法运算 | * |
除法运算 | / |
像符号 = 这样用来比较其两边的列或者值的符号称为比较运算符,符号 = 就是比较运算符,一定要让不等号在左,等号在右。
运算符 | 含义 |
= | 和~相等 |
<> | 和~不相等 |
>= | 大于等于~ |
> | 大于~ |
<= | 小于等于~ |
< | 小于~ |
字符串使用不等号规则
- 被定为字符串类型,并且在对字符串类型的数据进行大小比较时,使用的是和数字比较不同的规则。典型的规则就是按照字典顺序进行比较,也就是像姓名那样,按照条目在字典中出现的顺序来进行排序。该规则最重要的一点就是,以相同字符开头的单词比不同字符开头的单词更相近。
- 如'10' 和 '11' 同样都是以 '1' 开头的字符串,首先判定为比 '2' 小。
- 1-1 节包含在第 1 章当中,所以肯定比第 2 章更靠前。
不能对 NULL 使用比较运算符
SQL提供了专门用来判断是否为 NULL 的 IS NULL 运算符,如果想查询出为NULL的空值,使用IS NULL为其添加条件,希望选取 NULL 记录时,需要在条件表达式中使用 IS NULL 运算符。希望选取不是 NULL 的记录时,需要在条件表达式中使用 IS NOT NULL 运算符。
逻辑运算符
NOT 运算符
- NOT 不能单独使用,必须和其他查询条件组合起来使用,NOT 运算符用来否定某一条件,但是不能滥用。
AND 运算符和 OR 运算符
- 在 WHERE 子句中使用 AND 运算符或者 OR 运算符,可以对多个查询条件进行组合。AND 运算符在其两侧的查询条件都成立时整个查询条件才成立,其意思相当于“并且”。OR 运算符在其两侧的查询条件有一个成立时整个查询条件都成立,其意思相当于“或者”(AND 运算符的优先级高于 OR 运算符。想要优先执行 OR 运算符时可以使用括号。)
知识检验:
1、编写一条 SQL 语句,从 Product (商品)表中选取出“登记日期( regist_date )在 2009 年 4 月 28 日之后”的商品。查询结果要包含 product_name 和 regist_date 两列。
SELECT
product_name,
regist_date
FROM
product
WHERE
regist_date > "2009-04-28"
2、代码清单中的 SELECT 语句能够从 Product 表中取出“销售单价( sale_price )比进货单价( purchase_price )高出 500日元以上”的商品。请写出两条可以得到相同结果的 SELECT 语句。执行结果如下所示。
SELECT product_name, sale_price, purchase_price FROM Product WHERE sale_price - purchase_price >= 500;
-- SELECT语句①
SELECT product_name, sale_price, purchase_price
FROM Product
WHERE sale_price >= purchase_price + 500;
-- SELECT语句②
SELECT product_name, sale_price, purchase_price
FROM Product
WHERE sale_price - 500 >= purchase_price;
3、请写出一条 SELECT 语句,从 Product 表中选取出满足“销售单价打九折之后利润高于 100 日元的办公用品和厨房用具”条件的记录。查询结果要包括 product_name 列、 product_type 列以及销售单价打九折之后的利润(别名设定为 profit )。
提示:销售单价打九折,可以通过 sale_price 列的值乘以 0.9 获得,利润可以通过该值减去 purchase_price 列的值获得。
SELECT
product_name,
product_type,
sale_price * 0.9 - purchase_price AS profit
FROM
product
WHERE
sale_price * 0.9 - purchase_price > 100
AND ( product_type = '办公用品'
OR product_type = '厨房用具');