SQL(1):SQL开篇
做 AI 应用开发,要学会与数据打交道,而SQL是管理数据库的有效工具,所以有了后面的一系列文章,近3到5天时间中,我将以和介绍的SQL为基础,分享我关于SQL的学习历程。因为文章为,所以尽量通俗易懂,困难的地方要详细介绍,简单的地方要一笔带过,主要记录一些重要的概念,SQL公式,要多写多练。也会使用llm来辅助学习。SQL:结构化,能够访问和处理数据库。RDBMS:关系型数据库。SQL:SELE
做 AI 应用开发,要学会与数据打交道,而SQL是管理数据库的有效工具,所以有了后面的一系列文章,近3到5天时间中,我将以菜鸟教程和狂神说Java介绍的SQL为基础,分享我关于SQL的学习历程。
因为文章为学习笔记,所以尽量通俗易懂,困难的地方要详细介绍,简单的地方要一笔带过,主要记录一些重要的概念,SQL公式,要多写多练。也会使用llm来辅助学习。
SQL:结构化查询语言,能够访问和处理数据库。
RDBMS:关系型数据库管理系统。
SQL 对大小写不敏感:SELECT 与 select 是相同的。
分号:一句SQL最后使用,一些数据库强制要求使用分号。一个字:尽量使用分号。
使用 菜鸟教程 的SQL在线测试工具中 字段和表要使用小写!
1、取数据
select 字段 from 表;
或
SELECT 字段 FROM 表;
全部字段:*,
即 select * from 表;
2、取不同数据
有点模糊,解释清楚:有一列数据:1 1 1 2 2 2 3,返回:1 2 3。
select distinct 字段 from 表;
或
SELECT DISTINCT 字段 FROM 表;
注:大小写都可以使用,因为过于简单,所以后面将使用大写(一个例子)
3、选择数据
符合条件的数据
SELECT 字段 FROM 表 WHERE 条件;
本内容最最重要的是条件的使用。
需要某值为多少时使用:=
例如:国家为中国的数据:country='CN' 字符串使用单引号,数字不需要单引号。
其他运算符:
=,>,<,<>,>=,<=:表示范围,简单,不多介绍。
重点讲下面特殊的符号:
- 空值:is null 例子:
SELECT 字段 FROM 表 WHERE 字段 is null - 之间的值:
SELECT 字段 FROM 表 WHERE 字段 BETWEEN 1 AND 4包括1和4 - 在某某中的值:in(1,2,3,4,5)
LIKE,模糊搜索。难,复杂,要重点理解。Select * from emp where ename like 'M%';
- % 表示多个字值,_ 下划线表示一个字符;
- M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
- %M% : 表示查询包含M的所有内容。
- %M_ : 表示查询以M在倒数第二位的所有内容。
3.1 LIKE
LIKE 操作符确实是 SQL 中一个强大但有时也令人困惑的部分,因为它允许我们基于模式(pattern)而不是精确值来搜索字符串数据。这在处理不完全确定的文本数据时非常有用。关键在于理解两个主要的通配符:
%(百分号): 代表零个、一个或多个任意字符。_(下划线): 代表正好一个任意字符。
为了更好地说明,我们假设有一个 emp (员工) 表,其中包含一个 ename (员工姓名) 列,数据如下:
| ename |
|---|
| SMITH |
| ALLEN |
| WARD |
| JONES |
| MARTIN |
| BLAKE |
| CLARK |
| SCOTT |
| KING |
| TURNER |
| ADAMS |
| JAMES |
| FORD |
| MILLER |
| MARY |
| CHAMP |
现在,我们来逐一解释并举例说明你提到的几种模式:
1. 模式:'M%'
- 解释: 这个模式表示查找所有以大写字母 ‘M’ 开头的
ename。M: 精确匹配字符 ‘M’。%: 匹配 ‘M’ 后面的零个或多个任意字符。
- SQL 语句:
SELECT ename FROM emp WHERE ename LIKE 'M%'; - 例子:
根据我们假设的emp表数据,这条 SQL 语句会返回:MARTIN(M 开头,后面有 ARTIN)MILLER(M 开头,后面有 ILLER)MARY(M 开头,后面有 ARY)
- 为什么返回这些? 因为这些名字都严格以 ‘M’ 开始,
%通配符匹配了名字中 ‘M’ 之后的所有剩余部分(或者没有剩余部分,如果名字就是 ‘M’ 的话,虽然我们例子里没有)。SMITH不行因为它不以 M 开头。
2. 模式:'%M%'
- 解释: 这个模式表示查找所有包含大写字母 ‘M’ 的
ename,无论 ‘M’ 出现在开头、中间还是结尾。- 第一个
%: 匹配 ‘M’ 前面的零个或多个任意字符。 M: 精确匹配字符 ‘M’。- 第二个
%: 匹配 ‘M’ 后面的零个或多个任意字符。
- 第一个
- SQL 语句:
SELECT ename FROM emp WHERE ename LIKE '%M%'; - 例子:
根据我们假设的emp表数据,这条 SQL 语句会返回:SMITH(M 在中间)MARTIN(M 在开头)ADAMS(M 在中间)JAMES(M 在中间)MILLER(M 在开头)MARY(M 在开头)CHAMP(M 在中间)
- 为什么返回这些? 因为这些名字中都至少包含一个 ‘M’。第一个
%允许 M 前面有任意字符(或没有字符,如MARTIN),第二个%允许 M 后面有任意字符(或没有字符)。
3. 模式:'%M_'
-
解释: 这个模式表示查找所有以 ‘M’ 加上后面正好一个任意字符结尾的
ename。换句话说,‘M’ 必须是倒数第二个字符。%: 匹配 ‘M’ 前面的零个或多个任意字符。M: 精确匹配字符 ‘M’。_: 匹配 ‘M’ 后面的正好一个任意字符,并且这个字符是字符串的最后一个字符。
-
SQL 语句:
SELECT ename FROM emp WHERE ename LIKE '%M_'; -
例子:
根据我们假设的emp表数据,这条 SQL 语句会返回:ADAMSCHAMP
-
为什么返回这些?
ADAMS:%匹配ADA,M匹配M,_匹配最后一个字符S。符合模式(M 是倒数第二个字符)。CHAMP:%匹配CHA,M匹配M,_匹配最后一个字符P。符合模式(M 是倒数第二个字符)。- 其他名字如
JAMES,M 后面是ES(两个字符),不符合_(一个字符)。SMITH的 M 后面是ITH(三个字符)。MARTIN的 M 后面是ARTIN(五个字符)。
总结与重点理解:
LIKE用于模式匹配,不是精确等于。%是非常灵活的,可以代表任意长度的字符序列(包括空序列)。_是精确的,只代表一个任意字符。- 组合使用
%和_可以构建非常复杂的搜索模式。 LIKE通常是大小写敏感的,但这取决于具体的数据库系统和其配置(例如,MySQL 默认可能不敏感,而 PostgreSQL 默认敏感)。如果需要不区分大小写,可能需要使用数据库特定的函数(如LOWER()或UPPER())或特定的操作符(如ILIKE在 PostgreSQL 中)。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)