`
wj98127
  • 浏览: 268043 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

常用sql(一)

阅读更多
查看所有SEQUENCES:
select sequence_name from  USER_SEQUENCES;

修改表字段不允许为空
alter table table_name modify cloumn_name not null;

查询序列
select seq_major_site_reg.nextval from dual;

添加主键
alter table table_name add constraint PK_SEEDSITE_ID primary key (ID);

导入.sql文件
su - oracle
sqlplus username/password@orclname
@/tmp/filename.sql

-------------------------------------------------

Oracle Temporary Tables(Oracle 临时表)

1. 建立临时表语法

A.ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法

CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

-----(COUMNS …)

-----AS SELECT … FROM TABLE…

ON COMMIT DELETE ROWS;

当前session发出commit/rollback命令,则该事务周期发生的所有数据自动被Oracle删除(Oracle truncate table)。但不影响任何其他session的数据。

B.ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法

CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

-----(COUMNS …)

-----AS SELECT … FROM TABLE…

ON COMMIT PRESERVE ROWS;

当前session结束(用户正常退出 / 用户不正常退出 / Oracle实例崩溃),Oracle对这个会话的中发生的数据进行删除(Oracle truncate table)。但不影响任何其他session的数据。

2. 特点说明

A.临时表数据自动清空后,但是临时表的结构以及元数据还存储在用户的数据字典中。表的定义对所有的会话可见

B.临时表不需要DML锁

C.可以索引临时表和在临时表基础上建立视图

D.在临时表上的索引也是临时的,也是只对当前会话或者事务有效

E.临时表可以拥有触发器

F.可以用export和import工具导入导出临时表的定义,但是不能导出数据

3. 使用技巧

A.当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中

B.程序执行过程中可能需要存放一些临时的数据,可以将这类数据放在临时表里非常方便

C.存储过程中用到临时表:

1> 在建立临时表前,应先加上对表名的判断

Select count(*) into v_count from user_tables where table_name = ‘XXX’;

If v_count=0 then

Create global temporary table …

在存储过程结束处,应该记得删除表

execute immediate 'drop table t_temp';


4、查看锁表信息
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
       l.os_user_name,s.machine, s.terminal,a.sql_text, a.action 
     FROM v$sqlarea a,v$session s, v$locked_object l
    WHERE l.session_id = s.sid
      AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;

5、解除锁表
alter system kill session 'sid,serial#';
例:alter system kill session '135,16';

--以下几个为相关表
SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process ;      
SELECT * FROM v$locked_object;  
SELECT * FROM all_objects;  
SELECT * FROM v$session_wait;

1.查出锁定object的session的信息以及被锁定的object名
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# ;

2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句
--比上面那段多出sql_text和action
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
       l.os_user_name,s.machine, s.terminal,a.sql_text, a.action 
     FROM v$sqlarea a,v$session s, v$locked_object l
    WHERE l.session_id = s.sid
      AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;
     
3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
       s.terminal, s.logon_time, l.type
    FROM v$session s, v$lock l
   WHERE s.sid = l.sid
     AND s.username IS NOT NULL
ORDER BY sid;

4.case语句:

SELECT count(*) cnt, field
    FROM (SELECT case
                   when salary < 1000 then
                    '饥饿'
                   WHEN salary >= 1000 and salary <= 1500 THEN
                    '温饱'
                   WHEN salary > 1500 and salary <= 2000 THEN
                    '富裕'
                   WHEN salary > 2000 and salary <= 2500 THEN
                    '小康'
                   ELSE
                    '太富了'
                 END field
            FROM persion) a
   GROUP by field;

5.根据某一条件查出星期
select to_char(to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + rownum - 1, 'DAY') as 星期,
       to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + rownum - 1 as 日期
  from user_objects
where rownum <= (to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + 7 -
       to_date(' 2009-03-09 ', ' yyyy-mm-dd '));

6、在数据库服务器上 查看 那台机器连接到了数据库,连接的会话数是多少
select count(*),machine  from v$session v group by machine;


7、查看当前session执行的sql
SELECT/*+ordered*/ a.username,
   a.machine,
   a.program,
   a.sid,
   a.serial#,
     c.hash_value,
     b.spid,
   a.status,
   c.piece,
   c.sql_text
 FROM v$session a,
   v$process b,
   v$sqltext c
WHERE a.STATUS='ACTIVE'
   AND b.addr=a.paddr
   AND a.sql_address=c.address(+)
     and a.sid>10
     and a.AUDSID<>userenv('sessionid')
     and a.username is not null
  /*   and sid=239*/
ORDER BY A.SID,c.piece;
分享到:
评论

相关推荐

    U8常用SQL.sql

    用友U8常用sql 表描述 ,支持查询所有基础资料和单据模板表和字段。便于日常问题的排查。

    达梦数据库常用sql.sql

    达梦数据库常用sql.sql

    50个常用SQL语句.zip

    50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用...

    易飞9.0常用SQL.sql

    易飞9.0常用SQL.sql

    sqlserver常用sql

    死锁的诊断和定位 查询阻塞的语句 查询执行较慢的语句 查询正在执行的语句1 查询正在执行的语句2 查询所有表的主键 查询所有索引 查询表结构 ...修改SQLServer最大内存 用DAC连接到SQL Server 其它SQL DBCC

    常用sql指令一般面试都可通过

    SELECT 指令是 SQL 中最基本和最常用的指令之一,用于从数据库中检索数据。SELECT 指令的基本语法如下: SELECT [ALL | DISTINCT] select_list FROM table_source [WHERE search_condition] [GROUP BY group_by_...

    金蝶K3CLOUD 常用SQL

    金蝶K3CLOUD 常用SQL 金蝶K3CLOUD 是一个基于云计算的企业管理软件,提供了一个完整的企业资源规划(ERP)解决方案。以下是金蝶K3CLOUD 中常用的SQL语句,涵盖了物料管理、组织管理、元数据管理、部门管理、单据...

    常用web开发工具 SQL数据库文件.zip

    常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip...

    常用sql语句汇总

    这篇文档“常用sql语句汇总”将涵盖多个与SQL相关的主题,包括处理死锁、BCP数据导入导出、动态生成日期维度以及如何断开并更改数据库名称等关键知识点。 首先,我们来探讨死锁。死锁是数据库系统中常见的问题,...

    oracle常用sql整理

    本文将基于"oracle常用sql整理"的主题,深入探讨Oracle SQL的一些核心概念、语句及其实用技巧,适合初级到中级水平的学习者。 一、SQL基础 SQL是标准化的查询语言,分为DDL(Data Definition Language)、DML(Data...

    易飞常用SQL

    易飞常用SQL

    oracle常用sql.rar

    "oracle常用sql.rar"这个压缩包文件显然包含了关于Oracle数据库中常用SQL语句的集合,这对于学习和工作中解决常见问题非常有帮助。以下是一些Oracle SQL的重要知识点: 1. **锁表查询**: 在Oracle中,锁定数据是...

    常用SQL语法技巧常用SQL语法技巧常用SQL语法技巧

    常用SQL语法技巧常用SQL语法技巧常用SQL语法技巧常用SQL语法技巧常用SQL语法技巧

    面试常用SQL常用语句

    在SQL面试中,掌握一些常用的查询语句是至关重要的,以下是一些常见的SQL知识点: 1. **ISNULL函数**:这个函数用于判断一个值是否为NULL,如果是,则替换为指定的值。例如,在第一条查询中,如果员工的出生日期为...

    开发常用的SQL语句

    本文将深入解析标题为“开发常用的SQL语句”以及描述为“软件开发必备的SQL语句”的知识点,通过解读给定的部分内容,提供一系列关键SQL语句及其应用情境。 ### SELECT语句 SELECT语句是最基本也是最常用的SQL查询...

    EXCEL 常用SQL语句解释+VBA 完全手册

    学习"EXCEL 常用SQL语句解释+VBA 完全手册"的内容,不仅可以提升你在Excel中的数据处理能力,还能够使你在面对复杂数据挑战时游刃有余。无论你是数据分析师、项目经理还是企业决策者,掌握这些技能都将大大提高你的...

    Mysql常用SQL语句

    MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` *...

    《数据库开发常用SQL文件批量备份》---备份

    《数据库开发常用SQL文件批量备份》---备份 《数据库开发常用SQL文件批量备份》---备份 《数据库开发常用SQL文件批量备份》---备份 《数据库开发常用SQL文件批量备份》---备份 《数据库开发常用SQL文件批量备份》---...

    Snipptes常用SQL代码块

    Snipptes常用SQL代码块,数据库开发常用SQL,以及金蝶K3常用查询和处理SQL

Global site tag (gtag.js) - Google Analytics