Oracle與MySQL的SQL語句區別

2021-08-30 02:34:24 字數 2348 閱讀 3831

create table tablename(

columnname1 int,

columnname2 int

mysql:

drop table if exists tablename

oracle:

drop table tablename

注:oracle沒有if exists關鍵字,也沒用類似if exists的sql語法。

mysql:

a. alter table tablename add column columnname1 int;

b. alter table tablename add column columnname1 int, add column columnname2 int;

注:其中關鍵字column可有可無。

oracle:

a. alter table tablename add columnname1 int;

b. alter table tablename add (columnname1 int);

c. alter table tablename add (columnname1 int, columnname2 int); 

注:對於a,只有新增單列的時候才可使用,對於新增多列時需要使用c,不能像mysql那樣重複使用add column關鍵字。

mysql:

a. alter table tablename drop column columnname1

b. alter table tablename drop column columnname1, drop column columnname2

注:其中關鍵字column可有可無。

oracle:

a. alter table tablename drop column columnname2

b. alter table tablename drop (columnname1)

c. alter table tablename drop (columnname1,columnname2)

注:對於a,只有刪除單列的時候才可使用,對於刪除多列時需要使用c,不能像mysql那樣重複使用drop column關鍵字。

mysql:

alter table tablename change column columnnameold columnnamenew columntype;

oracle:

alter table tablename rename column columnnameold to columnnamenew;

oracle中,在列有資料的時候,無法修改列型別;沒有資料時可以。

mysql中,無論列是否有資料都可以修改列型別。

但是當有資料是,直接修改列型別都可能對資料造成丟失等,所以一般需要結合具體的業務來對列資料做處理後,再修改列型別型別。所以修改列的型別並非使用sql語句進行一步到位的修改,而是通過以下流程:

a. 新增臨時列

b. 將需要更改的列的值經過型別轉換的驗證後,賦值給臨時列

c. 刪除原有列

d. 將臨時列的列名修改為原有列列名

在整個資料庫內,mysql的索引可以同名,也就是說mysql的索引是表級別的;但是oracle索引不可以同名,也就是說oracle的索引是資料庫級別的。

create index indexname on tablename (columnname);

mysql:

alter table tablename drop index indexname

oracle:

drop index indexname

mysql:

show index from tablename

oracle:

select index_name, table_name, column_name from user_ind_columns where table_name=' tablename ' 

oracle中空字串''就是null(也就是說,只有null,沒有空字元),而mysql是區分null和''的。

對於使用語句:select * from table1 where user_name <> ''來查詢列user_name不為空(不為null且不為空字元)時,oracle會查不出任何結果,而mysql可以正常執行。這裡mysql之所以可以得到正確結果,還因為比較符號<>會先將列為null的內容進行過濾,然後再比較內容是否為空字串。

這就要求一方面,以後在編寫**的時候,盡量保證不會往資料庫插入空字串''這樣的值,要麼保持有資料,要麼保持為null。另外,對於mysql中已經同時存在null和''時,所有判斷是否為null或者''的地方改為判斷列的長度是否為0。

mysql profiling的使用與sql分析

mysql在5.0.3版本之後新增了profiling來進行效能分析 首先進入資料庫 show profiles mysql預設是關閉的,也就是off 需要設定成1開啟,也就是on,注意設定以後退出視窗之後會還原,要永久生效貌似需要重啟mysql才行 檢視是否開啟 開啟 set profiling ...

mysql的操作語句是 mysql操作SQL語句

二 資料庫操作sql語句 1 顯示伺服器上當前存在什麼資料庫 show databases 2 建立名稱為rewin的資料庫 create database rewin 3 刪除名稱為rewin的資料庫 drop database rewin 4 選擇rewin資料庫 use rewin 三 表操作...

mysql 防止注入 mysql如何防止sql注入

mysql防止sql注入的方法 1 普通使用者與系統管理員使用者的許可權要嚴格地區分開 2 強迫使用者使用引數化語句 3 盡量使用sql server資料庫自帶的安全引數 4 對使用者輸入的內容進行驗證。sql injection攻擊具有很大的危害,攻擊者可以利用它讀取 修改或者刪除資料庫內的資料,...