SQL其实很简单,掌握这些就够了

摘要:学习SQL并没有想象中那么难。SQL是专门用来管理和操作关系型数据库的语言。经过一段时间的学习,我整理了日常工作中最常用的SQL语法,分享给大家作为学习参考。

学习SQL并没有想象中那么难。SQL是专门用来管理和操作关系型数据库的语言。经过一段时间的学习,我整理了日常工作中最常用的SQL语法,分享给大家作为学习参考。

写SQL语句时,可以写成单行或多行,用分号结束。关键字大小写都可以,但一般建议用大写,这样更清晰。注释有两种:单行注释用--,多行注释用/*注释内容*/。

SQL语言主要分为四种类型:DDL、DML、DQL、DCL。下面我们逐一了解。


DDL 数据定义语言

DDL用来操作数据库和表,比如创建数据库、删除数据库、创建表、修改表等。

-- 连接数据库(以PostgreSQL为例)
psql -d postgres -U postgres;

-- 创建数据库
CREATE DATABASE db_name;

-- 删除数据库
DROP DATABASE db_name;

-- 查看所有数据库
\l

-- 切换数据库
\c db_name;

-- 创建表
CREATE TABLE table_name(
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

-- 修改表名
ALTER TABLE table_name RENAME TO new_table_name;

-- 查看所有表
\dt

-- 删除表
DROP TABLE table_name;

DML 数据操纵语言

DML负责数据的增删改操作,也就是我们常说的CRUD操作。

INSERT 添加数据

-- 方式1:不指定列名,按表结构顺序插入
INSERT INTO table_name VALUES(value1, value2, value3);

-- 方式2:指定列名插入
INSERT INTO table_name (column1, column2, column3) 
VALUES(value1, value2, value3);

UPDATE 修改数据

UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
-- 注意:一定要加WHERE条件,否则会修改所有数据

DELETE 删除数据

DELETE FROM table_name
WHERE condition;
-- 同样要注意WHERE条件,避免误删

DQL 数据查询语言

这是日常工作中最常用的部分,用来从数据库中查询数据。

WHERE 条件筛选

-- 查询特定列
SELECT column1, column2 FROM table_name WHERE id = 1;

-- 查询所有列
SELECT * FROM table_name WHERE country = 'CN';

-- 多条件查询
SELECT * FROM table_name 
WHERE column1 >= 40000 AND column1_date >= '2024-01-01';

AS 别名

SELECT name1 AS name2 FROM table_name;

ORDER BY 排序

-- 单字段排序
SELECT * FROM table_name ORDER BY age;

-- 多字段排序
SELECT column1, column2 FROM table_name 
ORDER BY column1 ASC, column2 DESC;

LIKE 模糊查询

-- 查找以a开头的名称
SELECT column1, column2 FROM table_name 
WHERE column_name LIKE 'a%';

-- 查找第二个字母是b的名称
SELECT column1, column2 FROM table_name 
WHERE column_name LIKE '_b%';

-- 查找包含name的名称
SELECT column1, column2 FROM table_name 
WHERE column_name LIKE '%name%';

MAX 最大值和 MIN 最小值

-- 找最大值
SELECT MAX(column1) FROM table_name;

-- 同时找最大值和最小值
SELECT MAX(column1) AS max_column1, 
       MIN(column2) AS min_column2 
FROM table_name;

AND 和 OR 逻辑运算

SELECT * FROM table_name 
WHERE country = 'CN' AND alexa > 50;

BETWEEN 范围查询

-- 包含边界值
SELECT column1, column2 FROM table_name 
WHERE column BETWEEN value1 AND value2;

-- 不包含边界值
SELECT column1, column2 FROM table_name 
WHERE column NOT BETWEEN value1 AND value2;

AVG 平均值

SELECT AVG(column_name) FROM table_name;

COUNT 计数

-- 统计某列非空值的数量
SELECT COUNT(column_name) AS cnt FROM table_name;

-- 统计总行数
SELECT COUNT(*) FROM table_name;

SUM 求和

SELECT SUM(column_name) AS nums FROM table_name;

GROUP BY 分组

SELECT column_name, COUNT(*) 
FROM table_name 
GROUP BY column_name;

DATE 日期处理

-- 查询特定日期的记录
SELECT * FROM table_name 
WHERE table_date = '2025-11-10';

DISTINCT 去重

SELECT DISTINCT column_name1, column_name2 
FROM table_name;

LIMIT 限制结果数量

-- MySQL写法
SELECT * FROM table_name LIMIT 10;          -- 前10条
SELECT * FROM table_name LIMIT 10, 10;      -- 第2页,每页10条

-- PostgreSQL写法
SELECT * FROM table_name LIMIT 10;          -- 前10条
SELECT * FROM table_name LIMIT 10 OFFSET 10; -- 跳过10条,取10条

IS NULL 空值判断

SELECT * FROM table_name 
WHERE age IS NULL;

DCL 数据控制语言

DCL用来管理数据库用户的权限,平时用得相对较少。

用户管理

-- 创建用户
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

-- 删除用户
DROP USER 'username'@'hostname';

-- 查询用户
SELECT * FROM mysql.user;

权限管理

-- 查看权限
SHOW GRANTS FOR 'username'@'hostname';

-- 授予权限
GRANT permission_list ON database.table 
TO 'username'@'hostname';

-- 撤销权限
REVOKE permission_list ON database.table 
FROM 'username'@'hostname';

实际应用技巧

组合使用示例

-- 查询每个国家的用户平均年龄,按平均年龄降序排列,只显示前5个
SELECT country, AVG(age) AS avg_age 
FROM users 
WHERE age IS NOT NULL 
GROUP BY country 
ORDER BY avg_age DESC 
LIMIT 5;

日期范围查询

-- 查询2024年1月的订单
SELECT * FROM orders 
WHERE order_date BETWEEN '2024-01-01' AND '2024-01-31';

-- 查询最近7天的活跃用户
SELECT * FROM users 
WHERE last_login_date >= CURRENT_DATE - INTERVAL '7 days';

多表关联查询

-- 查询用户及其订单信息
SELECT u.name, o.order_date, o.amount 
FROM users u 
JOIN orders o ON u.id = o.user_id 
WHERE u.status = 'active';

学习建议

  1. 先掌握基础:把基本的SELECT、INSERT、UPDATE、DELETE练熟

  2. 理解WHERE条件:这是SQL查询的核心

  3. 多练习分组统计:GROUP BY是数据分析的利器

  4. 注意性能:避免使用SELECT *,只查询需要的列

SQL是一种声明式语言,你只需要告诉数据库"要什么",不需要关心"怎么做"。这种特性让SQL学习起来相对容易。虽然不同数据库(MySQL、Oracle、PostgreSQL等)有细微差别,但核心语法是相通的。

记住,学好SQL的关键是多练习。从简单的查询开始,逐步尝试复杂的统计分析,很快你就能熟练运用这个强大的工具了。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_13198