sql数据库查询实战教程新手入门

admin 数据库教程 3


是不是学 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, salarySELECT *效率高。

除了这些,还有更复杂的查询吗?需要学吗?


当然有,比如分组查询(GROUP BY)、多表连接查询,但新手不用急。先把单表查询的基础练熟,再慢慢学复杂的。基础打牢了,学进阶内容会很顺,不然容易越学越乱。


最后说点实在话


新手学 SQL 查询,最忌讳 “只看不动手”。看教程觉得简单,自己写却到处出错,这太正常了。我刚开始学的时候,把 “ORDER BY” 写成 “ORDER BYS”,查了半天没结果;用LIKE时忘了加%,结果一条数据都查不出来。但这些错误都是必经之路,解决多了,你会越来越熟练。
建议大家每天花 10 分钟,用上面的员工表练几个查询案例,从简单到复杂慢慢加条件。比如今天练带WHERE的查询,明天加ORDER BY排序,后天试试模糊查询。坚持一周,你会发现自己写查询语句越来越顺,查数据再也不用对着表发呆了。记住,SQL 是工具,用得越多越顺手,别怕犯错,动手练才是最快的入门方法!

标签: '2020-03-15' '2021-05-20'

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~