安装完达梦数据库后,需要初始化实例,在初始化实例时,需要注意大小写敏感的设置。大小写敏感只能在初始化数据库的时候设置,默认为大小写敏感,一旦设置成功就无法修改,如果想要修改,只能重新初始化实例。
查看数据库大小写是否敏感:
SELECT CASE_SENSITIVE();
结果为 1 是大小写敏感;
结果为 0 是不敏感。
本文将会从对象名、字符串内容、常用工具这三个方面介绍达梦数据库的大小写敏感和大小写不敏感设置的区分和介绍。
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)中使用图形化界面的方式创建对象时,如果使用的是小写,系统会自动加上双引号在查询的时候必须使用双引号来访问。
CREATE TABLE a(C1 INT);
CREATE TABLE "b"(C1 INT);
--对于创建表,在大小写不敏感的情况下,表名a,b是否加双引号,对查询结果没有影响。
表a查询情况如下:
SELECT * FROM a; ------执行成功
SELECT * FROM A; ------执行成功
SELECT * FROM "a"; ------执行成功
SELECT * FROM "A"; ------执行成功
表b查询情况如下:
SELECT * FROM b; ------执行成功
SELECT * FROM B; ------执行成功
SELECT * FROM "b"; ------执行成功
SELECT * FROM "B"; ------执行成功
CREATE TABLE MMJ(COL VARCHAR(100)); ---创建表MMJ
INSERT INTO MMJ VALUES('Abc'); ---插入数据Abc
INSERT INTO MMJ VALUES('ABC'); ---插入数据ABC
SELECT COUNT(*) FROM MMJ WHERE COL='Abc'; ------结果为1
SELECT COUNT(*) FROM MMJ WHERE COL='ABC'; ------结果为1
SELECT COUNT(*) FROM MMJ WHERE COL='Abc'; ------结果为2
SELECT COUNT(*) FROM MMJ WHERE COL='ABC'; ------结果为2
需要注意的是:密码中含有“@”、“/”等特殊字符,此时需要通过转义符来处理。
disql 转义符使用如下:
linux 环境
需要使用双引号将密码包含进来
同时外层再使用单引号进行转义,具体例子如下:
./disql SYSDBA/'"abcd@efgh"'@localhost
windows环境
需要使用双引号将密码包含进来
同时对双引号使用“\”进行转义,具体例子如下:
disql SYSDBA/\"abcd@efgh\"@localhost
创建小写表对象:需要添加双引号来创建
创建大写表对象:不需要添加双引号来
创建查询小写表对象:需要添加双引号查询
查询大写表对象:不需要添加双引号查询
创建小写表对象:需要添加双引号来创建
创建大写表对象:不需要添加双引号来创建
查询小写表对象:不需要添加双引号来创建
查询大写表对象:不需要添加双引号来创建
不论是大小写敏感还是不敏感,需要注意以下情况
create user "bb" identified by "11111111111"
create user "BB" identified by "11111111111" ------报错:对象[BB]已存在
表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,需要使用双引号查询
表对象大写:不需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询,因为会自动转换成大写查询
表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询。
表对象大写:不需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询,因为会自动转换成大写查询
1)创建表:
若表名或列名未添加双引号"",则表名和列名会自动转换为大写形式;
若对表名或列名添加双引号"",则会固定书写时的大、小写;
同名的数据库对象,如果大小写不同,那么则为两个不同的对象。
2)字段同上:
一个表中,即使是相同的字段名,只要大小写不同,允许存在同名且不同大小写形式的字段。
3)DML 或 DDL 操作时:
1)创建表时:
无论对不对表名或列名添加双引号"",表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;
2)字段同上:
不允许相同的字段名,即使大小写不同;
查询时,''和""界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集.
3)DML或DDL操作时:
无论对不对表名或列名添加"",表名和列名的大小写形式不会发生变化,大写形式就是大写形式,小写形式就是小写形式;
一个表中,不允许相同的字段名,即使大小写不同;
查询时,''和""界定符不区分大小写,界定符中的查询或过滤条件即使是大写或小写,都可以查询到预期的结果集,进行 DML 操作时依旧。
在大小写不敏感的情况下,以上情况均不允许存在同名的数据库对象,即使大小写不同,默认也只能存在一个。