嘿,朋友们!如果你是刚入行软件测试的小伙伴,或者正在准备面试,那SQL绝对是绕不开的一道坎儿。很多教程上来就是一堆命令,搞得人一头雾水。别急,今天咱们就来抽丝剥茧,把这些基础操作一一拆解,用最通俗易懂的方式,帮你把SQL的“内功”练扎实。
先问大家一个问题:你有没有遇到过这种情况——明明数据库里存了一堆数据,但就是不知道怎么把它“揪”出来?或者面试官问“你写过SQL吗”,你只能支支吾吾说“写过一点点”?想学好SQL的朋友,都需要通盘搞清这些概念,才能把SQL落实到实际工作中,达到融会贯通的水平,做到手中有剑,心里不慌!
这也正是我自己理解SQL采用的方式,如果你也觉得这是一个不错的方式,那就花20分钟跟着我的思路来试一试吧,现在先把最核心的增删改查抛出来。
从“仓库管理员”视角理解SQL
你可以把数据库想象成一个大仓库,里面摆满了货架(也就是“表”)。那我们要对货架上的货物(数据)做什么呢?无非就是四件事:
- 查询(看看货架上有什么):
SELECT - 新增(放个新货上去):
INSERT - 修改(把旧货换个标签):
UPDATE - 删除(把不要的货拿走):
DELETE
是不是一下子就清晰了?这四兄弟就是SQL的“基本拳法”,后面所有操作都是它们的变种。
1. 精准定位:用 % 符号玩转模糊查询
平时我们查东西,经常只知道个大概。比如,我想找“姓K开头的员工”,或者“名字里带OK的人”,总不能把所有人的名字都背下来吧?这时候就需要模糊查询登场了。
单个 %:代表“任意数量的字符”
想象一下,% 就像一个万能填空符。它不挑食,能代表0个、1个、甚至100个字符。
SELECT * FROM emp WHERE name LIKE 'K%';
这句代码的意思就是:“请把emp表里,所有name字段以字母K开头的数据,都给我列出来!”
'K%' 中的 % 表示:K后面跟着什么都可以,哪怕是“K”自己(因为%也能代表0个字符)。
两个 %:代表“中间包含某段内容”
那如果我想找“名字里包含OK”的人呢?很简单,把OK夹在两个%中间就行了。
SELECT * FROM emp WHERE name LIKE '%OK%';
这就相当于告诉数据库:“我不关心OK前面是什么,也不关心OK后面是什么,只要名字里有OK这两个字母,就都给我抓出来!”
2. 去重统计:DISTINCT 的“独门规矩”
接下来聊聊 DISTINCT。它的作用很单纯:去重,也就是把重复的记录只算一次。
比如,你想知道公司里有多少个不同的部门ID(假设id字段代表部门编号),直接用 COUNT(id) 会把重复的也数进去。这时候就需要 DISTINCT 来帮忙了:
SELECT COUNT(DISTINCT id) FROM emp;
这条语句的意思是:“先找出emp表里所有不重复的id,然后再数一数一共有几个。”
但是! 这里有个工程视角的小坑,很多新手会掉进去:
- 规矩一:
DISTINCT只能管它后面的那个字段。你不能说“给我返回不重复的id,同时把name也带上”,因为DISTINCT只对id生效,name字段它管不着。 - 规矩二:它必须放在
SELECT后面第一个位置,就像排队买票,它得站第一个。 - 规矩三:它只能在
SELECT语句里用,不能跑到INSERT或UPDATE里捣乱。
3. 字符串处理:给数据“剪裁”和“拼接”
数据库里的数据经常是“毛坯房”,我们需要用一些函数把它变成“精装房”。这部分特别像我们平时处理文本,循序渐进地来学。
大小写转换:UPPER() 和 LOWER()
这俩兄弟最简单粗暴,一个负责把字母变大写,一个负责变小写。比如把用户输入的内容统一转成大写再去比对,能避免大小写不一致导致的查询失败。
字符串拼接:CONCAT()
想把“姓”和“名”拼成一个完整的“姓名”?用 CONCAT() 就行。比如 CONCAT(first_name, last_name),就像把两个积木拼在一起。
截取字符串:LEFT(), RIGHT(), SUBSTRING()
这是最常用的“剪裁”操作,我们通过几个例子来理解:
-
从左边剪:
LEFT(2022, 2)
意思是:从字符串“2022”的左边开始,给我剪2个字符。结果就是20。 -
从右边剪:
RIGHT(2022, 2)
反过来,从右边开始剪2个字符。结果就是22。 -
从中间剪:
SUBSTRING(name, 5, 3)
这个最灵活,它的参数是SUBSTRING(字段名, 起始位置, 截取长度)。
意思就是:从name字段的第5个字符开始,往后数3个字符,把它们截出来。
小贴士:很多数据库里,字符串的起始位置是从
1开始数的,不是0哦!这一点和很多编程语言不一样,千万别搞混了。
好了,到这里,SQL的基础查询、模糊匹配、去重统计和字符串处理,我们就都捋了一遍。是不是感觉没有想象中那么难?其实SQL就像搭积木,把每一个小概念搞懂,再组合起来,就能解决各种复杂的问题。
如果你觉得这个循序渐进的方式对你有帮助,不妨现在就打开你的数据库工具,把上面的例子都跑一遍。动手实践才是最好的老师! 下一次,咱们可以聊聊更高级的 JOIN 多表查询,看看怎么把不同的“货架”关联起来。准备好了吗?
想学好SQL?光看不练假把式,动手敲起来才是真本事!
这份超全SQL自学大礼包送给你:干货资料+实战练习+视频教程,一站式搞定!裂墙推荐这个自学神器👉🏻 SQL自学网 xuesql.cn 新手友好,零基础也能稳稳上车,冲就完事了:www.w3schools.com