定义列
Oracle 数据库中的一个表最多可以有 1,000 列。您在创建表时定义这些。您还可以将它们添加到现有表中。
create table this_table_has_three_columns (
this_is_a_character_column varchar2(100),
this_is_a_number_column number,
this_is_a_date_column date
);
查看列信息
您可以通过查询 user_tab_columns 找到有关用户表中列的详细信息。
select table_name, column_name, data_type, data_length, data_precision, data_scale
from user_tab_columns;
字符数据类型
varchar2:这存储可变长度的文本。您需要为这些字符串的大小指定一个上限。在 Oracle 数据库 11.2 及之前版本中,您可以指定的最大值为 4,000 字节。从 12.1 开始,您可以将此长度增加到 32,767
char:储固定长度的字符串。如果您插入的文本短于该列的最大长度,则数据库右侧会用空格填充它。char 的最大大小为 2,000 字节
clob:储大于 varchar2 上限的文本,请使用 Clob。这是一个字符大对象。它最多可以存储 (4 GB - 1) *(数据库块大小)的数据。
create table character_data (
varchar_10_col varchar2(10),
varchar_4000_col varchar2(4000),
char_10_col char(10),
clob_col clob
);
select column_name, data_type, data_length
from user_tab_columns
where table_name = 'CHARACTER_DATA'
数值型数据类型
Number:
最小值 最大值
number ( 3, 2 ) -9.99 9.99
number ( 3, -2 ) -99900 99900
number ( 5 ) -99999 99999
Float:这是数字的子类型。您可以使用它来存储浮点数。但我们建议您改用 binary_float 或 binary_double
Binary_float & Binary_double:Binary_float 是 32 位单精度浮点数。Binary_double 是 64 位双精度浮点数。这些数据类型的限制是:
create table numeric_data (
number_3_sf_2_dp number(3, 2),
number_3_sf_2 number(3, -2),
number_5_sf_0_dp number(5, 0),
integer_col integer,
float_col float(10),
real_col real,
binary_float_col binary_float,
binary_double_col binary_double
);
select column_name, data_type, data_length, data_precision, data_scale from user_tab_columns where table_name = 'NUMERIC_DATA';
二进制数据类型
Raw:与字符数据一样,raw 用于较小的项目。您可以为每列指定数据的最大长度。它的最大限制为 2,000 字节,最高为 11.2,从 12.1 开始为 32,767。
Blob: 代表二进制大对象。与 clob 一样,您可以存储的最大大小为 (4 GB - 1) *(数据库块大小)。
创建一个包含二进制数据类型列的表
create table binary_data (
raw_col raw(1000),
blob_col blob
);
select column_name, data_type, data_length, data_precision, data_scale
from user_tab_columns
where table_name = 'BINARY_DATA';
向现有表添加列
alter table this_table_has_three_columns add (
this_is_a_timestamp_column timestamp,
this_is_a_binary_large_object blob
);
select column_name, data_type, data_length, data_precision, data_scale
from user_tab_columns
where table_name = 'THIS_TABLE_HAS_THREE_COLUMNS';
从表中删除列
alter table this_table_has_three_columns drop (
this_is_a_timestamp_column,
this_is_a_binary_large_object
);
select column_name, data_type, data_length, data_precision, data_scale
from user_tab_columns
where table_name = 'THIS_TABLE_HAS_THREE_COLUMNS';