• oracle 、mysql、 sql server使用记录


    oracle 、mysql、 sql server使用记录 

    mysql常用命令:

    mysqld --启动mysql数据库
    show databases; -- 查看数据库
    use database; -- 选择数据库
    show tables; -- 查看表
    desc tableName; -- 查看表结构
    show processlists; --如果查询慢,可以查看是否锁表
    exit --退出mysql
    service mysqld restart; --重启mysql服务

    mysql声明过程

    mysql中的procedure:
    //声明
    declare i int;
    //赋值
    set i = 1;
    //或者使用 @i 直接使用,不用声明 
    
    //创建procedure模板
    create procedure dbname.myMethod()
    begin
    declare i int;
    set i = 1;
    test:while i<3 do
    select i;
    end while test;
    //如果有增删改,不要忘记commit
    commit;
    end; 
    
    //调用过程
    call myMethod();

    数据删除、清空

    drop、delete和truncate:

    drop:连同表结构和表数据直接删除

    truncate:清空表数据,但不删除表结构,而且autoincrement从0开始计数;

    delete:可以加where条件,删除特定区域记录,但是主键autoincrement继续之前的数字计数。

    语法:

    drop table tableName;
    truncate table tableName;
    delete from tableName where 1=1; 

    速度,一般来说: drop> truncate > delete

    truncate和 delete只删除数据不删除表的结构(定义)

    数据导入导出

    mysql导出数据

    select * from test_table into outfile "d:/a.txt"; 

    mysql导入数据

    LOAD DATA INFILE '/tmp/1.txt' INTO TABLE tmpuserid FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '
    '; 

    sql server

    使用bcp导出 

    oracle

    待定 

    表复制

    mysql

    1)先创建table1

    create table table1(id bigint);

    2)插入

    insert into table1(id) select id from table2; --要求table1必须存在,字段必须一一对应 

    oralce

    方法一:复制表结构和数据

    create table temp_clientloginuser
    as
    select distinct userid from tbuserloginlog; 

    方法二:仅复制数据

    --如果表结构一样
    insert into mytable select * from yourtable;
    -- 如果表结构不一样
    insert into mytable(column1,column2...) select column1,column2 ... from yourtable;

    3.ms sqlserver

    select ptid into newtable from tmpuserid;
    --sqlserver 会自动新建一张表结构和 from表一样的新表 

    其他注意问题

    1.sql server 查询select的时候要记得加 with(nolock) ,防止锁住;

    2. oracle 中查询用户所包含的所有对象信息

    select * from user_source

    where lower(text) like '%yyyy%'

    3.使用mysql和oracle时一定要对DML语言进行显式地commit,不然insert的数据不会生效,切记!

    4. 要分清哪些命令是DML,哪些是DDL

    DDL是数据定义语言,如drop,alter,truncate等都是DDL;

    DML是数据操纵语言,如nsert,update,delete,merge等都是DML,

    在oracle里DML需要显式地commit,当然可以rollback的,而DDL是不可以的。

    5.面对表数据量很大,成千万上亿的情况,查询的时候不要join,直接查范围大也会很慢,最好的办法是将需要的数据导出到一张临时表,然后在临时表中进行操作,速度会快很对。

    6.如何跨库?

    在oracle中使用database link方式,如 在database3中使用

    > select * from datatable@database2;

    查询,但是,最好减少跨库查询,如确实需要,可以将需要的数据导入到一张临时表,然后在临时表中操作。 

    not exists

    例子:

    select * from temp_clientloginuser_info a
    where not exists(select 1 from tvsumamountmonth b where lower(a.ptid)=b.poptid and b.sumamount>0)

    update 2013-7-12 10:07:45

    mysql中日期函数:

    // 当前时间
    select now();   --2008-12-29 16:25:46
    CURDATE() -- 2008-12-29
    CURTIME() -- 16:25:46
    SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL -1 DAY);  //日期增减
    DATE_FORMAT(@insertDate, '%Y-%m-%d') //日期格式化,相当于oralce中的trunc方法 

    sql server 中的日期函数:

    -- 获取当前时间
    select getdate();
    -- 返回 2013-06-20 ,相当于oracle中的trunc方法
    select CONVERT(varchar(10), getdate(),120); 
    
    select getdate();
    -- 返回 2013-06-20 ,相当于oracle中的trunc方法字符串转date:
    select CONVERT(varchar(10), getdate(),120); 
    CONVERT(datetime, getdate(),120);
    convert(int,sum(NewSingleUser))
    --sum()的返回值是根据里面的字段决定的,这里返回int64 long类型,convert函数把long转化为int类型

    oracle 日期函数 to_date()

    sysdate :  --系统日期
    to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') -- 时间格式转化
    to_date('2004-05-07 13:23:44','hh24')  --13 取小时数
    sysdate+1  --加一天
    sysdate+1/24 --加1小时
    sysdate+1/(24*60) --加1分钟
    sysdate+1/(24*60*60) --加1秒钟
    select to_date('2003-11-17','yyyy-mm-dd')+1 from dual;  --2003-11-18
    add_months(sysdate,1)  --加一个月
    add_months(sysdate,12) --加一年

    alter语句

    --oracle 删除一列
    alter table t_jm_user drop column  USR_EmailValidate;
    
    
    --sql server要修改表中列的数据类型
    ALTER TABLE [PV_HIS_JifenWall_Report] alter COLUMN [type] nvarchar(10)
    
    --删除mysql的一个分区表:
    ALTER TABLE WebStat.PV_HIS drop partition p20130620;
    
    查看分区表
    SELECT TABLE_NAME, PARTITION_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE  Table_name = 'PV_HIS'; 

    mysql

    null与空’’
    
    mysql中is not null<> ''
    
    -- sql语句以...结尾
    
    delimiter //
    查看mysql是否锁住:
    mysql > show processlist;

    主要看STATE列,

    Locked 被其他查询锁住了。

    Sending data 正在处理SELECT查询的记录,同时正在把结果发送给客户端。

    Sorting for group 正在为GROUP BY做排序。
    Sorting for order 正在为ORDER BY做排序。

    Sorting result For a SELECT statement, this is similar to Creating sort index, but for nontemporary tables.

    NULL This state is used for the SHOW PROCESSLIST state.

  • 相关阅读:
    补货知识要点解析
    【解析】ABC与CVA分析法
    【进阶】安全库存与动态平衡
    【知识】可用于仓储数据分析的4类方法
    浅析VMI(供应商库存管理)的实施条件与原则
    补货分类与策略要点
    仓库运营效率提升手册(简版)
    WinForm嵌入Web网站 逝年
    如何将本地项目上传到gitlab IT
    oracle数据库exp和imp的使用
  • 原文地址:https://www.cnblogs.com/fanyong/p/3160853.html
Copyright © 2020-2023  润新知