ORACLE數(shù)據庫教程ppt課件_第1頁
ORACLE數(shù)據庫教程ppt課件_第2頁
ORACLE數(shù)據庫教程ppt課件_第3頁
ORACLE數(shù)據庫教程ppt課件_第4頁
ORACLE數(shù)據庫教程ppt課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ORACLE數(shù)據庫教程他可以不知道,但是絕對不能不懂-毀人不倦語錄2007年5月SQL根底知識篇SQL-001.簡介SQLStructured Query Language構造化查詢言語是IBM公司San Jose實驗室為System R而設計的查詢言語,后被國際規(guī)范化組織ISO同意作為關系數(shù)據庫言語的國際規(guī)范。SQL目前遵照的是1992年規(guī)范,即SQL-92。各數(shù)據庫廠家對SQL-92規(guī)范均有擴展,擴展部分不能完全保證數(shù)據庫之間的兼容性。我的熱情會灼傷一些人,但我是無心的-毀人不倦語錄.簡介SQL可以分為: 根底篇只引見前兩種DML:數(shù)據操作言語Data Manipulation Langu

2、age: select, insert, update, delete, (其他:truncate) DDL:數(shù)據定義言語 Data Definition Languages: create, drop , alter,(其他:rename)DCL數(shù)據控制言語:grant、revoke、set role 事務控制:commit、rollback、savepoint其他:lock table、set constraint(s)、set transaction審計控制:audit、noaudit系統(tǒng)控制:alter system 會話控制:alter session 其他語句:comment添加注

3、釋、explain plan、analyze、validate、call 假設我的話沒有錯,一定是他聽錯了-毀人不倦語錄.DDL數(shù)據定義言語CREATE(建立)ALTER(修正)DROP(刪除)無知者無畏,無畏者不一定無知-毀人不倦語錄.言語描畫商定 :表示可選項 | :表示選擇項CREATE:粗體表示關鍵字或必輸項Table_name:斜體表示用戶輸入項創(chuàng)建 :藍色表示闡明假設1+12,我置信那說的是團隊的力量-毀人不倦語錄.DDL數(shù)據定義言語CREATE-創(chuàng)建用戶CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE

4、tablespace_name TEMPORARY TABLESPACE tablespace_name;創(chuàng)建user_name用戶,密碼為password,運用tablespace_name表空間,假設沒有指定表空間,默許表空間為system表空間。Oracle10g有用戶默許表空間設置。建議在創(chuàng)建用戶時一定要指名表空間。先有雞,還是先有蛋,這么重要的問題還是留給雞去考證吧-毀人不倦語錄.DDL數(shù)據定義言語CREATE-創(chuàng)建數(shù)據表CREATE TABLE table_name(Column1 datatype defaultnot null primary key,constraint ke

5、y_name primary key(column_list) using index tablespace tablespace_name)tablespace tablespace_name;Datatype 是數(shù)據類型:varchar2(x), number(x,x), date, integer等。Not null非空限制,假設不寫表示可為空。Primary key主鍵,可以緊跟在字段后,或在最后運用constraint。未指名表空間,數(shù)據表建立在用戶默許的表空間中。筆只留下了痕跡,人用筆留下了文化-毀人不倦語錄.DDL數(shù)據定義言語CREATE-創(chuàng)建索引CREATE UNIQUE IN

6、DEX index_name ON table_name(column_list)tablespace tablespace_name;在table_name表上按照column_list建立索引,索引名為index_name,索引保管在tablespace_name表空間中。UNIQUE:獨一性索引。-毀人不倦語錄他可以不聽,但是我一定要說.DDL數(shù)據定義言語ALTER-修正表ALTER TABLE table_name RENAME TO new_table_name;將table_name表名修正為new_table_name。ALTER TABLE table_name ADD(col

7、umn1 datatype default not null,column2 datatype default not null, . );在table_name表中添加column1,column2.字段,追加到字段最后。ALTER TABLE table_name MODIFY(column1 datatype default not null|nullable,column2 datatype default not null|nullable, . 修正table_name表字段屬性,長度或精度不能小于原長度或精度。ALTER TABLE table_name DROP COLUMN

8、column_name;刪除table_name表中的column_name字段。ALTER TABLE table_name RENAME COLUMN old_name TO new_name;修正table_name表的old_name字段名為new_name。ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column_list);建立table_name表的主鍵,主鍵名pk_name,主鍵字段column_list。ALTER TABLE table_name DROP CONSTRAINT pk_name;刪除ta

9、ble_name表的pk_name主鍵。一個表只能有一個主鍵-毀人不倦語錄不說了,再說就該吐了。補充一點:站著進,扶著出也許是侃爺?shù)淖罡呔辰绨?DDL數(shù)據定義言語DROP -刪除DROP TABLE table_name;刪除table_name表。DROP INDEX index_name;刪除index_name索引。刪除主鍵強迫限制的一種,運用ALTER TABLE table_name DROP CONSTRAINT pk_name;-毀人不倦猜測數(shù)據庫和水庫之間不能夠沒有區(qū)別.DML小結從ALTER和CREATE及DROP語法數(shù)量再一次證明需求是易變的。假設添加表字段,并要求字段的陳

10、列位置,可以運用:CREATE TABLE temp_table_name AS SELECT * FROM table_name;DROP TABLE table_name;CREATE TABLE table_name(column);INSERT INTO table_name VALUES(column_list) (SELECT column_list1 FROM temp_table_name);DROP TABLE table_name;需求留意的是,刪除表后,表中的索引也被刪除,所以,在執(zhí)行上述操作前要保管好表的索引腳本。這里沒有寫DROP DATABASE的語法,假設大家想要

11、嘗試刪除數(shù)據庫的話,最好在專家的指點下進展!人間本無對錯,由于計算機才有了對與錯-毀人不倦語錄.DDL數(shù)據操作言語SELECT(查詢)INSERT(插入)UPDATE(更新)DELETE(刪除)假設老天能再給我一次時機,我一定做甲方-毀人不倦語錄.DDL數(shù)據操作言語SELECT-查詢SELECT ALL | DISTINCT ON ( expression , . ) * | expression AS output_name , . INTO TEMPORARY | TEMP TABLE new_table FROM from_item , . WHERE condition GROUP B

12、Y expression , . HAVING condition , . UNION | INTERSECT | EXCEPT ALL select ORDER BY expression ASC | DESC | USING operator , . FOR UPDATE OF class_name , . LIMIT count | ALL OFFSET | , start 后續(xù)查詢范例均以oracle中的SCOTT/TIGER用戶表為例假設失眠了,就看看上面的語法吧-毀人不倦語錄.DDL數(shù)據操作言語SCOTT/TIGER表引見DEPT部門定義表,DEPTNO是主鍵EMP職工表,EMPN

13、O主鍵,DEPTNO外鍵關聯(lián)DEPT其他表沒有數(shù)據或沒有關系,不在這里引見將復雜問題簡單化是涵養(yǎng),將簡單問題復雜化是藝術,綜合起來叫藝術涵養(yǎng)-毀人不倦語錄.DDL數(shù)據操作言語SELECT-單表查詢查詢表中一切字段和一切記錄,select后跟* 表示一切字段SELECT * FROM DEPT;查詢指定字段,在select后跟查詢的字段名列表,字段間用,隔開SELECT DEPTNO, DNAME FROM DEPT;條件查詢,F(xiàn)ROM后面運用WHERE,在WHERE中可以運用=, , ,=, 10GROUP BY DEPTNO, DNAMEHAVING COUNT(*) 0ORDER BY D

14、EPTNO DESC; -ORDER BY 是對前往的結果進展排序,所以必需放在最后一句。SELECT DEPTNO, DNAMEFROM SCOTT.DEPTWHERE DEPTNO 10GROUP BY DEPTNO, DNAMEHAVING COUNT(*) 0ORDER BY 1 DESC; -結果同第一個查詢,字段位置從1開場。我是來做工程的,不是來發(fā)明奇觀的-毀人不倦語錄.DDL數(shù)據操作言語SELECT-FOR UPDATE鎖等待查詢。當查詢結果中有被鎖定記錄時等待解鎖,當記錄被解鎖后前往結果集,并鎖定前往的記錄。假設FOR UPDATE后跟NOWAIT,遇到鎖后不等待,前往錯誤。

15、ORACLE運用記錄級鎖定,當事物被提交或回滾后鎖定被釋放。死鎖問題當兩個事物以不同的順序同時更新多個表時就會發(fā)生死鎖對牛,處理死鎖的途徑是手工殺掉死鎖的進程或者重新啟動數(shù)據庫。因此,在運用事物更新多表數(shù)據時一定要小心,運用面向對象的方法封裝數(shù)據操作可以在很大程度上處理死鎖問題。沒有經過嚴厲測試的軟件開發(fā)進度報告不看也罷-毀人不倦語錄.DDL數(shù)據操作言語SELECT-子查詢查詢語句可以嵌套,任何產生數(shù)值的地方都可以運用子查詢。在查詢條件中運用子查詢時,當子查詢前往多個結果時只能運用IN。查詢順序是先執(zhí)行被依賴的底層查詢,然后一層層向上查。子查詢只被執(zhí)行一次。查詢平均工資最低的部門情況SELEC

16、T DEPTNO, AVG(SAL)FROM SCOTT.EMPGROUP BY DEPTNOHAVING AVG(SAL) = (SELECT MIN(AVG(SAL) FROM SCOTT.EMPGROUP BY DEPTNO);-子查詢先查詢出最低的部門平均工資,然后查詢部門最低平均工資等于子查詢工資的部門就是喜歡編程也不能為了編程而放棄和用戶的功能確認,假設他把用戶對程序的恣意修正提升為對他本身價值的否認,他還不先確認嗎?-毀人不倦語錄.DDL數(shù)據操作言語SELECT-子查詢在FROM中運用子查詢,子查詢在這里相對與VIEWSELECT D.DEPTNO, D.DNAME, S.AVG

17、_SAL, S.SUM_SAL, S.NUMFROM SCOTT.DEPT D, (SELECT DEPTNO, AVG(SAL) AS AVG_SAL, SUM(SAL) AS SUM_SAL, COUNT(*) AS NUMFROM SCOTT.EMPGROUP BY DEPTNO) SWHERE D.DEPTNO = S.DEPTNO;在WHERE中運用子查詢,例子不好,應該直接寫表關聯(lián),這里只是為了闡明語法。SELECT * FROM SCOTT.EMP WHERE DEPTNO IN (SELECT DEPTNO FROM SCOTT.DEPT WHERE DEPTNO = 20);

18、驢怎樣了?人家采用的可是軟件工程中的螺旋法那么-毀人不倦語錄.DDL數(shù)據操作言語SELECT-子查詢運用EXISTS(NOT EXISTS)交換IN(NOT IN)IN(NOT IN)在執(zhí)行數(shù)據庫操作時性能非常低下,應該運用EXISTS(NOT EXISTS)交換,特別是NOT IN子句將執(zhí)行一個內部的排序和合并;EXISTS子查詢運用主表的字段限制查詢數(shù)據SELECT * FROM SCOTT.EMP E WHERE EXISTS (SELECT * FROM SCOTT.DEPT WHERE DEPT.DEPTNO = E.DEPTNO AND DEPTNO = 20);-由于EXISTS

19、可以看到外表,所以,假設表名反復,運用表別名區(qū)分,在子查詢中一定寫清楚和外表的關聯(lián)關系,另外,子查詢寫SELECT * 是對的,不用寫字段名。多做一點,早知道一點-毀人不倦語錄.DDL數(shù)據操作言語UPDATE修正用來更新數(shù)據表中的數(shù)據 UPDATE table_nameSET column_name = new_value, WHERE condition;更新DEPT表,將20號部門稱號修正為銷售部,地址修正為北京UPDATE DEPT SET DNAME = 銷售部, LOC = 北京WHERE DEPTNO = 20;子查詢也可在UPDATE中運用,將職工指點是KING的人員薪資添加10

20、0元UPDATE SCOTT.EMP SET SAL = SAL + 100WHERE EMPNO IN (SELECT E.EMPNO FROM SCOTT.EMP E, SCOTT.EMP G WHERE E.MGR = G.EMPNO AND G.ENAME = KING); UPDATE SCOTT.EMP SET SAL = SAL + 100WHERE EXISTS (SELECT * FROM SCOTT.EMP E, SCOTT.EMP G WHERE E.MGR = G.EMPNO AND E.EMPNO = EMP.EMPNO AND G.ENAME = KING); 金保

21、工程是“陽光工程,所以我才陽光-毀人不倦語錄.DDL數(shù)據操作言語INSERT-插入語法:INSERT INTO table_name (column,.) VALUES (expression ,) | SELECT query當表字段和插入值一樣時,可以省略字段列表INSERT INTO SCOTT.BONUS VALUES(TURNER, SALESMAN, 200, 40);當只插入部分字段時,必需列舉字段,未賦值字段運用默許值或為空INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) VALUES(CLARK, MANAGER, 100);也可以運用查詢給表

22、插入數(shù)據INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) SELECT ENAME, JOB, SAL FROM SCOTT.EMP WHERE MGR = 7698;實際上都是問題,做起來沒有問題-毀人不倦語錄.DDL數(shù)據操作言語DELETE-刪除語法:DELETE FROM table_nameWHERE condition;刪除BONUS中ENAME為CLARK的記錄DELETE FROM SCOTT.BONUS WHERE ENAME = CLARK刪除反復記錄,ROWID是記錄的物理位置,一經確定永不改動DELETE FROM SCOTT.BONUS

23、B WHERE ROWID 1);-刪除ENAME反復記錄本人先擦塊玻璃再交代給他人擦,安排任務同理-毀人不倦語錄.序列號創(chuàng)建CREATE SEQUENCE name INCREMENT BY n START WITH n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE CACHE n | NOCACHE;闡明:INCREMENT BY n 一次增長n 個數(shù)字START WITH n 初始值NOMAXVALUE 缺省值10E+27NOMINVALUE 缺省值1NOCYCLE 不循環(huán), 常用于獨一關鍵字CACHE n

24、 在內存里緩存n個序列,出錯回退時會喪失創(chuàng)建從1開場,不緩存的EMP_EMPNO序列。CREATE SEQUENCE EMP_EMPNO START WITH 1 NOCACHE;修正ALTER SEQUENCE name INCREMENT BY n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE CACHE n | NOCACHE;-起始值不能改動,假設要改動序列的起始值, 先刪除, 再新建。刪除DROP SEQUENCE name;DROP SEQUENCE EMP_EMPNO;.序列號運用NEXTVAL下一

25、個序列號值CURRVAL當前序列號值假設EMP_EMPNO是一個序列號,可以用下面SQL取序列值-去序列的當前值SELECT EMP_EMPNO.CURRVAL FROM DUAL;-去序列的下一個值SELECT EMP_EMPNO.NEXTVAL FROM DUAL;-運用序列插入數(shù)據INSERT INTO EMP(EMPNO, ENAME,) VALUES(EMP_EMPNO.NEXTVAL, JONE,);不能用序列號的nextval和currval的地方視圖查詢、distinct查詢、有group by,having,order by的查詢、有子查詢的查詢、表里的缺省值.注釋/* 注釋

26、內容 */-注釋內容-SELECT * DELETEFROM EMPWHERE DEPTNO = 20;提示:刪除數(shù)據前最好先查詢一下??梢韵葘慡ELECT *,然后把SELECT *注釋掉,添加DELETE。假設再想不出來就去上廁所-毀人不倦語錄.常用函數(shù)數(shù)字函數(shù)ABS 取絕對值 POWER 乘方 LN 10為底數(shù)取冪SQRT 平方根 EXP e的n次乘方 LOG(m,n) m為底數(shù)n取冪數(shù)學運算函數(shù):ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH CEIL 大于或等于取整數(shù) FLOOR 小于或等于取整數(shù)MOD 取余數(shù) ROUND(n,m) 按

27、m的位數(shù)取四舍五入值假設round(日期): 中午12以后將是明天的日期. round(sysdate,Y)是年的第一天TRUNC(n,m) 按m的位數(shù)取前面的數(shù)值假設trunc(日期), 確省的是去掉時間沖鋒號響起后執(zhí)行的是命令而不是方案-毀人不倦語錄.常用函數(shù)字符函數(shù)CHR 按數(shù)據庫的字符集由數(shù)字前往字符 CONCAT(c1,c2) 把兩個字符c1,c2組合成一個字符, 和 | 一樣REPLACE(c,s,r) 把字符c里出現(xiàn)s的字符交換成r, 前往新字符 SUBSTR(c,m,n) m大于0,字符c從前面m處開場取n位字符,m等于0和1一樣, m小與0,字符c從后面m處開場取n位字符TR

28、ANSLATE(c,f1,t1) 字符c按f1到t1的規(guī)那么轉換成新的字符串INITCAP 字符首字母大寫,其它字符小寫LOWER 字符全部小寫UPPER 字符全部大寫LTRIM(c1,c2) 去掉字符c1左邊出現(xiàn)的字符c2RTRIM(c1,c2) 去掉字符c1右邊出現(xiàn)的字符c2TRIM(c1,c2) 去掉字符c1左右兩邊的字符c2LPAD(c1,n,c2) 字符c1按指定的位數(shù)n顯示,缺乏的位數(shù)用c2字符串交換左邊的空位RPAD(c1,n,c2) 字符c1按指定的位數(shù)n顯示,缺乏的位數(shù)用c2字符串交換右邊的空位提示:去掉字符串中間的空格可以運用replace假設有三條路供他選擇,不要選中間的,剩下兩條可以扔硬幣決議-毀人不倦語錄.常用函數(shù)日期函數(shù)ADD_MONTHS(d,n) 日期值加n月LAST_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論