Oracle和mysql數據庫中sql語句的一些細微差別

大家都知道,在企業的數據庫應用中,就屬Oracle和mysql數據庫應用的最爲廣泛,oracle數據庫通常用於大型企業的數據庫構建,而中小型企業大多會選擇mysql數據庫,其運行和維護成本都較小,那麼,oracle和mysql在語法上有哪些細微的區別呢,在進行詳細的討論之前,我先建一個示例表:

Create tablestudent(

Sno int primarykey,

Sname varchar(10)not null,

Sage int,

Sex char,

Address varchar(20)

);

1、修改表中的列定義

    Mysql中修改列的數據類型用的是modify關鍵字(前提是該列中還沒有數據),修改表的表名稱用rename to,修改整個列(包括列名,數據類型和完整性約束)則是用的change,並且修改時要將整個列的定義完整的重新寫一遍,即使只是修改一個地方。

eg:alter table student modify列名 新的列類型

alter table student change 原列名 新列名 新列類型 新完整性約束

  oracle中修改表中的列則只能將原列刪除,然後添加新列。

2、主鍵自動增長
  Mysql可以通過在定義主鍵時在後面加上auto_increment,即可實現插入數據時主鍵自動增長,避免出現插入數據時重複的問題。
eg: sno int primary key auto_increment
  oracle不能設置列自動增長,但oracle可以用序列加觸發器來解決自動增長問題達到與mysql一樣的效果。

3、分頁查詢功能

  Mysql中的分頁查詢功能用limit關鍵字實現,用於縮小搜索範圍,limit關鍵字也可用於數據的前後指定數目查詢。

eg:Select sagefrom student where sno limit 0,5;(查詢學生表中學號爲1——5的學生年齡)

  limit後的兩個參數:第一個參數爲查詢的起始位置,但不包含該位置,即如果是0,則實際從第一個開始,如果是1,則實際從第二個數開始;第二個參數爲要查詢的記錄條數。

  Oracle的分頁功能則是用的僞列(rownum)。

  4、列的連接操作

  Oracle中用 || 來實現連接操作,而mysql則可用函數concat(列名1,列名2,…,列名n)來連接所有列,進行任意字段的模糊查詢

eg:查詢所有家庭住址在武漢的學生的信息

select s.* from student s,(selectsno,concat(sno,sname,sage,sex,address) words from student) t where s.sno=t.snoand t.words like “%武漢%”;

 

另外,還有一些sql語句在增刪改查上的細微差別在另一篇博客上有詳細的解釋,我就不再贅述了:

http://blog.csdn.net/alanzyy/article/details/8313484

此博客會隨着博主的深入學習不斷更新的。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章