Mysql?基础语法!!!
作为程序员、数据分析从业者,甚至是产品运营,SQL都是必须掌握的核心技能。不管是后端开发对数据库增删改查,还是数据分析提取业务数据,本质都是在写SQL语句。
很多新手觉得SQL难,其实是没有理清逻辑。SQL的核心逻辑非常简单,所有基础操作都围绕增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)四大核心展开,其中查询语句是重中之重,占据日常使用的90%以上。
今天这篇博客,我将从零开始,梳理最常用、最实用的基础SQL语句,搭配通俗易懂的示例,看完就能直接上手实操!
一、SQL前置基础认知
1. 什么是SQL?
SQL(Structured Query Language,结构化查询语言)是用于操作关系型数据库(MySQL、Oracle、SQL Server等)的标准化语言,专门用来实现数据库数据的查询、新增、修改、删除、管理等操作。
2. 核心分类(新手必记)
日常开发99%的场景只用掌握 DML数据操作语言,也就是我们常说的增删改查:
-
查询(SELECT):读取数据库数据(使用频率最高)
-
新增(INSERT):向数据表添加新数据
-
修改(UPDATE):更新数据表已有数据
-
删除(DELETE):删除数据表数据
其他DDL(数据库结构定义)、DCL(权限管理)语句,新手入门阶段只需简单了解即可。
3. 通用规范
-
SQL语句不区分大小写,select和SELECT效果一致,建议关键字大写,可读性更强
-
每条语句以分号 ; 结尾
-
字符串数据用单引号 '' 包裹,数字无需引号
-
可随意换行、空格,不影响语句执行
后文所有示例,均基于常用的用户表 user(id、username、age、gender、create_time)演示,贴合真实业务场景。
二、核心重点:SELECT 查询语句
查询是SQL的核心,所有数据提取、统计、筛选都依赖SELECT,语法灵活且用法最多,我们从基础到常用进阶逐一讲解。
1. 基础查询
查询指定字段数据,是最常用的基础写法:
-- 查询表中所有字段数据(* 代表所有字段)
SELECT * FROM user;
-- 查询指定字段:用户名、年龄
SELECT username, age FROM user;
2. 去重查询 DISTINCT
查询结果中去除重复数据,只展示唯一值:
-- 查询用户所有唯一的年龄
SELECT DISTINCT age FROM user;
3. 条件查询 WHERE(重中之重)
通过条件筛选符合要求的数据,支持多种运算符(>、<、=、!=、AND、OR、IN、LIKE等)。
-- 查询年龄为20岁的用户
SELECT * FROM user WHERE age = 20;
-- 查询年龄大于18岁的成年用户
SELECT * FROM user WHERE age > 18;
-- 查询年龄在18-30岁之间的用户
SELECT * FROM user WHERE age >= 18 AND age <= 30;
-- 查询性别为男 或 年龄30岁的用户
SELECT * FROM user WHERE gender = '男' OR age = 30;
-- 查询年龄为18、20、25岁的用户
SELECT * FROM user WHERE age IN (18,20,25);
-- 模糊查询:用户名包含“张”的用户
SELECT * FROM user WHERE username LIKE '%张%';
-- 模糊查询:用户名以“李”开头
SELECT * FROM user WHERE username LIKE '李%';
4. 排序查询 ORDER BY
对查询结果进行排序,ASC 升序(默认),DESC 降序:
-- 按年龄升序排序(从小到大)
SELECT * FROM user ORDER BY age ASC;
-- 按创建时间降序排序(最新用户在前)
SELECT * FROM user ORDER BY create_time DESC;
5. 分页查询 LIMIT
用于限制查询数据条数,解决数据过多加载缓慢的问题,是项目分页功能的核心:
-- 查询前10条数据
SELECT * FROM user LIMIT 10;
-- 分页:第1页,每页10条(偏移量0,条数10)
SELECT * FROM user LIMIT 0,10;
-- 分页:第2页,每页10条(偏移量10,条数10)
SELECT * FROM user LIMIT 10,10;
6. 聚合函数统计
用于数据统计、计算,常用5大聚合函数:COUNT(计数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)
-- 统计用户总数量
SELECT COUNT(*) FROM user;
-- 统计所有用户的年龄总和
SELECT SUM(age) FROM user;
-- 计算用户平均年龄
SELECT AVG(age) FROM user;
-- 查询最大年龄、最小年龄
SELECT MAX(age), MIN(age) FROM user;
7. 分组查询 GROUP BY
根据指定字段分组统计,常和聚合函数搭配使用,HAVING 用于筛选分组后的结果(WHERE筛选分组前数据):
-- 按性别分组,统计每种性别的用户数量
SELECT gender, COUNT(*) AS user_num FROM user GROUP BY gender;
-- 按年龄分组,筛选出用户数量大于2的年龄组
SELECT age, COUNT(*) AS user_num FROM user GROUP BY age HAVING user_num > 2;
三、新增语句:INSERT
用于向数据表中添加新数据,支持单条、多条新增:
-- 单条数据新增(指定字段)
INSERT INTO user (username, age, gender, create_time)
VALUES ('张三', 22, '男', NOW());
-- 多条数据批量新增(高效写法,推荐)
INSERT INTO user (username, age, gender, create_time)
VALUES
('李四', 25, '女', NOW()),
('王五', 28, '男', NOW());
-- 不指定字段新增(必须按表字段顺序传值)
INSERT INTO user VALUES (NULL, '赵六', 23, '女', NOW());
四、修改语句:UPDATE
更新数据表中已有数据,务必加WHERE条件!!! 不加条件会更新全表数据,属于高危操作!
-- 修改指定用户的年龄
UPDATE user SET age = 24 WHERE username = '张三';
-- 同时修改多个字段
UPDATE user SET age = 26, gender = '女' WHERE id = 2;
-- 高危!无WHERE条件,会更新全表所有数据,禁止随意使用
UPDATE user SET age = 20;
五、删除语句:DELETE
删除数据表数据,同样必须携带WHERE条件,否则清空全表数据!
-- 删除指定用户数据
DELETE FROM user WHERE username = '赵六';
-- 删除年龄小于18岁的用户
DELETE FROM user WHERE age < 18;
-- 高危!无WHERE条件,清空整张表数据
DELETE FROM user;
六、新手必避的5个SQL坑
很多新手写SQL报错、出bug,基本都是踩了这些基础坑,一定要牢记:
-
UPDATE/DELETE 不带WHERE条件:直接操作全表数据,生产环境极易造成数据事故,操作前务必核对条件
-
模糊查询 %前缀过多:LIKE '%张三' 无法走索引,数据量大时查询极慢,尽量避免左模糊
-
GROUP BY 字段不规范:分组查询时,非聚合字段必须出现在GROUP BY中,否则会报错
-
字符串未加单引号:字符、时间类型数据必须用''包裹,数字类型无需引号,混用会直接报错
-
忽略NULL值判断:判断字段为空不能用 = NULL,必须用 IS NULL / IS NOT NULL
七、总结
SQL的基础核心完全围绕增删改查展开,其中SELECT查询是学习和使用的重点,90%的工作场景只需要熟练掌握条件筛选、排序、分页、聚合统计、分组查询即可满足需求。
新手学习不用死记硬背,建议多动手实操,结合业务场景写语句,熟练掌握基础后,再进阶学习多表联查、子查询、索引优化等高阶内容。
后续我会继续更新SQL高阶用法、实战技巧、性能优化等内容,感兴趣可以持续关注!
更多推荐




所有评论(0)