oracle的sql语句使用记录-单引号双引号

本文探讨了在SQL建表时使用双引号与不使用引号对字段名大小写的影响。使用双引号创建的表会严格保持字段名的大小写,而不使用引号则会导致字段名变为大写。在查询时,双引号确保查询语句中的大小写匹配,不使用引号则会转换为大写。单引号主要用在标识字符串,对查询字段大小写不敏感。文章还提供了新增字段和插入数据的示例。

单引号和双引号

使用带双引号的建表语句创建的表

#双引号创建表,字段名非全大写
CREATE TABLE "UCDS"."CAMPAIGN_EARLY_WARNING1"
   (    "ent_id" VARCHAR2(64) DEFAULT NULL,
    "call_abandonment_rate" NUMBER DEFAULT NULL,
    "vacancy_rate" NUMBER DEFAULT NULL
   )
 
#双引号建表,字段名全大写
CREATE TABLE "UCDS"."CAMPAIGN_EARLY_WARNING3"
   (    "ENT_ID" VARCHAR2(64) DEFAULT NULL,
    "CALL_ABANDONMENT_RATE" NUMBER DEFAULT NULL,
    "VACANCY_RATE" NUMBER DEFAULT NULL
   )

查看表设计,可发现字段名和建表语句中的一样

双引号字段名信息

查询(使用不同的方式查询,对比效果)

双引号查询
分别查询大写字段和小写字段
不带引号查询
不带引号查询
单引号查询
单引号查询

不带引号建表

CREATE TABLE CAMPAIGN_EARLY_WARNING2
( ent_id VARCHAR2(64) DEFAULT NULL,
call_abandonment_rate NUMBER DEFAULT NULL,
vacancy_rate NUMBER DEFAULT NULL
)

表设计,可发现字段名由小写变成了大写

不带引号的表设计

查询

双引号查询
双引号拆线呢
不带引号查询
不带引号查询
单引号查询
单引号查询

结论

建表

  • 使用双引号创建的表字段,字段的大小写和建表语句一致,不发生任何变化;
  • 不使用引号创建表时,无论建表语句中是大写还是小写,最终创建的表设计都是大写

查询

  • 使用双引号查询,字段的大小写和填写的一致。不发生任何变化。填写大写就查询的大写,填写小写就查询的小写;
    不使用引号查询,无论查询语句中填入的字段名是大写还是小写。最终都会转换成大写进行查询;
  • 使用单引号查询,无论字段名称是大写还是小写,单引号里的查询字段是大写还是小写。均能查到结果。【前提是查询项的值需要是字符串】

*** 双引号的作用是:假如建立对象的时候,对象名、字段名加双引号,则示意Oracle将严格区分大小写,否则Oracl都默认大写。

而单引号则示意:这个加了单引号的字段是一个字类似字符串,并不区分大小写。
单引号用于标识字符与数字的区别
当指定字符串文本时,必须用单引号将字符串文本引住。
注意: 没有进行大小写混用的测试 ***

新增字段和插入语句示例

新增字段示例

ALTER TABLE "GLS_ENTERPRISE_INFO" ADD ENTERPRISETYPE NUMBER(4) DEFAULT 0;

插入数据示例

INSERT INTO "CCOD"."GLS_SD_DB_ENT_RELATE" ("ENT_ID", "DB_NAME") VALUES ('72001', 'portalB');
<think>首先,用户的问题是:“我想查询关于数据库SQL语句使用单引号的相关内容 请问数据库SQL语句使用单引号的情况”。我需要基于用户提供的引用内容来回答。 用户提供的引用有: - 引用[1]:讨论SQL语句单引号双引号的用法,强调单引号是表示字符串和日期的首选,并提到标识符的引用需查看文档。 - 引用[2]:指出在MySQLSQL语句可以使用单引号包裹任意类型,给出了一个INSERT语句的例子。 - 引用[3]:展示在VBA或类似环境中使用单引号构建SQL字符串的例子。 - 引用[4]:涉及单引号转义的方法,使用单引号作为转义字符。 我的回答需要结构化、清晰,帮助用户逐步解决问题。回答应该真实可靠,基于这些引用。 关键点是使用单引号SQL语句中的常见情况: 1. **字符串字面量**:单引号用于包裹字符串值。 2. **日期和时间值**:单引号常用于日期和时间类型。 3. **标识符引用**:在特定数据库中,单引号双引号可能用于标识符(如表名、列名),但需查阅文档。 4. **转义**:在SQL语句中,如果需要表示单引号本身,需要使用转义机制,如两个单引号连续。 从引用中提取要点: - [^1]:单引号是表示字符串和日期的首选。 - [^2]:MySQL中可以用单引号包裹任意类型值。 - [^3]:在构建SQL字符串时,使用单引号包裹值。 - [^4]:使用单引号作为转义字符的例子。 回答结构: - **引言**:简要介绍单引号SQL中的重要性。 - **主要用法**:详细说明使用场景。 - **注意事项**:包括转义、数据库差异等。 - **总结**:概括关键点。 最后,我需要生成相关问题,就像示例那样。系统指令要求:“生成相关问题”,并在用户可见层中体现。 相关问题应基于内容,如: 1. 如何在SQL中转义单引号? 2. 不同数据库单引号双引号的处理有何区别? 3. 如何防止SQL注入攻击与单引号相关? 回答中要自然地添加引用标识,例如[^1],但只在结束时添加标识符,并在答案中提及。 格式: - 使用中文回答。 - 数学表达式如果有,用$...$格式,但这个问题可能不涉及数学,所以可能不需要。 - 独立公式如果有也用$$...$$,但不太可能。 确保回答真实可靠:基于引用内容,不要添加未验证的信息。 最终响应结构: 1. 回答用户问题。 2. 生成相关问题。 现在,整理内容。 </think>### 数据库SQL语句使用单引号的情况 在SQL语句中,单引号(')主要用于包裹字符串字面量、日期和时间值等标量数据,以确保数据被正确解析和处理。以下是基于您提供的引用内容的详细总结,我会逐步解释单引号的常见用法、注意事项以及最佳实践,帮助您理解和应用。 #### 1. **单引号的主要使用场景** - **字符串字面量**:单引号是包裹字符串值的基本方式。例如,在SELECT、INSERT或WHERE子句中,字符串值必须用单引号包围,以区分于SQL关键字或标识符。 - 示例:查询名字为'John'的用户。 ```sql SELECT * FROM users WHERE name = 'John'; ``` 引用[1]明确指出:“在大多数情况下,单引号是表示字符串和日期的首选方式”,这适用于几乎所有SQL数据库系统(如MySQL、PostgreSQL等)[^1]。 - **日期和时间值**:单引号也常用于包裹日期或时间格式的值。例如,插入出生日期时。 - 示例:插入一条记录,日期为'2023-01-01'。 ```sql INSERT INTO employees (name, birth_date) VALUES ('Alice', '2023-01-01'); ``` 引用[2]支持这一点,说明在MySQLSQL语句可以使用单引号包裹任意类型值,包括数字和字符串,但日期类型尤其依赖单引号以避免语法错误[^2]。 - **动态SQL构建**:当在编程语言(如Python、VBA)中构建SQL语句时,单引号用于字符串拼接,确保值被正确传递。 - 示例:在VBA中构建INSERT语句。 ```sql INSERT INTO mytable (username, leixing) VALUES ('" & thename & "', '" & thetype & "') ``` 引用[3]展示了这种用法,其中单引号包围变量值,以确保SQL解析器识别字符串边界[^3]。 #### 2. **需要注意的细节** - **转义单引号**:如果字符串值本身包含单引号(如O'Neil),需要使用转义机制,避免SQL语句中断。常见方法是使用两个连续单引号('')或在某些数据库中结合反斜杠(\)。 - 示例:查询名字为O'Neil的用户。 ```sql SELECT * FROM users WHERE name = 'O''Neil'; ``` 引用[4]演示了转义:通过concat函数构建update语句,其中单引号用作转义字符,确保单引号在字符串内被正确处理[^4]。 - 关键点:所有主流数据库(如MySQLSQL Server)都支持双单引号转义法,这是SQL标准的一部分。避免使用双引号(")包裹字符串,除非数据库特定支持(如PostgreSQL允许双引号用于标识符引用)。 - **数据库差异性**:单引号SQL标准的一部分,但不同数据库系统可能有细微差别。 - 例如,MySQL支持用单引号包裹数字值(如'1'),但其他数据库(如Oracle)可能更严格,要求数字值不用引号。引用[1]强调“对于标识符的引用,要查阅具体数据库系统的文档”,例如表名或列名如特殊字符时,PostgreSQL可能要求双引号(如"table-name")[^1]。 - 最佳实践:始终优先使用单引号包裹字符串和日期类型,并参考特定数据库文档(如MySQL手册)以确认兼容性。 - **安全性与可读性**:正确使用单引号有助于防止SQL注入攻击(如通过参数化查询),并提高代码可读性。 - 示例:在引用[3]的构建语句中,单引号确保字符串值被隔离,减少注入风险[^3]。引用[1]总结道:“通过理解和正确使用单引号双引号以及其他引用方式,可以确保SQL语句在数据分析中的准确性和可读性”[^1]。 #### 3. **总结** 在SQL语句中,单引号主要用于包裹字符串、日期和时间值,确保数据被正确识别和解析。核心原则是:优先使用单引号处理标量数据(如'Hello'或'2023-01-01'),避免用于标识符(如表名),并在需要时通过双单引号转义内部单引号。不同数据库系统(如MySQLSQL Server)基本遵循这一规则,但细微差异存在,因此查阅官方文档是可靠的实践[^1][^2][^3][^4]。 如果您有具体的数据库系统(如MySQL或PostgreSQL)或场景(如动态查询构建),我可以提供更针对性的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值