首页
/ 深入解析SQL基础与常用函数:以lcomment/development-recipes项目为例

深入解析SQL基础与常用函数:以lcomment/development-recipes项目为例

2025-06-25 00:33:59作者:魏侃纯Zoe

前言

SQL作为关系型数据库的核心语言,是每位开发者必须掌握的技能。本文将以lcomment/development-recipes项目中的SQL基础内容为蓝本,深入讲解SQL的基本语法和常用函数,帮助读者构建扎实的SQL基础。

关系型数据库基础

关系型数据库(RDB)是基于关系模型构建的数据管理系统,其核心特点包括:

  1. 二维表结构:数据以行和列的形式组织
  2. RDBMS:关系型数据库管理系统,如Oracle、MySQL等
  3. SQL:结构化查询语言,用于与数据库交互

SQL的优化和高效使用直接影响系统性能,因此掌握SQL基础至关重要。

SELECT语句详解

基本语法

SELECT [DISTINCT] column1, column2...
FROM table_name
[WHERE condition]
[GROUP BY column]
[HAVING condition]
[ORDER BY column [ASC|DESC]];

别名使用技巧

  • 表别名:简化复杂查询
  • 列别名:提高结果可读性
  • 注意:一旦使用别名,就必须在整个查询中保持一致

运算符全解析

算术运算符优先级

优先级 运算符 说明
1 () 括号优先
2 *, / 乘除
3 +, -, % 加减和取余

重要提示:任何包含NULL的算术运算结果都是NULL。

字符串连接符

||是最常用的字符串连接运算符,例如:

SELECT first_name || ' ' || last_name AS full_name FROM employees;

函数大全

字符串处理函数

  1. 大小写转换

    • LOWER():转为小写
    • UPPER():转为大写
  2. 修剪函数

    • LTRIM()/RTRIM():去除左右空格或指定字符
    • TRIM():更灵活的修剪方式
  3. 子字符串处理

    • SUBSTR(str, start, length):注意起始位置是1不是0
    • REPLACE():字符串替换
    • LPAD()/RPAD():填充字符串

数值处理函数

  1. 基本运算

    • ABS():绝对值
    • SIGN():符号判断
  2. 舍入处理

    • ROUND():四舍五入
    • TRUNC():直接截断
    • CEIL()/FLOOR():向上/向下取整
  3. 模运算

    • MOD():取余数,注意除数为0的情况

日期函数精要

  1. 系统日期

    • SYSDATE:获取当前系统日期时间
  2. 日期提取

    • EXTRACT():提取特定日期部分
  3. 日期计算

    • ADD_MONTHS():月份加减,处理月末日期有特殊规则

类型转换函数

  1. 显式转换

    • TO_NUMBER():字符串转数字
    • TO_CHAR():格式化输出
    • TO_DATE():字符串转日期
  2. 隐式转换风险

    • 可能导致性能问题
    • 可读性差
    • 建议始终使用显式转换

NULL处理函数

  1. 基本处理

    • NVL():NULL替换
    • NULLIF():相等返回NULL
  2. 高级处理

    • COALESCE():返回第一个非NULL值
    • NVL2():三值逻辑处理

CASE表达式

-- 简单CASE
CASE column
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  ELSE default_result
END

-- 搜索CASE
CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  ELSE default_result
END

条件筛选与分组

WHERE子句详解

  1. 比较运算符:=, <>, >, >=, <, <=

  2. SQL特殊运算符

    • BETWEEN:范围查询
    • LIKE:模式匹配
    • IN:多值匹配
    • IS NULL:NULL检测
  3. 逻辑运算符:AND, OR, NOT的组合使用

分组与聚合

  1. GROUP BY:数据分组

  2. 聚合函数

    • COUNT():计数
    • SUM()/AVG():求和/平均
    • MIN()/MAX():极值
  3. HAVING:分组后过滤,与WHERE的区别在于执行时机

排序与连接

ORDER BY排序

  • ASC:升序(默认)
  • DESC:降序
  • 多列排序:用逗号分隔

连接(JOIN)类型

  1. 内连接(INNER JOIN):只返回匹配行
  2. 外连接(OUTER JOIN)
    • 左外连接:保留左表所有行
    • 右外连接:保留右表所有行
    • 全外连接:保留两表所有行
  3. 交叉连接(CROSS JOIN):笛卡尔积
  4. 自然连接(NATURAL JOIN):自动匹配同名列

最佳实践建议

  1. **避免SELECT ***:只查询需要的列
  2. 合理使用索引:WHERE和JOIN条件考虑索引
  3. 注意NULL处理:NULL可能影响运算结果
  4. 使用显式JOIN语法:提高可读性
  5. 测试SQL性能:复杂查询应进行性能测试

通过掌握这些SQL基础知识和技巧,开发者可以更高效地与数据库交互,为构建健壮的应用程序打下坚实基础。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
260
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
854
505
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
254
295
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
21
5