码迷,mamicode.com
首页 > 其他好文 > 详细

DM实例大小写敏感的区别

时间:2021-05-24 01:01:10      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:from   img   存在   同名   达梦数据库   查询   设置   成功   引号   

在数据库的使用过程中,经常会遇到各种各样的问题,想要做到事半功倍,对数据库的了解以及在做数据库设计的时候就应该考虑很多问题,在初始化实例之前需要向用户说明哪些参数初始化实例之后不能改,相关参数的作用,如字符集GB18030是比UTF-8节省体积等。下面说明DM大小写敏感的区别

初始化实例

达梦数据库大小写敏感是由case_sensitive参数来控制大小写敏感的
设置大小写不敏感时,不能设置GB18030字符集
技术图片

大小写敏感:
./dminit path=/dmdata case_sensitive=1 charset=1 db_name=case1 instance_name=sensitive
大小写不敏感;
./dminit path=/dmdata case_sensitive=0 charset=1 db_name=case0 instance_name=insensitive
查询大小写是否敏感
SELECT SF_GET_CASE_SENSITIVE_FLAG();
技术图片
1表示敏感,0表示不敏感。
通过DM管理工具也能查看到,右键连接,选择管理服务器
技术图片
技术图片

大小写不敏感

create table test(name varchar);
执行成功, 执行耗时72毫秒. 执行号:51512
insert into test values(‘aaa‘);
执行成功, 执行耗时2毫秒. 执行号:51513
insert into test values(‘AAA‘);
执行成功, 执行耗时1毫秒. 执行号:51514
insert into TEST(NAme) values(‘bbb‘);
执行成功, 执行耗时1毫秒. 执行号:51515
create table Test(name varchar);
执行失败(语句1)
第1 行附近出现错误[-2124]:
对象[test]已存在
create table TEST(name varchar);
执行失败(语句1)
第1 行附近出现错误[-2124]:
对象[test]已存在
select dbms_metadata.get_ddl(‘TABLE‘,‘test‘,‘SYSDBA‘)from dual;
/* 查询结果
CREATE TABLE "SYSDBA"."test"
(
"name" VARCHAR(8188)) STORAGE(ON "MAIN", CLUSTERBTR) ;
*/
drop table test;
create table "Test"(name varchar);
select dbms_metadata.get_ddl(‘TABLE‘,‘test‘,‘SYSDBA‘)from dual;
/*查询结果
CREATE TABLE "SYSDBA"."Test"
(
"name" VARCHAR(8188)) STORAGE(ON "MAIN", CLUSTERBTR) ;
*/
create test1(name varchar(10),NAME varchar(10));
执行失败

总结:

  1. 无论对不对表名或列名加双引号,表名和列名大小写形式不会发生变化,创建时是大写就是大写,是小写就是小写。
  2. 不允许存在同名的数据库对象,即使大小写不同也算同名。
  3. 一个表中,不允许出现相同字段名,大小写不同也算同名。

大小写敏感库

create table test(name varchar);
执行成功, 执行耗时127毫秒. 执行号:51508
insert into test values(‘aaa‘);
执行成功, 执行耗时2毫秒. 执行号:51509
insert into test values(‘AAA‘);
执行成功, 执行耗时2毫秒. 执行号:51510
insert into TEST(NAme) values(‘bbb‘);
执行成功, 执行耗时1毫秒. 执行号:51511
create table Test(name varchar);
执行失败(语句1)
第1 行附近出现错误[-2124]:
对象[TEST]已存在
create table TEST(name varchar);
执行失败(语句1)
第1 行附近出现错误[-2124]:
对象[TEST]已存在
create table "Test"(name varchar);
执行成功, 执行耗时5毫秒. 执行号:51519
select dbms_metadata.get_ddl(‘TABLE‘,‘test‘,‘SYSDBA‘)from dual;
执行失败(语句1)
未找到对象或不允许查询系统定义的内部索引
select dbms_metadata.get_ddl(‘TABLE‘,‘TEST‘,‘SYSDBA‘)from dual;
/* 查询结果
CREATE TABLE "SYSDBA"."TEST"
(
"NAME" VARCHAR(8188)) STORAGE(ON "MAIN", CLUSTERBTR) ;
*/
create table test1("name" varchar(10),"NAME" varchar(10));
执行成功, 执行耗时24毫秒. 执行号:51521

总结:

  1. 不加双引号,创建表时会自动将表名和列名自动转换成大写形式,加双引号表名和列名则会保留原形式。
    create table test和create table "test"是不同的,前者会自动转换成TEST,后者保留原形式test。
  2. 大小写不同的两个表是不同对象。
  3. 一个表中,允许存在同名但大小写形式不同的字段。

DM实例大小写敏感的区别

标签:from   img   存在   同名   达梦数据库   查询   设置   成功   引号   

原文地址:https://www.cnblogs.com/itschen/p/14743112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!