好的!SQL(Structured Query Language)是用于管理关系型数据库的标准语言。让我们从最基础的增删改查(CRUD) 操作开始学习,我会用简单易懂的方式讲解每个操作。
🛠 准备工作(建表)
在开始之前,我们创建一个简单的学生表(student)
作为示例:
CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT, -- 学号(主键,自增长)name VARCHAR(50) NOT NULL, -- 姓名(非空)age INT, -- 年龄gender ENUM('男', '女'), -- 性别class VARCHAR(20) -- 班级
);
🔍 一、查(SELECT) - 读取数据
语法:
SELECT 列名 FROM 表名 [WHERE 条件] [ORDER BY 排序] [LIMIT 数量];
实例:
-- 查询所有学生信息
SELECT * FROM students;-- 查询所有女生的姓名和班级
SELECT name, class FROM students WHERE gender = '女';-- 查询20岁以上学生,按年龄降序排序
SELECT * FROM students WHERE age > 20 ORDER BY age DESC;-- 查询第5-10条记录(分页)
SELECT * FROM students LIMIT 4, 6;
➕ 二、增(INSERT) - 添加数据
语法:
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
实例:
-- 添加1位学生(指定列)
INSERT INTO students (name, age, gender, class)
VALUES ('张三', 18, '男', '计算机1班');-- 添加多位学生
INSERT INTO students (name, age, gender, class)
VALUES ('李四', 19, '女', '外语2班'),('王五', 20, '男', '物理3班');
🔄 三、改(UPDATE) - 修改数据
语法:
UPDATE 表名 SET 列1=值1, 列2=值2 [WHERE 条件];
**⚠️ 警告:** 不指定WHERE会修改整个表!
实例:
-- 修改张三的班级
UPDATE students SET class = '计算机2班' WHERE name = '张三';-- 所有人年龄增加1岁
UPDATE students SET age = age + 1;-- 修改多个字段
UPDATE students
SET age = 22, gender = '女'
WHERE name = '王五';
❌ 四、删(DELETE) - 删除数据
语法:
DELETE FROM 表名 [WHERE 条件];
**⚠️ 重要:** 删除操作不可逆,务必确认WHERE条件!
实例:
-- 删除名为李四的学生
DELETE FROM students WHERE name = '李四';-- 删除20岁以上所有女生
DELETE FROM students WHERE age > 20 AND gender = '女';-- ⚠️ 删除整张表(谨慎使用!)
DELETE FROM students;
📊 五、综合示例
假设我们有个成绩表(scores):
CREATE TABLE scores (student_id INT,subject VARCHAR(20),score INT,FOREIGN KEY (student_id) REFERENCES students(id)
);
增删改查组合使用:
-- 添加成绩
INSERT INTO scores VALUES
(1, '数学', 90),
(2, '英语', 85);-- 查询不及格的学生和科目
SELECT s.name, sc.subject, sc.score
FROM students s
JOIN scores sc ON s.id = sc.student_id
WHERE sc.score < 60;-- 修改张三的数学成绩
UPDATE scores SET score = 95
WHERE student_id = (SELECT id FROM students WHERE name = '张三')
AND subject = '数学';-- 删除所有成绩为0的记录
DELETE FROM scores WHERE score = 0;
💡 核心要点总结:
- 查(WHERE) :操作前先用
SELECT
确认数据 - 改/删(WHERE):必须有WHERE条件,否则会全表操作
- 外键关联:表连接时要使用JOIN
- 事务:重要操作建议用事务(BEGIN; ... COMMIT;)
📚 下一步学习建议:
graph LR
A[基础CRUD] --> B[条件查询]
B --> C[表连接JOIN]
C --> D[分组聚合GROUP BY]
D --> E[子查询]
E --> F[存储过程/函数]
从基础逐步进阶,多动手练习才能真正掌握!建议安装MySQL或SQLite进行实践练习。