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 TRANSACTION
和COMMIT
.其实是确保在插入之后数据立马进入表格,在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;
网友评论