DM8大小写敏感参数解析

本文详细探讨了达梦数据库CASE_SENSITIVE参数对表名、列名和数据的影响。在大小写敏感模式下,表名和列名必须用引号指定大小写,否则会被自动转换为大写,导致命名冲突。数据插入时,大小写敏感会影响字符数据的查询。而在不敏感模式下,所有名称和数据都不区分大小写,可以自由混用。图形化工具会自动添加引号,确保大小写。
摘要由CSDN通过智能技术生成

DM8大小写敏感参数解析

1.前言
达梦数据库在初始化实例的时候有一个重要参数叫CASE_SENSITIVE(大小写敏感)。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y。可选参数。
查找达梦资料发现其解释是:标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。看了以后有点感觉但又不是那么清楚,因此对其进行了验证

2.如何设置大小写敏感参数
2.1图形化dbca配置助手
在这里插入图片描述
在这里插入图片描述
2.2dminit命令行工具

./dminit path=/home/dmdba/dmdbms/data CASE_SENSITIVE=1

在这里插入图片描述
2.3注意(1):字符集为GB18030时不能设置大小写敏感为0,设置大小写敏感为0需要修改字符集为UTF-8
在这里插入图片描述
在这里插入图片描述
注意(2):大小写敏感设置好后不能修改只能查看

SELECT CASE_SENSITIVE();

在这里插入图片描述

我们将从三方面来对比参数影响:1.表名.2.列名.3.数据
3.大小写敏感参数设置对表名的影响
3.1大小写敏感时

CREATE TABLE test1 (a1 VARCHAR(100));       表名小写不加引号
select * from test1;                        执行成功
select * from TEST1;                        执行成功
select * from "test1";                      执行失败(如图6)
select * from "TEST1";                      执行成功

CREATE TABLE "test2" (a1 VARCHAR(100));     表名小写加引号
select * from test2;                        执行失败(如图7)
select * from TEST2;                        执行失败(如图8)
select * from "test2";                      执行成功
select * from "TEST2";                      执行失败(如图9)

CREATE TABLE TEST1 (a1 VARCHAR(100));    表名相同大写不加引号                      建表失败(如图10)
CREATE TABLE "test1" (a1 VARCHAR(100));  表名相同加引号                      建表成功
CREATE TABLE "TEST1" (a1 VARCHAR(100));  相同表名大写引号的影响              建表失败(如图11)


在这里插入图片描述
图6
在这里插入图片描述
图7
在这里插入图片描述
图8
在这里插入图片描述
图9

在这里插入图片描述

图10

在这里插入图片描述
图11
注意:如果是直接用图形化工具建表非SQL语句,那么表名自动添加引号,强制区分大小写,小写时增删查改也需要添加引号,跟SQL语句引号小写创建的表名一样.
在这里插入图片描述
在这里插入图片描述
只有小写加引号或者图形化工具直接小写建表,表名显示才为小写.
在这里插入图片描述
总结:大小写敏感时.test1,TEST1,"TEST1"相同只能选择一个,否在创建时显示对象已存在且都为TEST1,"test"与图形化工具test一样,增删查改时只能选择"test1"总而言之,以引号区分大小写,只有引号小写才是小写,图形化工具建表表名自带引号.

参数不敏感时

CREATE TABLE test1 (a1 VARCHAR(100));  表名小写不
select * from test1;                   执行成功
select * from TEST1;                   执行成功
select * from "test1";                 执行成功
select * from "TEST1";                 执行成功

CREATE TABLE "test2" (a1 VARCHAR(100)); 表名小写加引号
select * from test2;                    执行成功
select * from TEST2;                    执行成功
select * from "test2";                  执行成功
select * from "TEST2";                  执行成功
CREATE TABLE TEST1 (a1 VARCHAR(100));    表名相同区分大写不加引号            建表失败(如图15)
CREATE TABLE "test1" (a1 VARCHAR(100));  表名相同加引号                  建表失败(如图16)
CREATE TABLE "TEST1" (a1 VARCHAR(100));  相同表名大写引号的影响              建表失败(如图17)


在这里插入图片描述
图15
在这里插入图片描述
图16
在这里插入图片描述
图17
总结:参数大小写不敏感时对象名test1,TEST1,“test1”,"TEST1"都相同,只能选一个,引号不影响.

4.大小写敏感参数设置对列名的影响```

CREATE TABLE test1 (a1 VARCHAR(100));
大小写敏感时
INSERT test1(a1) VALUES ('A');                     执行成功
INSERT test1(A1) VALUES ('A');                     执行成功
INSERT test1("a1") VALUES ('A');                   执行失败(如图18)
INSERT test1(A1) VALUES ('A');                     执行成功
CREATE TABLE TEST2 (a1 VARCHAR(100),"a1" VARCHAR(100));  创建成功
CREATE TABLE TEST2 (a1 VARCHAR(100),A1 VARCHAR(100));    创建失败(如图19)
CREATE TABLE TEST2 (a1 VARCHAR(100),"A1" VARCHAR(100));  创建失败(如图20)
大小写不敏感时
INSERT test1(a1) VALUES ('A');                    执行成功
INSERT test1(A1) VALUES ('A');                    执行成功
INSERT test1("a1") VALUES ('A');                  执行失功
INSERT test1(A1) VALUES ('A');                    执行成功
CREATE TABLE TEST2 (a1 VARCHAR(100),"a1" VARCHAR(100));  创建失败(如图21)
CREATE TABLE TEST2 (a1 VARCHAR(100),A1 VARCHAR(100));    创建失败(如图22)
CREATE TABLE TEST2 (a1 VARCHAR(100),"A1" VARCHAR(100));  创建失败(如图23)

在这里插入图片描述
图18
在这里插入图片描述
图19
在这里插入图片描述
图20
在这里插入图片描述
图21
在这里插入图片描述
图22
在这里插入图片描述
图23
总结:列名与表名一样,大小写敏感时.a1,A1,"A1"相同只能选择一个,"a1"与图形化工具tea1一样,增删查改时只能选择"a1"总而言之,以引号区分大小写,只有引号小写才是小写,图形化工具建表列名自带引号(如图24).不敏感时a1,“a1”,A1,"A1"都一样.
在这里插入图片描述

在这里插入图片描述
图24

5.大小写敏感参数设置对数据的影响

CREATE TABLE test1 (a1 VARCHAR(100));
INSERT test1 VALUES ('A');
INSERT test1 VALUES ('a');
大小写敏感时
SELECT COUNT(*) FROM TEST1 WHERE a1='a';        结果为 1(如图25)
SELECT COUNT(*) FROM TEST1 WHERE a1='A';        结果为1(如图26)
大小写不敏感时
SELECT COUNT(*) FROM TEST1 WHERE a1='a';        结果为2(如图27)
SELECT COUNT(*) FROM TEST1 WHERE a1='A';        结果为2(如图28)

在这里插入图片描述
图25
在这里插入图片描述
图26

在这里插入图片描述

图27
在这里插入图片描述
图28

总结:大小写敏感时会区分字符数据大小写,大小写不敏感时不会区分字符数据大小写.
6.总结
大小写敏感时:对象名 a,A,"A"都相同表示大写,“a"才是固定小写的且增删查改时也要用"a”,列名,表名不能重复,大小写不同是可以的.大小写不敏感时, a,A,“A”,"a"都相同,大小写都相同,引号不影响.图形化工具对象名自带引号.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值