您现在的位置是:烟消火灭网 > 综合
sql数据库教程
烟消火灭网2026-10-17 07:58:44【综合】7人已围观
简介学SQL最有效的方式,是直接打开一个数据库,敲下第一行查询。装个MySQL或者用SQLite在线工具,五分钟就能跑起来。别翻着书看三天语法再动手,那样忘得比记得快。 先搞清楚一件事:SQL不是编程语言
学SQL最有效的据库教程方式,是据库教程直接打开一个数据库,敲下第一行查询。据库教程装个MySQL或者用SQLite在线工具,据库教程五分钟就能跑起来。据库教程别翻着书看三天语法再动手,据库教程那样忘得比记得快。据库教程
先搞清楚一件事:SQL不是据库教程编程语言,它是据库教程查询语言。你不需要定义变量、据库教程写循环、据库教程搞面向对象。据库教程它的据库教程核心就四个动作——增、删、据库教程改、据库教程查。日常工作中,查占了八成以上。
SELECT:你每天都在用的东西
假设有张表叫 users,字段是 id, name, age, city。最简单的查询:
SELECT * FROM users; 星号代表所有列。但生产环境别这么干,数据量一大就卡死。养成习惯,要什么列写什么列:
SELECT name, city FROM users; 加条件用 WHERE:
SELECT name FROM users WHERE age > 25 AND city = '杭州'; 这里有个坑。字符串用单引号,不是双引号。双引号在标准SQL里是标识符(比如列名),MySQL里虽然能混用,但换个数据库就报错。我见过不少人栽在这上面。
排序和限制行数
查出来的数据默认顺序不可预测。要排序得明确指定:
SELECT name, age FROM users ORDER BY age DESC; DESC 是降序,ASC 是升序(默认)。想看年龄最大的三个人:
SELECT name, age FROM users ORDER BY age DESC LIMIT 3; LIMIT 在MySQL、PostgreSQL、SQLite里都通用。SQL Server用的是 TOP,Oracle用 ROWNUM,这点差异记住就行。
聚合:把多行压成一行
想知道用户平均年龄:
SELECT AVG(age) FROM users; 按城市分组算平均:
SELECT city, AVG(age) FROM users GROUP BY city; GROUP BY 后面跟的列,必须出现在 SELECT 里,否则报错。这个规则新手经常忘。配合 HAVING 可以过滤分组结果:
SELECT city, COUNT(*) FROM users GROUP BY city HAVING COUNT(*) > 10; WHERE 过滤行,HAVING 过滤组。别搞反了。
多表查询:JOIN 没那么可怕
两张表:users 和 orders。orders 里有 user_id 指向 users.id。想查每个订单对应的用户名:
SELECT users.name, orders.amount FROM orders JOIN users ON orders.user_id = users.id; JOIN 默认是 INNER JOIN,只返回两边都匹配的行。如果要保留没有订单的用户,用 LEFT JOIN:
SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id; 这时候没有订单的用户,amount 列会是 NULL。处理 NULL 用 COALESCE(amount, 0) 换成零。
改数据:小心再小心
插入:
INSERT INTO users (name, age, city) VALUES ('张三', 28, '北京'); 更新:
UPDATE users SET age = 29 WHERE id = 1; 删:
DELETE FROM users WHERE id = 1; 三条铁律:UPDATE 和 DELETE 必须带 WHERE;执行前先用 SELECT 验证条件;生产环境操作前备份。我亲眼见过有人漏写 WHERE,一张表几万行瞬间清空,恢复花了四小时。
索引:让查询快起来
表大了之后,WHERE age > 25 会全表扫描。给 age 加索引:
CREATE INDEX idx_age ON users(age); 再查就快了。但索引不是越多越好,每次插入、更新都要维护索引,写操作会变慢。通常只在 WHERE、JOIN、ORDER BY 频繁用到的列上加。
用 EXPLAIN 看查询计划:
EXPLAIN SELECT * FROM users WHERE age > 25; 输出里 type 是 ALL 说明全表扫描,ref 或 range 才算用上了索引。
学SQL就一条路:找张真实的数据表,把上面这些语句挨个敲一遍。出错就查文档,别怕报错。报错信息比任何教程都直接。
很赞哦!(7584)
上一篇: 手机棋牌app赌博破案示例
下一篇: 渗透全称







