Oracle中数据字典和数据类型

本文详细介绍了Oracle数据库中的数据字典查询方法及常用数据类型的特点,包括如何查询表结构、索引和约束等,并对比了不同字符类型如CHAR、VARCHAR2的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据字典
1.查询某用户下的所有表
select table_name from all_tables where owner='SCOTT'; --用户名需要大写
2.查询表中所有的字段
select * from all_tab_columns where table_name='EMP'; --表名要大写

3.列出表中的索引列

select * from sys.all_ind_columns where table_name = 'TB_STAFF_TRANSFER_APPLY2';--表名要大写

4.列出表中约束
select * from all_constraints where table_name='EMP';--表名要大写
5.在oracle中描述数据字典视图
select table_name,comments from dictionary where table_name like '%TABLE%';
二、数据类型
1.主要的数据类型
char,nchar,varchar2,nvarchar2,number(),date,blob(binary二进制流的大对象),clob(文件大对象)
注意:
1.char是以固定长度的,所以速度会比varchar2快得多,但是程序处理起来稍微复杂,要用trim()去掉字符串两端的空格。
2.varchar2一般用于英文和数字,nvarchar2适用中文和其他字符,其中n表示Unicode常量,可以解决多语言字符集之间的转换问题。
3.numbers(4,2)指的是整数占2位,小数占2位(截断的时候需要四舍五入) 
4.number默认是38位。Number(4,2)  指的是整数占 2 位,小数占 2 位
5.oracle ( char nchar varchar2 nvarchar2 )区别
char
固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 SQL 2003 同义词为 character。
varchar2
可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。SQL-2003 中的 varchar2 就是 char varying 或 character varying。
nchar
n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。nchar 的 SQL-2003 同义词为 national char 和 national character。
nvarchar2
可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可以为 0 个字符。nvarchar2 的 SQL-2003 同义词为 national char varying 和 national character varying。 
http://www.cnblogs.com/lc-ant/archive/2012/04/06/2434219.html

ORACLE字符类型详解----char、nchar、varchar、varchar2、nvarchar2
char:
使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格。指定长度时,默认长度的计量单位由NLS_LENGTH_SEMANTICS(默认为字节byte)参数决定,但是我们可以手动指定为char或者byte。oracle建议使用NLS_LENGTH_SEMANTICS来指定计量单位,这样可以提高效率。char类型的最大存储长度为2000个字节,在plsql中,最大存储长度可以达到32767个字节。使用char时,可以不指定最大长度,此时最大长度为1.
nchar:
使用国家字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,数据库自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为2000个字节,在plsql中,其最大存储长度可以达到32767个字节。使用nchar时,可以不指定最大长度,此时最大长度为1.
varchar2: 使用数据库字符集存储数据,长度可变,如果存储数据没有达到指定长度,不自动补足空格。可使用char,byte为计量单位,默认受参数NLS_LENGTH_SEMANTICS的影响。最大存储长度为4000个字节,在plsql中,存储长度可达32767个字节。必须指定最大长度,长度最小值为1.
nvarchar2:
使用国家字符集来存储数据,长度可变,如果存储的数据没有达到指定长度,不自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为4000个字节,在plsql中,其最大存储长度可以达到32767个字节。必须指定最大长度,长度最小值为1.
varchar:
oracle目前并没有实现该数据类型,当前版本下,varchar与varchar2完全一致,但不保证将来不会单独设计varchar。
http://www.2cto.com/database/201310/252696.html

三、DML(改变数据结构)
Merge
Oracle在9i引入了merge命令,
通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表

语法如下
MERGE INTO [表名2] [别名]
USING ( [查询语句] )[别名]
ON ([条件表达式] AND [...]...)
WHEN MATHED THEN [可以执行update更新语句或其它语句]
WHEN NOT MATHED THEN [可以执行插入语句或其它语句 ]

例子:

create table test1(eid number(5),name varchar2(20),birth date,salary number(8,2));
insert into test1 values(1001,'zhangsan','1992-11-5','3500');
insert into test1 values(1001,'lisi','1995-8-12','5600');
create table test2(eid number(5),name varchar2(20),birth date,salary number(8,2));


merge into test2 t2
using (select * from test1) t1
on(t1.eid=t2.eid)
when matched then 
update set name=t1.name,birth=t1.birth,salary=t1.salary
when not matched then
insert(eid,name,birth,salary) values(t1.eid,t1.name,t1.birth,t1.salary);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值