大小写 数据库 达梦_【干货分享】如何理解DM7中的大小写敏感

原标题:【干货分享】如何理解DM7中的大小写敏感

1.前言

在我们初始化达梦数据库的时候,有一个重要的参数,叫做大小写敏感。

我们很容易知道这个参数的意思,这参数决定数据库区分字符串时是否区分大小写。同时我们也可以用select case_sensitive来查看当前数据库的大小写敏感情况,1表示敏感,0表示不敏感。

那么,我们勾不勾选这个选项,对我们的数据库又有什么影响呢,本文就将给大家做个演示。

注:本文实验环境的DM7数据库版本为:

DM DatabaseServer x64 V7.1.6.46-Build(2018.02.08-89107)ENT

2.关闭大小写敏感参数的情况

创建表

create table test2(aa varchar(30));

查看存储字段为小写

select name from SYSOBJECTS where name ='test2'

如果使用大写表名查看,也可以查到

select name from SYSOBJECTS where name ='TEST2'

但是结果仍然是小写

通过小写的字段名查看,可以找到

select * from SYSCOLUMNS where NAME like '%aa%' and ID=(select ID from SYSOBJECTS where name ='test2');

通过大写的字段名查看,也可以找到

select * from SYSCOLUMNS where NAME like '%AA%' and ID=(select ID from SYSOBJECTS where name ='test2');

此时,如果我们尝试创建表大写的TEST2,则会报错提示该表已存在

总结:由此我们可知,在大小心不敏感的情况下,如果我们用小写的名字创建表,SQL不会自动把表名转换为大写。但是,在查询时,我们可用任意的大小写来进行查询。同时,表test和TEST在数据库中会被识别文同一个对象,所以在有test表的情况下,再创建TEST表时则会报错。

3.开启大小写敏感参数的情况

创建表

create table test2(aa varchar(30));

此时如果我们用小写的表名去查询

select name from SYSOBJECTS where name ='test2',则会查不到结果。

事实上,此时该表会以大写的的名字存在数据库中,这是因为,我们没有用双括号把test2引起来。在大小写敏感的环境下,系统会把SQL中的没有标识符的小写名字自动转换为大写存在数据库中,验证如下:

通过大写表名来查询,就可以找到

select name from SYSOBJECTS where name ='TEST2'

所以在大小写敏感的情况下,如果我们想要创建小写的表名,则要这样写

create table"test2"("aa" varchar(30));

这时创建语句不会报错,证明同名的大小写表名是可以在大小写敏感的数据库中共存的,测试也确实如下:

select name from SYSOBJECTS where name in ('TEST2','test2')

总结:当开启大小写敏感的时候,如果我们想要利用SQL语句查询或者创建小写的对象名,我们需要利用双括号把小写部分括起来,否则系统会自动把内容转换为大写;同时,大写和小写的对象名在系统中是被区分开,可以共存的。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值