达梦CASE_SENSITIVE参数测试

本文详述了达梦数据库CASE_SENSITIVE参数在大小写敏感和不敏感环境下的测试,包括表和列的创建、数据插入、主键设置及WHERE条件的影响。在大小写敏感模式下,不加引号的对象名会转为大写,允许同名不同大小写对象,设置主键不受大小写影响。而在大小写不敏感模式下,同名不同大小写对象被视为相同,设置主键时会违反唯一性约束。

CASE_SENSITIVE:标识符大小写敏感。0/1 y/n Y/N,大小写敏感时,小写的标识符应该被双引号括起来,否则自动转化为大写;大小写不敏感时,系统不自动转化标识符的大小写,比较时不区分大小写。

大小写敏感问题一般涉及到两类:

    1)字段内容

    2)对象名

绝大部分情况,数据库都会把小写一律转化为大写,查询对象名同样如此,但存在使用小写的场景,为了适应此类场景避免小写被转化成大写,在对对象名时使用时都会添加双引号。例如:create table “test1”

测试环境1:大小写敏感(CASE_SENSITIVE=1)

create table test(name varchar);
insert into test values('aaa');
insert into test values('AAA');
insert into TEST(NAme) values('bbb');
create table Test(name varchar);

1、不添加双引号创建表test和插入操作

表名会自动转化为TEST

对此表进行插入操作的时候,表名test不添加双引号都会自动转化为TEST,此时都会正常进行插入操作。重新创建不带双引号的Test也会被自动转化为TEST,因此系统会提示已有该表。

2、添加双引号创建表”test”和插入操作

create table "test"("name" varchar);
insert into test values('aaa');
insert into test values('AAA');
insert into "test" values('ccc');
insert into "test" values('ddd');
insert into "test"("name") values('qqq');

可以看到,列名

insert into "test"(name) values('qqq');

 

3、通过where对数据进行限制

当前表TEST的数据:

select *from test where name='aaa';
select *from test where name='AAA';
select *from test where name='Aaa';

 

 4、设置主键

 

总结1:大小写敏感时,创建表名和列名,允许有同名不同大小写的对象名。即允许同时存在Test,test,TEST这类,但是存在小写的对象名必须通过”双引号”进行引用,不添加双引号一律被更改为全大写。进行查询语句时候,where语句对数据进行筛选时,会受大小写影响。即使数据拥有字符相同但大小写不同,依旧可设置为主键,不违反唯一性约束。

测试环境2:大小写不敏感(CASE_SENSITIVE=0)

1、创建和插入同名表:

create table test(name varchar);
insert into test values('aaa');
insert into test values('AAA');
insert into TEST(NAme) values('bbb');
create table Test(name varchar);

 

create table "test"(name varchar);

2、通过where对数据进行筛选

原表所包含的数据:


select *from test where name='aaa';
select *from test where name='AAA';
select *from test where name='Aaa';

  

3、给name列设置主键

 

会提示违反唯一性约束,若删除数据AAA或者aaa任意一个

 

即可开启主键.

总结2:

大小写不敏感时,不允许存在同名但不同大小写的对象名。数据本身通过where语句进行限制时,同样会返回同字符但大小写不同的数据。故作为数据和对象名,同名不同大小写都视为相同。

case_sensitive(1/0,y/n):

          大小写敏感:允许存在同名不同大小写的对象,但是引用含小写的对象必须添加双引号否则会被转化为全大写。即使列被设置为主键,其中所包含的数据同样允许同字母、不同大小的情况,不被视为违反唯一性约束。

        大小写不敏感:不允许存在同名对象名、字段。即使其大小写不同。作为数据本身,如果该列被设为主键,那么不允许存在同字母组合的数据,都将视为同一数据。

达梦社区地址:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值