比较运算符和NULL

2018-07-20  本文已影响0人  susupp
SELECT
product_name,
sale_price,
sale_price * 2 AS "sale_price_x2"
FROM
product;

不一定需要FROM其实

SELECT
5 + NULL,
10 - NULL,
1 * NULL,
4 / NULL,
NULL / 9,
NULL / 0;

当计算器

SELECT
(100 + 200) * 3 AS calculation;

比较

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


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

SELECT
product_name,
product_type,
regist_date
FROM
product 
/* 这里的regist_date是DATE类型的
右边的是字符串
其实在真正的比较的时候
数据库会根据左边的列的类型对右边的string进行类型转换
*/
WHERE
regist_date < '2019-09-27';

这里插入的时候有START TRANSACTIONCOMMIT.其实是确保在插入之后数据立马进入表格,在SELECT的时候就可以看到数据了。(是这样吗?)

CREATE TABLE CHARs (
    chr CHAR (3) NOT NULL,
    PRIMARY KEY (chr));

START 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;

SELECT
    chr
FROM
    chars
WHERE
    chr > '2';

关于比较运算符和NULL

SELECT
    product_name,
    purchase_price
FROM
    product
WHERE
/* purchase_price为NULL的叉子和圆珠笔
不会进入选择的行列
我们可以理解进行等式或者不等式的判断的时候
会有一条先决条件
先去看一下左边的值是不是NULL
如果是的话,那么判断不会执行
如果不是,才执行
*/
    purchase_price <> 2800;

SELECT
    product_name,
    purchase_price
FROM
    product
WHERE
-- 一条记录也取不出来
    purchase_price = NULL;

SELECT
    product_name,
    purchase_price
FROM
    Product
WHERE
/* 可以得到叉子和圆珠笔
不论是使用<>还是=,都无法选取出NULL的记录
因此,SQL提供了专门用来判断是否为NULL的IS NULL操作符
对应的,反向操作是IS NOT NULL
*/
    purchase_price IS NULL;
上一篇 下一篇

猜你喜欢

热点阅读