关于sql语句的练习
本文最后更新于57 天前,其中的信息可能已经过时,如有错误请发送邮件

一、SQL 基础语法核心

所有SQL语句都遵循一个原则:关键字不区分大小写,语句结尾必须加分号 ;书写时建议关键字大写,可读性更强。

1. 数据库 & 表基础操作(DDL)

复习第一步:先会建库、建表、删库、删表,是所有操作的基础。

— 创建数据库

CREATE DATABASE IF NOT EXISTS test_db;

— 使用数据库

USE test_db;

— 删除数据库

DROP DATABASE IF EXISTS test_db;

— 创建数据表(最常用示例:用户表)

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    username VARCHAR(20) NOT NULL COMMENT '用户名',
    age INT DEFAULT 0 COMMENT '年龄',
    create_time DATETIME DEFAULT NOW() COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

— 删除表

DROP TABLE IF EXISTS user;

2. 数据增删改(DML)

— 新增数据 INSERT

INSERT INTO user(username,age) VALUES ('张三',20),('李四',22);

— 修改数据 UPDATE(必须加WHERE,否则改全表)

UPDATE user SET age=21 WHERE username='张三';

— 删除数据 DELETE(必须加WHERE,否则删全表)

DELETE FROM user WHERE username='李四';

二、DQL 查询语法

查询是SQL的灵魂,无论是开发查数据、数据分析统计,90%的工作都是写查询语句。

1. 基础查询语法结构(固定顺序,必须牢记)

完整查询语句执行顺序:

SELECT 字段 FROM 表名 WHERE 条件 GROUP BY 分组 HAVING 分组条件 ORDER BY 排序 LIMIT 分页

2. 常用基础查询

— 查询所有字段

SELECT * FROM user;

— 查询指定字段

SELECT id,username,age FROM user;

— 别名查询 AS(可省略)

SELECT username AS 姓名,age 年龄 FROM user;

— 去重查询 DISTINCT

SELECT DISTINCT age FROM user;

3. 条件查询 WHERE(核心筛选)

常用运算符:>、<、=、!=、>=、<=BETWEEN ANDINLIKEIS NULL

-- 查询年龄20岁的用户
SELECT * FROM user WHERE age=20;

-- 查询年龄18-22岁的用户
SELECT * FROM user WHERE age BETWEEN 18 AND 22;

-- 查询指定多个用户
SELECT * FROM user WHERE username IN ('张三','王五');

-- 模糊查询(%匹配任意字符)
SELECT * FROM user WHERE username LIKE '张%';

-- 查询年龄为空的数据
SELECT * FROM user WHERE age IS NULL;

4. 排序 & 分页

-- 升序排序 ASC(默认),降序 DESC
SELECT * FROM user ORDER BY age DESC;

-- 分页 LIMIT 起始下标,条数
-- 查询前2条数据
SELECT * FROM user LIMIT 0,2;

5. 聚合函数 + 分组查询(数据分析必备)

常用聚合函数:COUNT统计、SUM求和、AVG平均值、MAX最大值、MIN最小值

-- 统计总人数
SELECT COUNT(*) FROM user;

-- 统计平均年龄
SELECT AVG(age) FROM user;

-- 按年龄分组,统计每个年龄的人数
SELECT age,COUNT(*) AS 人数 FROM user GROUP BY age;

-- 分组后筛选(HAVING 配合 GROUP BY)
-- 筛选人数大于1的年龄组
SELECT age,COUNT(*) AS 人数 FROM user GROUP BY age HAVING 人数 > 1;

重点区分WHERE 是分组前筛选数据,HAVING 是分组后筛选结果


三、多表联查

实际业务中,数据不会存在一张表里,多表联查是必须掌握的核心技能。

1. 联查四种类型

  • INNER JOIN 内连接:只查询两表匹配的数据(交集)
  • LEFT JOIN 左连接:以左表为主,左表数据全部展示,右表无数据显示null(最常用)
  • RIGHT JOIN 右连接:以右表为主
  • FULL JOIN 全连接:展示两表所有数据(MySQL不支持,可 union 替代,即联合)

2. 实战示例(左连接)

假设存在用户表 user、订单表 order,通过用户id关联

-- 查询所有用户及对应的订单信息(无订单用户也展示)
SELECT u.username,o.order_id,o.order_time
FROM user u
LEFT JOIN `order` o ON u.id = o.user_id;

待续——

以上只是我自己的一些想法,如果有其他想法或建议,欢迎讨论(*´∀`)~♥
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇