一、创建数据(Create)
INSERT语句
用于向表中添加新记录,基本语法:
sql
INSERT INTO 表名 (字段1, 字段2, ...)
VALUES (值1, 值2, ...);
示例
向students表插入数据:
sql
INSERT INTO students (name, age, grade)
VALUES ('张三', 18, 'A');
批量插入
sql
INSERT INTO students (name, age, grade)
VALUES
('李四', 19, 'B'),
('王五', 17, 'A+');
注意
- 字段与值必须一一对应
- 省略字段名时需提供所有字段的值
- 自增字段(如ID)无需手动插入
二、读取数据(Read)
SELECT语句
基础查询结构:
sql
SELECT 字段1, 字段2, ... FROM 表名 [WHERE 条件];
1. 全字段查询
sql
SELECT * FROM students;
2. 条件筛选
sql
SELECT name, grade FROM students
WHERE age > 18;
3. 高级查询
此处ORDER....BY是排序,对BY后的字段进行排序,用ASC表示升序,DESC表示降序,默认是ASC~~
-
排序
sqlSELECT * FROM students ORDER BY age DESC; -
限制条数
sqlSELECT * FROM students LIMIT 5; -
模糊查询
sqlSELECT * FROM students WHERE name LIKE '张%';
三、更新数据(Update)
UPDATE语句
sql
UPDATE 表名
SET 字段1=新值1, 字段2=新值2
[WHERE 条件];
示例
将李四的年级改为'A':
sql
UPDATE students
SET grade = 'A'
WHERE name = '李四';
必须使用WHERE子句,否则会更新整张表!
四、删除数据(Delete)
DELETE语句
sql
DELETE FROM 表名 [WHERE 条件];
删除年龄小于18的学生:
sql
DELETE FROM students
WHERE age < 18;
清空表
sql
TRUNCATE TABLE students; -- 不可恢复,慎用!
综合习题训练
习题1:基础操作
- 创建
products表(含id, name, price字段) - 插入3条商品数据
- 查询价格超过100元的商品名称
- 将所有商品价格打9折
- 删除价格低于50元的商品
习题2:复杂查询
现有订单表orders结构:
sql
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
quantity INT,
order_date DATE
);
- 查询2023年1月的订单总量
- 统计每个产品的总销售额(需关联产品价格表)
- 找出单次订购数量超过10的客户ID
习题3:安全实践
-
解释为什么以下语句危险:
sqlUPDATE users SET password = '123456'; -
如何防止误删整个表?
-
写出带备份机制的删除语句模板
习题参考答案
习题1答案
sql
-- 1. 建表
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
-- 2. 插入数据
INSERT INTO products (name, price) VALUES
('笔记本', 5999.00),
('鼠标', 89.90),
('键盘', 299.00);
-- 3. 查询
SELECT name FROM products WHERE price > 100;
-- 4. 更新
UPDATE products SET price = price * 0.9;
-- 5. 删除
DELETE FROM products WHERE price < 50;
习题2答案
sql
-- 1.
SELECT SUM(quantity) FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
-- 2.
SELECT p.name, SUM(o.quantity * p.price) AS total_sales
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY p.name;
-- 3.
SELECT customer_id FROM orders
WHERE quantity > 10;
习题3答案
-
缺少WHERE条件会更新所有用户的密码
-
使用事务或先备份:
sqlSTART TRANSACTION; DELETE FROM table_name WHERE ...; -- 确认无误后 COMMIT; -
安全删除模板:
sqlCREATE TABLE backup_table AS SELECT * FROM target_table; DELETE FROM target_table WHERE condition;
反复练习这些基础操作,可显著提升SQL语句的准确性~~~