大家都知道,在企業的數據庫應用中,就屬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
此博客會隨着博主的深入學習不斷更新的。。。