news 2026/8/12 10:18:22

SQL 从基础操作到高级查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 从基础操作到高级查询

文章目录

  • SQL从基础操作到高级查询
    • 一、SQL基础操作
      • 1.1 数据查询(SELECT)
      • 1.2 数据操作
        • 插入数据(INSERT)
        • 更新数据(UPDATE)
        • 删除数据(DELETE)
    • 二、高级查询技巧
      • 2.1 WHERE子句高级用法
      • 2.2 排序与分组
        • ORDER BY排序
        • GROUP BY分组
        • HAVING过滤分组
      • 2.3 限制查询结果
        • LIMIT限制行数
        • OFFSET偏移量
    • 三、表结构管理
      • 3.1 修改表结构(ALTER TABLE)
        • 添加字段
        • 修改字段
        • 删除字段
        • 重命名字段
      • 3.2 表级操作
        • 修改字符集
        • 重命名表
      • 3.3 删除表
    • 四、数据连接操作
      • 4.1 内连接(INNER JOIN)
      • 4.2 外连接
        • 左外连接(LEFT JOIN)
        • 右外连接(RIGHT JOIN)
      • 4.3 集合操作
        • UNION(去重合并)
        • UNION ALL(不去重复合)
    • 五、SQL分类体系
      • 5.1 数据查询语言(DQL)
      • 5.2 数据操作语言(DML)
      • 5.3 数据定义语言(DDL)
      • 5.4 数据控制语言(DCL)
      • 5.5 事务控制语言(TCL)
    • 六、实用技巧
      • 6.1 数据导入导出
      • 6.2 查看数据库信息

SQL从基础操作到高级查询

SQL(结构化查询语言)是管理和操作关系型数据库的核心工具,广泛应用于数据查询、管理和维护。本文将系统梳理SQL的核心知识点,涵盖数据操作、表结构管理、查询优化及SQL分类等内容,帮助你构建完整的SQL知识体系。

一、SQL基础操作

1.1 数据查询(SELECT)

SELECT语句用于从数据库中检索数据,是SQL中最常用的命令。

SELECTcolumn1,column2,...FROMtable_nameWHEREcondition;
  • 使用*选择所有列
  • WHERE子句用于过滤数据
  • 支持条件组合(AND、OR、NOT)
-- 查询所有男性学生SELECT*FROMstudentWHEREsex='男';

1.2 数据操作

插入数据(INSERT)
INSERTINTOtable_name(column1,column2,column3,...)VALUES(value1,value2,value3,...);
更新数据(UPDATE)
UPDATEtable_nameSETcolumn1=value1,column2=value2,...WHEREsome_column=some_value;
删除数据(DELETE)
DELETEFROMtable_nameWHEREsome_column=some_value;

注意:不指定WHERE条件将删除表中所有数据!

二、高级查询技巧

2.1 WHERE子句高级用法

-- 模糊匹配(多字符)SELECT*FROMstudentsWHEREclazzLIKE'xx%';-- 模糊匹配(单字符)SELECT*FROMstudentsWHEREstu_nameLIKE'张_';-- 多关键词匹配SELECT*FROMstudentsWHEREnameRLIKE'张|李|王';-- IN操作符SELECT*FROMstudentsWHEREclazzIN('xx','xx','xx');-- BETWEEN范围查询SELECT*FROMstudentsWHEREageBETWEEN22AND24;

2.2 排序与分组

ORDER BY排序
SELECTcolumn1,column2,...FROMtable_nameORDERBYcolumn1[ASC|DESC],column2[ASC|DESC],...;
GROUP BY分组
SELECTcolumn1,column2,...,AVG(column_name)FROMtable_nameGROUPBYcolumn1,column2,...;
HAVING过滤分组
SELECTcolumn1,column2,...,aggregate_function(column_name)FROMtable_nameGROUPBYcolumn1,column2,...HAVINGcondition;

2.3 限制查询结果

LIMIT限制行数
-- 限制返回10行SELECT*FROMstudentsLIMIT10;-- 从第5行开始,返回10行SELECT*FROMstudentsLIMIT5,10;
OFFSET偏移量
SELECTcolumn1,column2,...FROMtable_nameLIMITnumberOFFSEToffset;

三、表结构管理

3.1 修改表结构(ALTER TABLE)

添加字段
-- 增加字段ALTERTABLEstudentsADD[COLUMN]dateTDATE;-- 增加字段并设置默认值ALTERTABLEstudentsADDdateTDATEDEFAULT"2025-12-12";
修改字段
-- 修改字段类型ALTERTABLEstudentsMODIFYdataTDATETIME;-- 修改字段注释ALTERTABLEstudentsMODIFYdateTDATECOMMENT"日期";-- 修改字段约束ALTERTABLEstudentsMODIFYstu_idINTNOTNULL;
删除字段
ALTERTABLEstudentsDROPlength;
重命名字段
ALTERTABLEstudents CHANGE stu_id sidVARCHAR(255);

3.2 表级操作

修改字符集
ALTERTABLEstudentsCHARACTERSETutf8;
重命名表
ALTERTABLEstudentsRENAMETOstudent;-- 或RENAMETABLEstudentsTOstudent;

3.3 删除表

DROPTABLE[IFEXISTS]students;

四、数据连接操作

4.1 内连接(INNER JOIN)

SELECTs.*,sc.subject_id,su.subject_nameFROM(students sJOINscores scJOINsubjects suONs.stu_id=sc.stu_idANDsc.subject_id=su.subject_id);

4.2 外连接

左外连接(LEFT JOIN)
SELECT*FROMstudentsASsLEFTJOINscoresASscONs.stu_id=sc.stu_id;
右外连接(RIGHT JOIN)
SELECT*FROMstudentsASsRIGHTJOINscoresASscONs.stu_id=sc.stu_id;

4.3 集合操作

UNION(去重合并)
SELECTs.stu_id,s.stu_name,sc.score,su.subject_nameFROMstudents sJOINscores scONs.stu_id=sc.stu_idJOINsubjects suONsc.subject_id=su.subject_idWHEREsc.score>=90UNIONSELECTs.stu_id,s.stu_name,sc.score,su.subject_nameFROMstudents sJOINscores scONs.stu_id=sc.stu_idJOINsubjects suONsc.subject_id=su.subject_idWHEREsc.score<=60ORDERBYscoreDESC;
UNION ALL(不去重复合)
SELECTnameFROMstudentsWHEREage=20UNIONALLSELECTnameFROMstudentsWHEREage=19;

五、SQL分类体系

5.1 数据查询语言(DQL)

核心作用:查询/检索数据(只读)
关键字:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、JOIN

5.2 数据操作语言(DML)

核心作用:增删改数据内容
关键字:INSERT、UPDATE、DELETE、MERGE

5.3 数据定义语言(DDL)

核心作用:定义/修改数据库结构
关键字:CREATE、ALTER、DROP、TRUNCATE、RENAME

  • CREATE、ALTER、DROP:可以复原

5.4 数据控制语言(DCL)

核心作用:管理权限和事务
关键字:GRANT、REVOKE、COMMIT、ROLLBACK

5.5 事务控制语言(TCL)

核心作用:事务管理(DCL子集)
关键字:COMMIT、ROLLBACK、SAVEPOINT

六、实用技巧

6.1 数据导入导出

# 导入数据LOAD DATA LOCAL INFILE'路径'INTO TABLE 表名 FIELDS TERMINATED BY'分隔符';# 导出数据mysqldump -uroot -p stu students>/root/data/mydb.sql# 备份并压缩aliasdb_backup='mysqldump -uroot -p --single-transaction stu students | gzip > /root/data/mydb_$(date+%Y%m%d).sql.gz'

6.2 查看数据库信息

-- 查看表结构SHOWCREATETABLEstudents;-- 查看当前数据库SELECTDATABASE();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 11:01:35

兴顺物流管理系统(11451)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/8/12 19:51:26

2025年智能家居完整指南:掌握Home Assistant核心功能

2025年智能家居完整指南&#xff1a;掌握Home Assistant核心功能 【免费下载链接】awesome-home-assistant A curated list of amazingly awesome Home Assistant resources. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-home-assistant 在智能家居快速发展的…

作者头像 李华
网站建设 2026/8/12 10:39:04

Notion + Miro二合一?我用3分钟零成本搭了个私有知识库,太爽了!

Notion Miro二合一&#xff1f;我用3分钟零成本搭了个私有知识库&#xff0c;太爽了&#xff01;我曾是Notion的重度用户&#xff0c;但用久了总有两个心病&#xff1a;一是所有数据都存在别人的服务器上&#xff0c;隐私和安全始终悬着一把剑&#xff1b;二是文档和白板功能是…

作者头像 李华
网站建设 2026/8/12 10:39:06

Codeforces Round 1070 (Div. 2) A~D F

最近手感差的很&#xff0c;A能WA两发写20min&#xff0c;D调不出来&#xff0c;不过看别人的AC代码dp思路跟自己也不太一样…还是自己太菜了&#xff0c;加训div2了。 A. Operations with Inversions Given an array a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​. In o…

作者头像 李华
网站建设 2026/8/12 10:39:27

【上海交通大学主办 | 连续6年IEEE出版 | 连续5届快速检索-往届会后3个月EI, Scopus检索 | 设优秀评选】第六届IEEE信息科学与教育国际学术会议(ICISE-IE 2025)

【快检索 | 高录用 | 连续5届快速 EI, Scopus, IEEE Xplore检索】 第六届IEEE信息科学与教育国际学术会议&#xff08;ICISE-IE 2025&#xff09; 2025 6th International Conference on Information Science and Education 大会时间&#xff1a;2025年12月26-28日 大会地点…

作者头像 李华
网站建设 2026/8/12 13:02:56

区块链核心知识点梳理(8)-钱包与账户体系

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录8. 钱包与账户体系8.1 钱包与账户的关系8.2 密钥生成流程8.2.1 完整生成过程8.2.2 代码实现8.3 HD 钱包&#xff08;分层确定性钱包&#xff09;8.3.1 BIP32/BIP39/B…

作者头像 李华