一.参数说明
CASE_SENSITIVE参数是创建数据库时用来确定数据库对象以及数据是否区分大小写的参数。
标识符大小写敏感。当大小写敏感时,小写的标识符应用””(双引号)括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。取值:Y、y、1表示敏感;N、n、0表示不敏感。默认值为Y。可选参数。
一般情况我们遇到的大小写要区分的情况:
数据库的对象名:表名,字段名
字符数据内容及区分:字符串内容
查询数据库的大小写敏感
SQL> SELECT SF_GET_CASE_SENSITIVE_FLAG();
当值为1时,表示数据库对大小写敏感,在初始化数据库时默认为1
这是为了兼容Oracle数据库的一种策略
在区分大小写的情况下,当用户输入的字符不管是大写还是小写,数据库会默认的转换为大写。这样对用户来说是相对友好的。但当一定要使用小写的情况下,可以使用“”双引号将内容括起来。
大小写敏感测试:
我们先查看数据库中已经存在的表空间。其中有一个名为TEST的表空间。
接下来我们测试来创建一个名称小写的test表空间
创建成功。
我们再来查看数据库中的用户情况:
目前数据库中出了系统默认的用户还没有其他用户
我们现在来测试创建两个用户并分别指定默认的表空间TEST和”test”,一个使用dmedu,另一个是”dmEdu”,看看不同的效果。
create user dmedu identified by dmedu123456 default tablespace TEST;
create user "dmedu" identified by dmedu123456 default tablespace "test";
执行报错,看来在创建用户名的时候,不管用不用“”双引号括起来,都会被系统默认转换成大写。
02.测试创建表
创建三张表, itpub,”itpub”,“ITpub”
create table itpub(id int,sex char(1),name char(10));
create table "itpub"(id int,"sex" char(1),name char(10));
create table "ITpub"(id int,sex char(1),name char(10));
可见,当加了双引号后对象名有影响。
查询数据:
在创建表的时候,给字段名加上双引号后,就指定了字段名的大小写。
那一个表中,能否使用相同名字,大小写不同的字段名呢?
测试是可以的。但不建议这么做,因为在查询的时候也需要做改变,很难得到想要的结果,在做增、删、改、查的时候也容易出错。
如果不加双引号,SQL语句中表名和对象名会被自动转成大写。
三、创建一个大小写不敏感的数据库
四、大小写不敏感测试:
create tablespace test datafile 'D:\dmdbms\test\TEST\test.DBF' size 100 autoextend off;
create tablespace TEST datafile 'D:\dmdbms\test\TEST\test01.DBF' size 100 autoextend off;
create tablespace "TEST" datafile 'D:\dmdbms\test\TEST\test02.DBF' size 100 autoextend off;
创建几张表来测试:
create table itpub(id int,sex char(1),name char(10));
create table "ITPUB"(id int,sex char(1),name char(10));
create table ITPUB1(id int,sex char(1),name char(10));
create table itpub2(id int,sex char(1),"SEX" char(10));
create table ITPUB(id int,sex char(1),name char(10));
总结:
无论对不对表名或列名加双引号,表名和列名大小写形式不会发生变化,创建时是大写就是大写,是小写就是小写。
不允许存在同名的数据库对象,即使大小写不同也算同名。
一个表中,不允许出现相同字段名,大小写不同也算同名。
字段字符内容也不区分大小写,无论是大写还是小写都认为是相同的值
文章
阅读量
获赞