暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

是否区分大小写/大小写敏感的小测试

原创 Nightingale 2024-08-09
143

区分大小写/大小写敏感 测试

用户名:U1 、u1

表名:T1、t1

字段值:(char) A 、a


ORACLE 19C


测试结果 ==> Oralce19C 用户名、表名不区分大小写、字段值区分大小写

SYSTEM@DS19C_pdb> create user qin identified by qin default tablespace tbs_qin temporary tablespace tmp_qin;

用户已创建。

SYSTEM@DS19C_pdb>
SYSTEM@DS19C_pdb>
SYSTEM@DS19C_pdb>
SYSTEM@DS19C_pdb> grant connect,resource to qin;
grant dba to qin;

授权成功。

SYSTEM@DS19C_pdb>
授权成功。

SYSTEM@DS19C_pdb>
QIN@DS19C_pdb> create user qin identified by QIN default tablespace tbs_qin temporary tablespace tmp_qin;
create user qin identified by QIN default tablespace tbs_qin temporary tablespace tmp_qin
           *
第 1 行出现错误:
ORA-01920: 用户名 'QIN' 与另外一个用户名或角色名发生冲突


QIN@DS19C_pdb>

QIN@DS19C_pdb> create table T1(c1 char);

表已创建。

QIN@DS19C_pdb> create table t1(c1 char);
create table t1(c1 char)
            *
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用


QIN@DS19C_pdb> insert into T1 values ('A');

已创建 1 行。

QIN@DS19C_pdb> insert into t1 values ('a');

已创建 1 行。

QIN@DS19C_pdb> select * from T1 where c1='A';

C
-
A

QIN@DS19C_pdb> select * from T1 where c1='a';

C
-
a


KB



参数 : --enable-ci 使用不区分大小写初始化数据库集群


PS:找一个有权限的目录,直接使用initdb命令初始化一个与原来enable_ci区别的数据库实例data目录,修改端口号后启动即可,不需要重新安装kb,

谨慎一些可以把原来data目录的实例停掉。

initdb -Ukb01 -enable-ci -D $PGDATA

ksql -Ukb01 -dtest --本机直接登录不需要密码



测试结果1 ==> enable_ci为off的情况下,表名、用户名不区分大小写,字段值区分大小写

test=# show enable_ci;
enable_ci
-----------
off
(1 行记录)

test=# create user U1 password 'u123';
CREATE ROLE
test=#
test=# create user u1 password 'u123';
ERROR: role "u1" already exists
test=#
test=# create table T1(c1 char);
CREATE TABLE
test=#
test=# create table t1(c1 char);
ERROR: relation "t1" already exists
test=#
test=#
test=# insert into T1 values ('a'),('A');
INSERT 0 2
test=#
test=# select * from T1 where c1='a';
c1
----
a
(1 行记录)

test=#
test=# select * from T1 where c1='A';
c1
----
A
(1 行记录)

test=#
test=#


测试结果2 ==> enable_ci为on的情况下,表名、用户名不区分大小写,字段值区分大小写

test=# show enable_ci;
enable_ci
-----------
on
(1 行记录)

test=# create user U1 password 'u123';
CREATE ROLE
test=#
test=# create user u1 password 'u123';
ERROR: 角色"u1" 已经存在
test=#
test=# create table T1(c1 char);
CREATE TABLE
test=#
test=# create table t1(c1 char);
ERROR: 关系 "t1" 已经存在
test=#
test=# insert into T1 values ('A'),('a');
INSERT 0 2
test=#
test=# select * from T1 where c1='A';
c1
----
A
a
(2 行记录)

test=#
test=# select * from t1 where c1='a';
c1
----
A
a
(2 行记录)

test=#
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论