`
huangyongxing310
  • 浏览: 476230 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

SQL存储过程例子和有用的SQL

阅读更多

delete from cacherefresh where 1=1;
COMMIT;

//=====================================================
获取数据库所有表明的SQL

MYSQL
select table_name from information_schema.tables where table_schema='当前数据库';

select table_name  from information_schema.tables where table_schema = (select database()) order by  table_name;

select t.table_name from user_tables t;

ORACLE
SELECT * FROM user_tables
-- 加 ORDER BY TABLE_NAME 是让结果按照表名顺序展示
SELECT * FROM user_tables ORDER BY TABLE_NAME

https://www.cnblogs.com/cnsdhzzl/p/9848493.html


//=====================================================
oracle 删除表

declare
    p_table VARCHAR2(4000) := 'supplierdocumentinfo';
    v_count number(10) := 0;
begin
    select count(*)
    into v_count
    from user_tables
    where table_name = upper(p_table);

    if v_count > 0 then
        execute immediate 'drop table ' || p_table ||' purge';
    end if;
end;


mysql
判断表是否存在
select * from information_schema.tables where table_name ='acl';




//=====================================================



//=====================================================
//删除oracle相关表的SQL
create global temporary table delete_table_temp_tb (col1 varchar(200)) on commit delete rows;
create global temporary table delete_table_message_tb (col1 varchar(200)) on commit delete rows;
insert into  delete_table_temp_tb values('test11');
insert into  delete_table_temp_tb values('test22');
insert into  delete_table_temp_tb values('test33');

declare
    p_table VARCHAR2(200) := '';
    v_count number(10) := 0;

begin
    FOR r IN (select * from  delete_table_temp_tb) loop
            v_count := 0;
            p_table := trim(r.col1);
            begin
                select count(*)
                into v_count
                from user_tables
                where table_name = upper(p_table);

                if v_count > 0 then
                    execute immediate 'drop table ' || p_table ||' purge';
                end if;
            end;
        end loop;
end;
select * from  delete_table_temp_tb;
select * from  delete_table_message_tb;
drop table delete_table_temp_tb;
drop table delete_table_message_tb;


MySQL

CREATE TEMPORARY TABLE delete_table_temp_tb (
table_name VARCHAR(100) NOT NULL,
primary key (table_name)
);

insert into  delete_table_temp_tb values('esbtransaction ');
insert into  delete_table_temp_tb values('esbtransactionrelease ');

select * from  delete_table_temp_tb;


create procedure delete_table_procedure()
begin
    declare p_table varchar(100);
    declare v_count int;
    declare delTabl varchar(1000);
    -- 遍历数据结束标志 注意位置顺序
    DECLARE done INT DEFAULT FALSE;

    -- 注意用别名 因为id在上面已经有定义所以需要使用表的别名区别
    declare cur_test CURSOR for select trim(t.table_name) from delete_table_temp_tb t;
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    open cur_test;
    repeat
        fetch cur_test into p_table;
        set v_count =0;
        select  count(*)  into v_count from information_schema.tables where table_name = upper(p_table);
        if v_count > 0 then
            SET delTabl = CONCAT(' DROP TABLE  ', p_table);
            PREPARE temp FROM delTabl;
            EXECUTE temp;
        end if;
    until done
        end repeat;
    close cur_test;
end;


call delete_table_procedure();

# 删除临时表
drop TEMPORARY TABLE delete_table_temp_tb;
# 删除存储过程
drop procedure delete_table_procedure;




//=====================================================
ORAcle数据库删除字段的SQL语句 :
alter table tableName drop (name)

MySQL

MySQL中添加、删除字段,使用SQL语句操作
1.新增字段

alter table table1
add col1 int(2) not NULL DEFAULT 0 COMMENT '注释1',
add col2 VARCHAR(300) DEFAULT NULL COMMENT '注释2'                       
语法:alter table 表名 add 列名 int(2) 字段数据类型、长度 NOT NULL (是否可为空)DEFAULT 0  默认值


alter table MTClsPanelAttribute add defaultValue varchar2(100);

2.删除字段

alter table id_name drop column age,drop column address;


语法:alter table 表名 drop column 列名


//=====================================================
oracle中判断某个字段是否存在

select count(column_name)
from cols
where table_name = upper('acl')
  and column_name = upper('oid2')


MySQL
SELECT count(*) FROM information_schema.columns WHERE table_name = 'Acl' AND COLUMN_NAME = 'Oid2';


//=====================================================

//=====================================================
//删除oracle相关表的相关字段
create global temporary table delete_table_temp_tb (tb_name varchar(200),column_name varchar(200)) on commit delete rows;
create global temporary table delete_table_message_tb (tb_name varchar(200),column_name varchar(200)) on commit delete rows;
insert into  delete_table_temp_tb (tb_name,column_name) values('test11','test111');
insert into  delete_table_temp_tb (tb_name,column_name) values('test22','test222');

declare
    p_table VARCHAR2(200) := '';
    p_column_name VARCHAR2(200) := '';
    v_count number(10) := 0;

begin
    FOR r IN (select * from  delete_table_temp_tb) loop
            v_count := 0;
            p_table := trim(r.tb_name);
            p_column_name := trim(r.column_name);
            begin
                select count(column_name)
                into v_count
                from cols
                where table_name = upper(p_table)
                  and column_name = upper(p_column_name);

                if v_count > 0 then
                    execute immediate 'alter table ' || p_table ||' drop (' || p_column_name || ')';
                end if;
            end;
        end loop;
end;
select * from  delete_table_temp_tb;
select * from  delete_table_message_tb;
drop table delete_table_temp_tb;
drop table delete_table_message_tb;



MySQL
CREATE TEMPORARY TABLE delete_table_temp_tb
(
    tb_name     VARCHAR(100) NOT NULL,
    column_name VARCHAR(100) NOT NULL,
    primary key (tb_name)
);
insert into  delete_table_temp_tb (tb_name,column_name) values('test11','test111');
insert into  delete_table_temp_tb (tb_name,column_name) values('test22','test222');
insert into  delete_table_temp_tb (tb_name,column_name) values('objecthelpconfig ','name');

select * from delete_table_temp_tb;


create procedure delete_table_column_procedure()
begin
    declare p_table varchar(100);
    declare p_column varchar(100);
    declare v_count int;
    declare delTabl varchar(1000);
    -- 遍历数据结束标志 注意位置顺序
    DECLARE done INT DEFAULT FALSE;

    -- 注意用别名 因为id在上面已经有定义所以需要使用表的别名区别
    declare cur_test CURSOR for select trim(t.tb_name), trim(t.column_name)from delete_table_temp_tb t;
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    open cur_test;
    repeat
        fetch cur_test into p_table,p_column;
        set v_count = 0;
        SELECT count(*) into v_count FROM information_schema.columns WHERE table_name = upper(p_table) AND COLUMN_NAME = upper(p_column);
        if v_count > 0 then
            SET delTabl = CONCAT(' alter table  ', p_table,' drop column ',p_column);
            PREPARE temp FROM delTabl;
            EXECUTE temp;
        end if;
    until done
        end repeat;
    close cur_test;
end;


call delete_table_column_procedure();

# 删除临时表
drop TEMPORARY TABLE delete_table_temp_tb;
# 删除存储过程
drop procedure delete_table_column_procedure;



//=====================================================数据表备份
create table ts_dictionary_20160715 as select * from ts_dictionary;




//=====================================================
//=====================================================
//=====================================================



oracle
查询死锁
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id


SHOW TABLE STATUS FROM `xinttest_ext` //可列出指定数据库中所有表的信息,包括表类型;
SHOW CREATE TABLE `xinttest_ext` //可列出指定数据表的信息,包括表类型。






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics