是不是学 SQL 时总在查询环节卡壳?对着满屏数据想找条记录,写了半天代码要么查不出结果,要么跳出 “语法错误”;好不容易记住了 SELECT 基本格式,加个条件就懵,WHERE 后面的逻辑总写错;看到别人用排序、筛选查数据很轻松,自己却不知道该从哪下手。新手学 SQL,查询语句是最常用也最容易劝退人的部分,但其实只要找对方法,跟着实战案例练,根本不用死记硬背。今天兔子哥就带大家从零基础开始,把数据库查询的实战步骤拆解开,每个案例都能直接抄代码,练完你会发现,查询数据原来这么简单!
基础问题:SQL 查询到底是啥?为啥它是数据库的 “核心技能”?
可能有朋友会问:“查询不就是找数据吗?有那么重要吗?” 当然重要!你可以把数据库想象成一个超大的 Excel 表格,里面存着成百上千条数据,比如员工信息、商品订单。而 SQL 查询语句就是 “智能筛选器”,能帮你从海量数据里快速捞出想要的内容 —— 比如 “查所有月薪过万的员工”“找近 30 天销量前 5 的商品”,这些都得靠查询语句实现。
为啥说它是核心技能?因为咱们用数据库,80% 的操作都是在查数据。做报表要查、做分析要查、日常核对数据也要查。不会查询语句,数据库里的数据就是一堆乱码,根本用不起来。网友 “小运营” 说:“之前用 Excel 筛选数据要点半天,学了 SQL 查询后,一句代码搞定,现在做报表效率翻了倍!” 所以呀,学好查询语句,才算真正会用数据库。
实战准备:先建个表,有数据才能练查询
学查询得有 “原材料”,咱们先建个 “员工表”(employee),存编号、姓名、部门、月薪、入职日期,后面的案例都用这个表:
sql
-- 创建员工表CREATE TABLE employee (id INT, -- 员工编号name VARCHAR(20), -- 姓名department VARCHAR(20), -- 部门salary INT, -- 月薪(元)hire_date DATE -- 入职日期);-- 插入测试数据INSERT INTO employee (id, name, department, salary, hire_date)VALUES(1, '张三', '技术部', 12000, '2020-03-15'),(2, '李四', '销售部', 8000, '2021-05-20'),(3, '王五', '技术部', 15000, '2019-11-10'),(4, '赵六', '人事部', 6000, '2022-01-05'),(5, '孙七', '销售部', 9000, '2021-08-30');执行这两段代码,数据库里就有 5 条员工数据了,接下来的查询都基于这个表练手,新手可以跟着抄一遍,确保数据和表结构一致。
实战步骤 1:最简单的查询 —— 查所有或指定字段
刚入门先练 “无条件查询”,就像把整个 Excel 表摊开看,或只看某几列:
基础语法
sql
-- 查所有字段(*表示所有列)SELECT * FROM 表名;-- 查指定字段(列)SELECT 字段1, 字段2 FROM 表名;实战案例
sql
-- 查所有员工的所有信息SELECT * FROM employee;-- 只查员工姓名和部门SELECT name, department FROM employee;-- 查所有部门(去重,避免重复显示)SELECT DISTINCT department FROM employee; -- DISTINCT能去掉重复的部门效果:第一段代码会显示所有 5 条员工记录;第二段只显示姓名和部门两列;第三段会显示 “技术部、销售部、人事部” 三个不重复的部门。
避坑点:
- 字段名之间用英文逗号隔开,最后一个字段后别加逗号(比如
name, department不能写成name, department,); DISTINCT要写在SELECT后面,比如SELECT DISTINCT department,别放错位置;- 语句末尾必须加英文分号,少个分号就会提示 “语法错误”。
实战步骤 2:带条件查询 —— 用 WHERE 筛选数据
实际查询很少查所有数据,大多要带条件,比如 “查技术部的员工”“找月薪过万的人”,这时候就得用 WHERE:
基础语法
sql
SELECT 字段 FROM 表名 WHERE 条件;常用条件符号
| 符号 | 含义 | 例子 |
|---|---|---|
| = | 等于 | department = '技术部' |
| > | 大于 | salary > 10000 |
| < | 小于 | salary < 8000 |
| >= | 大于等于 | salary >= 10000 |
| <= | 小于等于 | salary <= 8000 |
| LIKE | 包含(模糊查询) | name LIKE '%三%'(查姓名带 “三” 的) |
| AND | 并且(多条件) | department = '技术部' AND salary > 10000 |
| OR | 或者(多条件) | department = '技术部' OR department = '销售部' |
实战案例
sql
-- 查技术部的员工SELECT name, salary FROM employee WHERE department = '技术部';-- 查月薪过万的员工SELECT name, department, salary FROM employee WHERE salary > 10000;-- 查销售部且月薪大于8000的员工(多条件AND)SELECT name, salary FROM employeeWHERE department = '销售部' AND salary > 8000;-- 查姓名带“三”的员工(模糊查询)SELECT name, department FROM employee WHERE name LIKE '%三%';效果:第一段会查出张三、王五;第二段会查出张三、王五;第三段会查出孙七;第四段会查出张三。
避坑点:
- 字符串条件(比如部门名、姓名)必须用英文单引号,比如
department = '技术部'不能写成department = 技术部; - 模糊查询用
LIKE时,%表示 “任意字符”,比如%三%表示 “中间有三的”,三%表示 “以三开头的”; - 多条件用
AND(并且)或OR(或者)连接,别用中文 “和”“或”。
实战步骤 3:排序查询 —— 用 ORDER BY 排顺序
查出来的数据乱乱的?可以用 ORDER BY 按某个字段排序,比如按月薪从高到低排:
基础语法
sql
SELECT 字段 FROM 表名 WHERE 条件 ORDER BY 排序字段 排序方式;-- 排序方式:ASC(升序,默认)、DESC(降序)实战案例
sql
-- 按月薪从高到低排序(降序)SELECT name, salary FROM employee ORDER BY salary DESC;-- 查技术部员工,按入职日期从早到晚排(升序)SELECT name, hire_date FROM employeeWHERE department = '技术部'ORDER BY hire_date ASC; -- ASC可省略,默认就是升序效果:第一段会把王五(15000)、张三(12000)、孙七(9000)依次排前面;第二段会把王五(2019 年入职)排张三(2020 年)前面。
避坑点:
ORDER BY要写在语句最后,不能放WHERE前面(比如SELECT * FROM employee ORDER BY salary WHERE department='技术部'是错的);- 降序必须写
DESC,升序可以写ASC或不写; - 可以按多个字段排序,比如
ORDER BY department ASC, salary DESC(先按部门升序,同部门再按薪资降序)。
常见错误对比:新手最容易踩的坑,这样避!
| 错误写法 | 问题所在 | 正确写法 |
|---|---|---|
SELECT name salary FROM employee; | 字段间漏了逗号 | SELECT name, salary FROM employee; |
SELECT * FROM employee WHERE department = 技术部; | 字符串没加单引号 | department = '技术部' |
SELECT name FROM employee WHERE salary > 10000 ORDER BY salary; | 排序放错位置(其实没错,但建议条件在前) | 位置没错,但习惯写法是WHERE在前,ORDER BY在后 |
SELECT name FROM employee WHERE department = '技术部' AND salary > 10000; | 无错误,但新手易漏AND | 正确写法,多条件记得用AND |
自问自答:新手练查询常见疑问
记不住那么多语法,总是漏细节怎么办?
不用死记!新手先记住 “SELECT 字段 FROM 表名 WHERE 条件 ORDER BY 字段;” 这个基本结构,多写几次就熟了。可以把常用条件符号(=、>、AND、LIKE)抄在纸上,练的时候对着写,用多了自然就记住了。
数据量太大,查一次卡半天怎么办?
可以用
LIMIT限制显示条数,比如SELECT * FROM employee LIMIT 3;只显示前 3 条数据,适合快速预览。查的时候尽量只查需要的字段(别总用*),比如SELECT name, salary比SELECT *效率高。除了这些,还有更复杂的查询吗?需要学吗?
当然有,比如分组查询(GROUP BY)、多表连接查询,但新手不用急。先把单表查询的基础练熟,再慢慢学复杂的。基础打牢了,学进阶内容会很顺,不然容易越学越乱。
最后说点实在话
新手学 SQL 查询,最忌讳 “只看不动手”。看教程觉得简单,自己写却到处出错,这太正常了。我刚开始学的时候,把 “ORDER BY” 写成 “ORDER BYS”,查了半天没结果;用
LIKE时忘了加%,结果一条数据都查不出来。但这些错误都是必经之路,解决多了,你会越来越熟练。建议大家每天花 10 分钟,用上面的员工表练几个查询案例,从简单到复杂慢慢加条件。比如今天练带
WHERE的查询,明天加ORDER BY排序,后天试试模糊查询。坚持一周,你会发现自己写查询语句越来越顺,查数据再也不用对着表发呆了。记住,SQL 是工具,用得越多越顺手,别怕犯错,动手练才是最快的入门方法!版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~