一、功能验证测试
基本语法测试 - 创建包含不同长度字符串的表:
```sql
CREATE TABLE test_varchar2 (
id NUMBER PRIMARY KEY,
name VARCHAR2(50)
);
```
- 插入数据并验证:
```sql
INSERT INTO test_varchar2 (id, name) VALUES (1, '短名称');
INSERT INTO test_varchar2 (id, name) VALUES (2, '这是一个超过50个字符的测试字符串,用于验证VARCHAR2的扩展性');
```
字符长度限制测试
- 尝试插入超过当前字符长度的数据(如`VARCHAR2(50)`插入60个字符):
```sql
INSERT INTO test_varchar2 (id, name) VALUES (3, '超出长度的字符串会导致错误');
```
- 验证错误代码(如`ORA-02097`)。
字符集与编码测试
- 存储中文字符(如“你好”):
```sql
INSERT INTO test_varchar2 (id, name) VALUES (4, '你好');
SELECT name, LENGTH(name), CHAR_LENGTH(name) FROM test_varchar2;
```
- 比较`LENGTH`(3字节)与`CHAR_LENGTH`(2个字符)的差异。
二、性能测试
大规模数据插入测试
- 使用批量插入优化性能:
```sql
INSERT INTO test_varchar2 (id, name) VALUES (5, '测试数据' || SUBSTR('测试数据', 1, 1000));
```
- 监控执行时间:
```sql
EXPLAIN PLAN FOR
INSERT INTO test_varchar2 (id, name) VALUES (6, '重复测试数据' || SUBSTR('测试数据', 1, 1000));
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
```
索引优化测试
- 在`VARCHAR2`列上创建索引并测试查询性能:
```sql
CREATE INDEX idx_name ON test_varchar2 (name);
SELECT * FROM test_varchar2 WHERE name LIKE '%测试数据%';
```
三、边界条件测试
最小长度测试
- 插入单字符数据:
```sql
INSERT INTO test_varchar2 (id, name) VALUES (7, 'A');
```
- 验证默认存储长度(通常为1个字符)。
最大长度测试
- 尝试`VARCHAR2(32K)`(约1MB)的极限长度:
```sql
ALTER SYSTEM SET max_string_size=32767 SCOPE=BOTH;
CREATE TABLE test_32k (id NUMBER, name VARCHAR2(32767));
```
- 注意:需在升级模式(UPGRADE)下执行。
四、注意事项
字符集影响: `VARCHAR2`存储长度以字节为单位,而字符长度可能因字符集不同而变化(如UTF-8下汉字占3个字节)。 参数配置
工具辅助:使用`EXPLAIN PLAN`分析查询性能,或通过脚本批量生成测试数据。
通过以上测试方法,可全面验证`VARCHAR2`类型的正确性、存储特性及性能表现。