达梦数据库大小写敏感介绍

一、对象名 

1.大小写敏感

CREATE TABLE TEST.Abc(COL INT);

------对于创建表,在大小写敏感的情况下,表名Abc不加双引号,系统会自动转换成大写表名ABC

查询情况如下:

SELECT * FROM TEST.Abc;     ------执行成功SELECT * FROM TEST.ABC;     ------执行成功SELECT * FROM TEST."Abc";   ------error:无效的表或视图名[Abc]SELECT * FROM TEST."ABC";   ------执行成功
CREATE TABLE TEST."Abc"(COL INT);

------对于创建表,在大小写敏感的情况下,表名Abc加双引号,即创建的表为Abc

查询情况如下:​​​​​​​

SELECT * FROM TEST.Abc;     ------error:无效的表或视图名[ABC]SELECT * FROM TEST.ABC;     ------error:无效的表或视图名[ABC]SELECT * FROM TEST."Abc";   ------执行成功SELECT * FROM TEST."ABC";   ------error:无效的表或视图名[ABC]

注意:(大小写敏感的情况下)在达梦管理工具(manager)中使用图形化界面的方式创建对象时,如果使用的是小写,系统会自动加上双引号在查询的时候必须使用双引号来访问。‍

2、大小写不敏感

CREATE TABLE a(C1 INT);

------对于创建表,在大小写不敏感的情况下,表名a是否加双引号,对查询结果没有影响。

查询情况如下:​​​​​​​

SELECT * FROM a;    ------执行成功SELECT * FROM A;    ------执行成功SELECT * FROM "a";  ------执行成功SELECT * FROM "A";  ------执行成功
CREATE TABLE "b"(C1 INT);

查询情况如下:​​​​​​​

SELECT * FROM b;    ------执行成功SELECT * FROM B;    ------执行成功SELECT * FROM "b";  ------执行成功SELECT * FROM "B";  ------执行成功

二、字符串内容​​​​​​​

CREATE TABLE  MMJ(COL VARCHAR(100));      ---创建表MMJ
INSERT INTO MMJ VALUES('Abc');            ---插入数据AbcINSERT INTO MMJ VALUES('ABC');            ---插入数据ABC

1、大小写敏感​​​​​​​

SELECT COUNT(*) FROM MMJ WHERE COL='Abc'; ------结果为1SELECT COUNT(*) FROM MMJ WHERE COL='ABC'; ------结果为1

2、大小写不敏感​​​​​​​

SELECT COUNT(*) FROM MMJ WHERE COL='Abc'; ------结果为2SELECT COUNT(*) FROM MMJ WHERE COL='ABC'; ------结果为2

 三、不同工具访问数据库 

1、disql访问数据库

需要注意的是:密码中含有“@“、“/”等特殊字符,此时需要通过转义符来处理。

disql 转义符使用如下:

**linux 环境**

需要使用双引号将密码包含进来

同时外层再使用单引号进行转义,具体例子如下:

./disql SYSDBA/' "abcd@efgh" '@localhost

**windows环境**

需要使用双引号将密码包含进来

同时对双引号使用“\”进行转义,具体例子如下:

disql SYSDBA/\"abcd@efgh\"@localhost

2、manager访问数据库

1)大小写敏感:

创建小写表对象:需要添加双引号来创建

创建大写表对象:不需要添加双引号来

创建查询小写表对象:需要添加双引号查询

查询大写表对象:不需要添加双引号查询

2)大小写不敏感:

创建小写表对象:需要添加双引号来创建

创建大写表对象:不需要添加双引号来创建

查询小写表对象:不需要添加双引号来创建

查询大写表对象:不需要添加双引号来创建

不论是大小写敏感还是不敏感,需要注意以下情况​​​​​​​

create user “bb” identified by “11111111111”create user “BB” identified by “11111111111” ------报错:对象[BB]已存在

3、DTS迁移工具

1)大小写敏感:

表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,需要使用双引号查询

表对象大写:不需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询,因为会自动转换成大写查询

2)大小写不敏感:

表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询。

表对象大写:不需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询,因为会自动转换成大写查询

 总结 

1、在大小写敏感的数据库中

1)创建表:

若表名或列名未添加双引号“”,则表名和列名会自动转换为大写形式;

若对表名或列名添加双引号“”,则会固定书写时的大、小写;

同名的数据库对象,如果大小写不同,那么则为两个不同的对象。

2)字段同上:

一个表中,即使是相同的字段名,只要大小写不同,允许存在同名且不同大小写形式的字段。

3)DML 或 DDL 操作时:

Ø 如果不对表名或列名添加双引号“”,那么表名和列名都自动转换为大写形式;

Ø 对表进行 DML 操作时,如果没有小写形式的字段,不能采取小写加""的形式指定过滤字段,会被认定为无效的字段;

Ø 如果对表名或列名添加‘“”,会固定书写时的大、小写形式,“”中是大写形式,则过滤字段就是大写字段,“”中是小写字段,则过滤字段就是小写字段;

Ø 对其进行 DML 操作时,需要利用“”指定表名和字段名,否则默认会认定以大写形式去查询对象。

Ø 查询时,‘’和“”界定符中字符串区分大小写,界定符中的字符串若是大写形式,那仅查询这个大写形式的对象,若是或小写形式,那仅查询这个小写形式的对象,DML 操作依旧。

2、大小写不敏感的数据库中

1)创建表时:

无论对不对表名或列名添加双引号“”,表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;

2)字段同上:

不允许相同的字段名,即使大小写不同;

查询时,’‘和"“界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集.

3)DML 或 DDL 操作时:

无论对不对表名或列名添加”",表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;

一个表中,不允许相同的字段名,即使大小写不同;

查询时,’'和""界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集,进行 DML 操作时依旧。

在大小写不敏感的情况下,以上情况均不允许存在同名的数据库对象,即使大小写不同,默认也只能存在一个。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值