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 '\n'; 

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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM