参数解读:CASE_SENSITIVE参数的作用是标识符大小写敏感。
当大小写敏感时,小写的标识符要用英文双引号""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。
该参数再数据库实例创建时就必须指定,后面不能修改。
测试目的:测试参数CASE_SENSITIVE对数据库使用的影响。
测试过程:分别创建一个大小写敏感、一个大小写不敏感的实例进行对比测试。
方法1:图形化初始化实例里这里可进行勾选和不勾选,默认勾选,一旦确认不能更改;
方法2:使用dminit初始化时,指定CASE_SENSITIVE=y表示敏感,=n表示不敏感,一旦执行不能更改。
①大小写敏感实例PROD1
执行语句1创建表
create table students
( sno dec(3),
name varchar(20) primary key,
age dec(2),
class_id varchar(1)
);
提示创建成功,再执行语句2
create table STUDENTS
( SNO DEC(3) PRIMARY KEY,
NAME VARCHAR(20),
AGE DEC(2),
CLASS_ID VARCHAR(1)
);
此时报错对象STUDENTS已存在,说明在我们一开始执行语句1创建表时,数据库自动把我们输入的小写的students转化成了大写,所以我们再次创建大写的STUDENTS对象时提示已存在;
再次执行语句3
create table “students”
( sno dec(3) primary key,
“name” varchar(20),
name varchar(20),
age dec(2),
class_id varchar(1)
);
创建成功,说明加引号以后,数据库会识别并创建为小写的students对象,可与大写的STUDENTS对象同时存在,互为两个不同的对象;对于加引号和不加引号的小写字段,也识别为不同的字段可以同时存在。
插入数据
可以看到,students表中name字段为主键,但是我们插入了大小写不同的一样的名字,可以插入成功,说明数据库存储数据的时候对于大小写不同的同一字符识别为不同的数据,这时并不违反主键唯一性约束。
对name字段筛选查询
②大小写不敏感实例PROD2
执行语句1创建表
create table students
( sno dec(3) ,
name varchar(20) primary key,
age dec(2),
class_id varchar(1)
);
创建成功,再执行语句2
create table STUDENTS
( SNO DEC(3) PRIMARY KEY,
NAME VARCHAR(20),
AGE DEC(2),
CLASS_ID VARCHAR(1)
);
提示对象【students】已存在,执行失败,再执行语句3
create table “students”
( sno dec(3) primary key,
“name” varchar(20),
name varchar(20),
age dec(2),
class_id varchar(1)
);
提示对象【students】已存在,执行失败
同样插入数据并查询,可以看到数据库也将插入的大小写不同的同一字符识别为相同的数据,违反了唯一性约束,无法插入;
对name字段筛选查询
可以看到筛选条件不区分大小写,都能查询出这条数据
结论
对于大小写敏感的库
1.创建对象时,无论大小写,数据库都会自动转换为大写形式来存储;
2.大写的对象名和小写的对象名可同时存在,为两个不同的对象,但对于小写的对象我们创建、查询和引用时需要用双引号括起来,字段名也一样;
3.插入数据时,内容相同、大小写不同的数据依次插入同一字段,如果该字段是主键,有唯一性约束,并不会违反唯一性约束,可同时存在。
对于大小写不敏感的库
1.创建对象时,大写则创建为大写形式来存储,小写则创建为小写的形式来存储;
2. 大写的对象名和小写的对象名不能同时存在,无论加不加双引号数据库都识别为同一对象,我们在创建、查询和引用时大小写都可以通用,字段名也一样;
3.插入数据时,内容相同、大小写不同的数据依次插入同一字段,如果该字段是主键,有唯一性约束,则会违反唯一性约束,不能同时存在。
文章
阅读量
获赞
