ORACLE-SQL积累(查询外检约束、记录长度、字段长度、启用禁用触发器、case用法、分组连接函数、查询被锁表)

原创 2015年11月20日 16:55:05

查看所有外键约束:

SELECT
  USER_CONS_COLUMNS.CONSTRAINT_NAME AS 约束名,
  USER_CONS_COLUMNS.TABLE_NAME AS 子表名,
  USER_CONS_COLUMNS.COLUMN_NAME AS 子表列名,
  USER_CONS_COLUMNS.POSITION AS 位置,
  USER_INDEXES.TABLE_NAME AS 主表名,
  USER_IND_COLUMNS.COLUMN_NAME AS 主表列名
FROM
  USER_CONSTRAINTS
    JOIN USER_CONS_COLUMNS
    ON (USER_CONSTRAINTS.CONSTRAINT_NAME
        = USER_CONS_COLUMNS.CONSTRAINT_NAME)
    JOIN USER_INDEXES
    ON (USER_CONSTRAINTS.R_CONSTRAINT_NAME
        = USER_INDEXES.INDEX_NAME)
    JOIN USER_IND_COLUMNS
    ON (USER_INDEXES.INDEX_NAME = USER_IND_COLUMNS.INDEX_NAME)
WHERE
  CONSTRAINT_TYPE = 'R';


查看表记录长度、字段长度:

select table_name,sum(data_length)
FROM cols t group by t.TABLE_NAME

select table_name,column_name,data_type, to_char(data_length) 
FROM cols t 

1. 查询一张表里面索引 
select * from user_indexes where table_name=upper('bills'); 
2. 查询被索引字段 
select * from user_ind_columns where index_name=('in_bills'); 

启用禁用触发器:
ALTER TRIGGER <触发器名> DISABLE; 禁用某个触发器
ALTER TRIGGER <触发器名> ENABLE;  启用某个触发器
ALTER TABLE <表名> DISABLE ALL TRIGGERS; 禁用表上的所有的触发器
ALTER TABLE <表名> ENABLE ALL TRIGGERS;  启用表上的所有的触发器


Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a')       THEN '第二类'
ELSE'其他' END



分组连接字符串函数:

select LISTAGG(d.box_id, ';') WITHIN GROUP(ORDER BY d.box_id) from d;


查询哪些对象被锁:

SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

  l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

  FROM v$locked_object l, all_objects o, v$session s

  WHERE l.object_id = o.object_id

  AND l.session_id = s.sid

  ORDER BY sid, s.serial# ;

语句用来杀死一个进程:
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

用SQL语句查询出所有表的表结构(字段定义,类型,长度等),导出CSV(SQL2008 R2)

领导安排要整理公司一个大型项目的数据库,要求最终形成一个表结构文档,方便以后维护使用,并让在整理SQL过程了解项目。 搜索后找到一个SQL脚本,修改后执行下SQL脚本。 在结果就能看到数据库所有表的结...

Oracle 11g 学习四:多表查询、左右连接、SQL1999语法、统计函数及分组查询

一、多表查询

ORACLE关于锁表查询的部分SQL

--查询表空间名称和大小 SELECT UPPER (F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TO...

SQL查询字段赋值的case用法

需求:select name from bd_corp where name='ab'  显示结果为“ab”,需求是name='ab'条件下显示为“cd” 我的sql是 select subst...

SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL

对于有些数据库我们没有权限或者因为其它原因无法查看其数据库的表结构,那么我们将要自己想办法去做了,如果能够应用程序访问的话,我们就可以使用如下所示的 sql脚本来获取数据库中的所有表结构了,代码如下...

【SQL】按字段分组查询符合条件记录的方法

SQL查询中经常会碰到这样一种情形:先按若干字段GROUP BY分组后,再以分组数据为基础,查询返回符合条件的记录。对于这种需求,简单情况下可以直接采用MAX/MIN函数配搭GROUP BY实现(方法...

sql中如何查询表的信息,字段名,长度,类型等等?

SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.col...

对oracle当中子查询建表,merge操作,创建,修改,删除约束,创建使用触发器的复习练习

Sql代码 /** 对oracle当中子查询建表,merge操作,创建,修改,删除约束,创建使用触发器的复习练习**/  /**    本例子的作用是熟悉使用oracle当中的触发器:有两...

oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息

通过搜索摸索,总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1、查询出所有的用户表 select *...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)