SELECT product_id, product_name, purchase_price
FROM Product;
product_id | product_name | purchase_price |
---|---|---|
0001 | T恤衫 | 500 |
0002 | 打孔器 | 320 |
0003 | 运动T恤 | 2800 |
0004 | 菜刀 | 2800 |
0005 | 高压锅 | 5000 |
0006 | 叉子 | NA |
0007 | 擦菜板 | 790 |
0008 | 圆珠笔 | NA |
Rui
November 9, 2022
一些未知的原因导致我不能使用 SQL 代码块创建表,但可以使用查询。所以我事先使用以下代码把示例数据在 PostgreSQL 中创建好,之后再通过 SQL 代码块查询。
-- 创建数据库
CREATE DATABASE shop;
-- 创建表
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id));
-- DML:插入数据
START TRANSACTION;
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
COMMIT;
使用 SELECT 语句从表中选取列数据,该过程称为匹配查询或查询(query)
基本用法:包含 SELECT 和 FROM 两个子句
SELECT <列名>, ...
FROM <表名>;
比如:
想查询所有列时使用星号(*)
SELECT *
FROM <表名>;
使用 AS 关键字为列设定别名。比如:
有的时候,表中某一列中的元素全部都相同,称为常数。可以使用 SELECT 子句对常数设置别名,比如:某一列全为字符串常数 “商品”,某一列全为数值型常数 38,还有一列全为日期常数 “2009-02-24”,那么可以设置
SELECT '商品' AS string, 38 AS number, '2009-02-24' AS date, product_id, product_name
FROM Product;
想知道 Product 表格中有哪些商品?删除 product_type 的重复值即可得到,那么要怎么删除重复值呢?可以在 SELECT 子句中使用 DISTINCT 实现:
DISTINCT 也可用于多列,此时会将多列的数据组合,将重复的数据合并为一条:
前面讲的是如何将某一列或某几列的数据全部选取出来,可不可以按照条件把符合该条件的记录选取出来呢?当然可以,使用 WHERE 语句可以实现。
SELECT <列名>, ...
FROM <表名>
WHERE <条件表达式>;
比如:
使用 --
书写单行注释
使用 /*
和 */
书写多行注释