oracle的使用


mysql中常说的库,相当于oracle的表空间。

登录,切换用户

连接数据库

sqlplus / as sysdba;   # 匿名用户作为sysdba登录
sqlplus guanyu/1234   # 实际用户登录

切换用户(表空间)

conn root/1234 ; -- 连接用户(也就是库)
-- 查看当前库(表空间)
show user;  
select user from dual;
select * from user_users;

查看当前数据库(实例名):

用处并不大,一般切换用户就能到所属库

show parameter instance_name;  -- 这个其实会显示所有有权限的库,一般用户只显示自己的所属库
select name from v$database;

表结构,列结构

查看所有表名

user_tables常用场景:
查看是否有某个表名, table_name
统计库的总行数, num_rows字段 求和

select t.table_name,t.num_rows 
from user_tables t ;  -- from tab也可 tab是user_tables的视图

desc dba_data_files; -- 这个是命令,不是sql

查看字段类型,长度,默认值(不带注释)

user_tab_columns 这个用处比较大,查表,查列,字段,长度,默认值等都在这里

select table_name,column_name,data_type,data_length,data_default 
from user_tab_columns where table_name ='t_user';

查看字段注释

user_col_comments(只有三个字段)应用场景:
查看某表的列注释
其他的时候推荐user_tab_columns,字段类型,长度等都在这里。

select 
table_name,
column_name,
comments
from user_col_comments where table_name like '%t_user%';

导出数据字典

有的时候客户要求导出字典表结构,用下面的语句可以满足一般要求:

select t.table_name,t.column_name,
case
-- 文档中常见的字段类型为varchar(32),number(10,2)这样的类
-- 如果是number类型还要考虑精度,data_type,data_precision,data_scale
WHEN t.data_type ='NUMBER'and t.data_precision is not null and t.data_scale is not null  THEN
t.data_type||'('||t.data_precision||','||t.data_scale||')'
else t.data_type||'('||t.data_length||')'
end as data_type
,t.nullable,
t2.comments
from user_tab_columns t
-- tab_columns表里面没有注释,所以要关联col_comments表
left join
user_col_comments t2
on t.table_name =t2.table_name and t.column_name =t2.column_name
order by t.table_name

视图结构,列结构

视图和表类似

查看所有视图

查表用*_tables,查视图用*_views。 而且视图最好dba_views,因为user_views太少了。视图一般都是系统级的。

select * from dba_views where view_name like '%$SESSION%'

v$ 和 v_$的区别

作用相同。

select * from sys.v$session;
select * from v$session.;

查视图字段,类型,长度,默认值

视图的列都也是放在*_tab_columns里面,而且都是table_name来查询。但要注意:

1. 最好用dba_tab_columns,不要用user_tab_columns。
2. 视图名要大写,而且最好模糊搜索。
因为视图名跟我想象的可能不一样,如查询中用:
select * from v$session   
但是实际视图名是V_$SESSION

示例语句:

select table_name,column_name,data_type,data_length,data_default 
from dba_tab_columns where table_name like '%$SESSION%';

视图列注释

和表一样。注意用dba_col_comments, 视图名大写。
其实这个没用,因为视图一般没有列注释。

select * from dba_col_comments where table_name  like '%$SQL%'

dict字典表

看了这么多,大家肯定要问,这些表视图,列视图都有哪些,能不能从全局的角度来看下,要不用到一个找一个太被动。
必须能,这些信息都在dict字典表,如sql:

# dict表只有2列table_name,comments
select TABLE_NAME,COMMENTS from dict 

这个字典表还是很有用的。

rownum限定行数

查看前10条

select * from sys_dict where rownum<11;

查看5-10条

oracle中的rownum不能使用大于>,所以sql如下:

(select * from sys_dict where rownum<10 )
minus
(select * from sys_dict where rownum<5 );

其他

查看所有表空间(用户)

dba_tablespaces 有表空间名,block,bytes等信息。

select * from dba_tablespaces;

查看数据的文件位置

DBA_DATA_FILES 有文件位置,表空间名,block,bytes等信息。

select * FROM DBA_DATA_FILES;

解锁用户

如果一个某个用户登录请求太频繁,会被锁住,这是一种保护机制。
解锁办法,使用system用户登录,或者使用dba用户登录:

alter user root identified by root 111111 unlock;

是否区分大小写

oracle是区分大小写的。
那么为什么我表名小写还能查询出来?
例如:

select * from test; 

发现确实可以查询出来。

那么这条能查出来吗?

select *  from user_col_comments where table_name = 'test';

差不出来的。因为存的是大写的TEST。

所以,如果是作为sql主体可以小写,如果作为字符串,那么需要大写。

oracle为什么要区分大小写。
因为只要你不使用双引号表示区分大小写, ORACLE 会默认把你写的脚本全部转换为大写的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cx_Oracle是一个Python的第三方包,用于连接和操作Oracle数据库。它提供了一系列的方法和函数,以便在Python中执行SQL语句、调用存储过程和函数等数据库操作。在使用cx_Oracle时,需要先安装这个包,并根据需要进行配置。 在使用cx_Oracle进行数据库操作时,通常的步骤如下: 1. 导入cx_Oracle模块:使用import cx_Oracle语句导入模块。 2. 建立数据库连接:使用cx_Oracle.connect()函数建立与数据库的连接。需要提供数据库的用户名、密码以及数据库地址等连接信息。 3. 创建游标对象:使用连接对象的cursor()方法创建一个游标对象,用于执行SQL语句和调用存储过程。 4. 执行SQL语句:使用游标对象的execute()方法执行SQL语句。可以通过fetchone()、fetchall()等方法获取查询结果。 5. 调用存储过程和函数:使用游标对象的callproc()方法调用存储过程,通过callfunc()方法调用函数。需要提供存储过程或函数的名称、参数等信息。 6. 关闭游标和连接:使用游标对象的close()方法关闭游标,使用连接对象的close()方法关闭连接。 下面是一个使用cx_Oracle连接和操作Oracle数据库的示例代码: ```python import cx_Oracle # 建立数据库连接 conn = cx_Oracle.connect('用户名/密码@数据库地址/数据库名称') # 创建游标对象 cursor = conn.cursor() # 执行SQL语句 cursor.execute('SELECT * FROM 表名') # 获取查询结果 result = cursor.fetchall() print(result) # 调用存储过程 out_var = cursor.var(cx_Oracle.STRING) cursor.callproc('存储过程名', [参数1, 参数2, out_var]) print(out_var.getvalue()) # 关闭游标和连接 cursor.close() conn.close() ``` 需要注意的是,使用cx_Oracle操作Oracle数据库需要先安装Oracle客户端,并将Oracle客户端的路径配置到系统环境变量中。具体安装和配置过程可以参考cx_Oracle官方文档或相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值