• 最近用到的SQL语句


    最近在导数据,包括使用kettle将sqlserver、mysql的数据导入oracle中(使用多表导入向导),添加主键、注释,为后续导入hbase打好基础。
    
    --table_name为要操作的表名,column_name为要操作的列名
    --oracle
    --找出id字段的最大值
    select max(id) from table_name
    --操作数据之前备份表
    create table table_name_bak as select * from table_name
    --对于已经建好的空表可以这样备份(需要commit)
    insert into table_name_bak select * from table_name
    --统计表的行数(比count(*)快但第一列不能有null值)
    select count(1) from table_name
    --清空表数据(慎用,快是快但难以恢复)
    truncate table table_name
    --为表添加注释
    comment on table table_name is '要添加的表注释';
    --为列添加注释
    comment on column table_name.column_name is '要添加的列注释';
    --重命名表(pl/sql developer通过对表的Edit是无法重命名的,会新建一张表)
    alter table old_table_name rename to new_table_name 
    --找出所有带CLOB字段的用户表(应尽量少的使用CLOB字段)
    select distinct(t.TABLE_NAME) from all_tab_columns t 
        where t.TABLE_NAME in (select t2.TABLE_NAME from user_tables t2) 
        and t.DATA_TYPE = 'CLOB' order by t.TABLE_NAME;
    --查询某一列有无重复的值,如果有则输出该列
    select column_name, count(*) from table_name group by column_name having count(*) > 1    
    --将一张表的数据插入到另一张表中
    insert into e_cdr (select t.*, to_date('20160102', 'yyyyMMdd') as E_CDR_DATE from e_cdr_20160102 t)
    --为表增加主键(主键名不能超过30个字符)
    alter table table_name add constraint pk_table_name_column_name primary key (column_name)
    --为某一个表增加ID字段,设置自动增长的值最后设为主键(seq_temp是自己建的sequence)
    alter table table_name add id number;
    update table_name t set t.id = seq_temp.nextval
    alter table table_name add constraint pk_table_name_id primary key (id)
    --查看用户username下前缀为perfix的表(通常相同前缀的表为一类表)
    select t.TABLE_NAME from all_tables t where t.OWNER = 'username' and t.TABLE_NAME like 'perfix%'
    --查看前缀为perfix的表的注释
    select * from user_tab_comments t where t.TABLE_NAME like 'perfix%'
    --修改列名,如果列名为uuid之类的关键字,要加双引号,如"uuid"
    alter table table_name rename column column_name to new_column_name
    alter table table_name rename column "uuid" to id
    --查找没有主键并的表
    select t.TABLE_NAME from all_tables t where t.OWNER = 'username' and t.TABLE_NAME like 'perfix%' and t.TABLE_NAME not in
    (select t.table_name from user_constraints t where t.constraint_type = 'P')
    --整合多表数据到一张新表中
    create table table_name as(
    select * from table_name1 union all
    select * from table_name2 union all
    ...)
    --查找所有列的表名、列名、数据类型及注释,按照表名、列名的字母进行排序
    SELECT t1.Table_Name AS "表名称",
    t2.Comments AS "名称",
    t1.Column_Name AS "代码",
    t1.Data_Type AS "数据类型"
    FROM cols t1 left join user_col_comments t2
    on t1.Table_name=t2.Table_name and t1.Column_Name=t2.Column_Name
    left join user_tab_comments t3 
    on t1.Table_name=t3.Table_name 
    WHERE NOT EXISTS ( SELECT t4.Object_Name FROM User_objects t4
    WHERE t4.Object_Type='TABLE' 
    AND t4.Temporary='Y' 
    AND t4.Object_Name=t1.Table_Name )
    ORDER BY t1.Table_Name, t1.Column_ID;
    
    --sqlserver
    --找出某一列最长的长度
    SELECT max(len(column_name)) FROM table_name
    --重命名某一列(遇到过因为sqlserver表列名过长而无法导入oracle的情况)
    exec sp_rename 'table_name.old_column_name', 'new_column_name', 'column'
    --因为使用kettle导表没有将注释导过去,所以手动拿到注释拼成sql语句进行导入
    --获取所有表的注释
    select tables.name, cast(ep.[value] as varchar(500)) from sys.tables tables 
    left join sys.extended_properties ep on (tables.object_id = ep.major_id and ep.minor_id = 0) order by tables.name
    --获取所有的表名、列名及相应的注释
    select tables.name,columns.name,cast(ep.value as varchar(500)) from 
        sys.tables tables inner join sys.columns columns on columns.object_id = tables.object_id 
        left join sys.extended_properties ep on ep.major_id = columns.object_id and ep.minor_id = columns.column_id
    --查看数据库中所有表的数据量,为确保显示一致按照名称排序
    select a.name, b.rows from sysobjects as a inner join sysindexes as b on a.id = b.id where (a.type = 'u') and (b.indid in (0,1)) order by a.name
    
    --mysql
    --赋予某用户读表的权限
    grant select on database_name.table_name to user_name;
    --撤销某用户读表的权限
    revoke select on database_name.table_name from user_name;
    --修复某张表
    repair table table_name
    --检查某个库中的所有表并自动修复(cmd执行)
    --mysqlcheck -c --databases db_name -uroot -p --auto-repair
     
  • 相关阅读:
    UICollectionView 应用
    关于UIWebView不能响应touchesBegan等四个方法的解决案例【可以检测 单击双击】
    IOS6 中新特性介绍
    KVO 使用
    IOS 学习资料汇总(^_^)
    [DEVDIV翻译] Core Animation中文翻译_第一章_什么是核心动画
    StoryBoard学习..(很详细.)
    Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
    sqlite语句主页
    Android的快速开发框架 afinal
  • 原文地址:https://www.cnblogs.com/mycd/p/9142076.html
Copyright © 2020-2023  润新知