1. SELECT 语句
1.1 基本 SELECT 语法
SELECT
语句用于从数据库中检索数据。基本语法如下:
SELECT column1, column2, ... FROM table_name;
例如,从 users
表中检索所有列的数据:
SELECT * FROM users;
1.2 使用 WHERE 条件
WHERE
子句用于过滤数据,仅返回满足条件的记录。基本语法如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
例如,查询用户名为 alice
的用户:
SELECT * FROM users WHERE username = 'alice';
1.3 排序与限制(ORDER BY, LIMIT)
ORDER BY
子句用于对查询结果进行排序。LIMIT
子句用于限制返回的记录数。
基本语法如下:
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC] LIMIT number;
例如,按创建时间排序并返回前 5 条记录:
SELECT * FROM users ORDER BY created_at DESC LIMIT 5;
2. INSERT 语句
2.1 基本 INSERT 语法
INSERT
语句用于向表中插入数据。基本语法如下:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
例如,向 users
表中插入一条新记录:
INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');
2.2 插入多条记录
可以一次插入多条记录:
INSERT INTO users (username, email) VALUES ('charlie', 'charlie@example.com'), ('dave', 'dave@example.com');
2.3 插入数据的注意事项
- 插入的数据类型必须与列的数据类型匹配。
- 插入记录时,如果某列没有提供值且该列定义了默认值,则使用默认值。
3. UPDATE 语句
3.1 基本 UPDATE 语法
UPDATE
语句用于更新表中的数据。基本语法如下:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
例如,更新 bob
的电子邮件地址:
UPDATE users SET email = 'bob@newdomain.com' WHERE username = 'bob';
3.2 更新多个列
可以同时更新多个列:
UPDATE users SET email = 'dave@newdomain.com', username = 'dave_new' WHERE username = 'dave';
3.3 使用 RETURNING 返回更新后的数据
RETURNING
子句用于返回更新后的数据:
UPDATE users SET email = 'bob@anotherdomain.com' WHERE username = 'bob' RETURNING *;
4. DELETE 语句
4.1 基本 DELETE 语法
DELETE
语句用于从表中删除数据。基本语法如下:
DELETE FROM table_name WHERE condition;
例如,删除用户名为 charlie
的用户:
DELETE FROM users WHERE username = 'charlie';
4.2 使用 RETURNING 返回删除的数据
RETURNING
子句用于返回删除的数据:
DELETE FROM users WHERE username = 'charlie' RETURNING *;
5. 实战演练
5.1 练习题目
-
创建一个新表
products
,包括以下列:id
(整数,主键,自增)name
(字符串,最大长度 100,不为空)price
(浮点数,不为空)created_at
(时间戳,默认为当前时间)
-
向
products
表中插入以下数据:name
为Laptop
,price
为 1200.00name
为Smartphone
,price
为 800.00
-
查询
products
表中所有价格大于 1000 的产品。 -
将
Laptop
的价格更新为 1000.00,并返回更新后的记录。 -
删除
Smartphone
产品,并返回删除的记录。
5.2 示例答案
- 创建表:
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price NUMERIC NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
- 插入数据:
INSERT INTO products (name, price)
VALUES
('Laptop', 1200.00),
('Smartphone', 800.00);
- 查询价格大于 1000 的产品:
SELECT * FROM products WHERE price > 1000;
- 更新
Laptop
的价格并返回更新后的记录:
UPDATE products SET price = 1000.00 WHERE name = 'Laptop' RETURNING *;
- 删除
Smartphone
产品并返回删除的记录:
DELETE FROM products WHERE name = 'Smartphone' RETURNING *;