DBA基礎課程:Oracle基本的SQL語句
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢dba基礎課程:Oracle基本的SQL語句
oracle基本的SQL語句和SQLSERVER基本一樣,在這里只簡單列出與SQLSERVER不一樣的地方
1.select * from orderinfo where address = 'abcd' 與 address = 'ABCD'
得到的結果是不一樣的,也就是說oracle字符區分大小寫,這一點特別要注意。
2.查詢語句中,如果表引用了別名,則字段也必須的用別名.字段名
select orderid, ordercode from orderinfo o是一條錯誤的查詢語句,正確的如下:
select o.orderid, o.ordercode from orderinfo o或者select orderid , ordercode from orderinfo
3.A{operator}any B:表示A與B中的任何一個元素進行operator運算符的比較,只要有一個比較值為true,就返回數據行
A{operator}all B:表示A與B中的所有元素進行operator運算符的比較,只有所有元素的比較值都為true,就返回數據行
select * from orderinfo where orderid = any(1,2,3) 表示orderid等于1或2或3則返回數據行
select * from orderinfo where orderid <> all(1,2,3) 表示orderid不等于1并且不等于2并且不等于3則返回數據行
4.與null進行比較要用 is null這與sqlserver一樣,在這里記一下
5.自然連接natural join
select o.orderid, u.userid from orderinfo o natural join userinfo u where o.orderid = 1
oracle把兩個表中名稱相同的列自動連接
6.子查詢中的in, any ,all
select * from orderinfo where userid in (select userid from userinfo where username = 'abcd')與sqlserver一樣
select * from orderinfo where userid > any (select userid from userinfo where username = 'abcd')
只要userid大于任何一個子查詢中的userid則返回數據行
select * from orderinfo where userid > all(select userid from userinfo where username ='abcd')
userid必須大于子查詢中所有的userid才能返回數據行
7.insert語句
insert into orderinfo(orderid) values(orderinfo_seq.nextval)
orderinfo_seq.nextval獲取序列下一個值,前提必須創建了orderinfo_seq序列
批量插入數據:
insert into orderinfo_tmp select * from orderinfo where orderid = 1
8.update語句
update orderinfo set mobilephone = '13333333333' where orderid = 1
通過查詢更新:
update orderinfo set (mobilephone, address, productnumeric, amount) = (select mobilephone,
address, productnumeric, amount from orderinfo where orderid = 1)
where orderid = 2
9.Delete,truncate語句
delete from orderinfo where orderid = 1
truncate table orderinfo --刪除orderinfo表中所有的記錄,并且不記錄日志,所以可以很快的刪除記錄,但是無法恢復
10.事務
oracle11g中的事務是隱式自動開始的,它不需要用戶顯示地執行開始事務語句,但對于事務的結束處理,則需要用戶進行指定的操作,
通常在以下情況oracle認為一個事務結束了:
1.執行commit語句提交事務
2.執行rollback語句撤消事務
3.執行一條數據定義語句,如create,drop,alter等語句,如果語句執行成功,oracle系統會自動執行commit命令,否則系統會自動執行
rollback命令
4.執行一個數據控制命令,比如grant,revoke,這種語句執行完畢,系統會自動執行commit命令
5.正常地斷開數據庫連接,正常退出sqlplus環境,系統會自動執行commit命令,否則系統自動執行rollback命令
綜合上述五種情況,歸根到底事務的結束要么執行commit命令,要么執行rollback命令
提交事務:
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
commit;
回滾事務:
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
rollback;
事務可以回滾到一個點,如:
truncate table orderinfo
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
savepoint sp;
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
rollback to savepoint sp;
commit;
上述語句執行后數據表中只有一條記錄,也就是每一條插入語句所插入的數據
12.分頁查詢
select * from(
select o.*, rownum r from orderinfo o where rownum <=20 order by o.orderid asc)
where r > 10
查詢第11-20條記錄