




已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ORACLE數(shù)據(jù)庫教程,你可以不知道,但是絕對不能不懂,-毀人不倦語錄,2007年5月,SQL基礎(chǔ)知識篇,SQL-001,簡介,SQL(Structured Query Language)結(jié)構(gòu)化查詢語言是IBM公司San Jose實(shí)驗(yàn)室為System R而設(shè)計的查詢語言,后被國際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)作為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)。 SQL目前遵循的是1992年標(biāo)準(zhǔn),即SQL-92。 各數(shù)據(jù)庫廠家對SQL-92標(biāo)準(zhǔn)均有擴(kuò)充,擴(kuò)充部分不能完全保證數(shù)據(jù)庫之間的兼容性。,我的熱情會灼傷一些人,但我是無心的,-毀人不倦語錄,簡介,SQL可以分為: (基礎(chǔ)篇只介紹前兩種) DML:數(shù)據(jù)操作語言(Data Manipulation Language): select, insert, update, delete, (其他:truncate) DDL:數(shù)據(jù)定義語言 (Data Definition Languages): create, drop , alter,(其他:rename) DCL數(shù)據(jù)控制語言:grant、revoke、set role 事務(wù)控制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction) 審計控制:audit、noaudit 系統(tǒng)控制:alter system 會話控制:alter session 其他語句:comment(添加注釋)、explain plan、analyze、validate、call,如果我的話沒有錯,一定是你聽錯了,-毀人不倦語錄,DDL數(shù)據(jù)定義語言,CREATE(建立) ALTER(修改) DROP(刪除),無知者無畏,無畏者不一定無知,-毀人不倦語錄,語言描述約定, :表示可選項 | :表示選擇項 CREATE:粗體表示關(guān)鍵字或必輸項 Table_name:斜體表示用戶輸入項 創(chuàng)建 :藍(lán)色表示說明,如果1+12,我相信那說的是團(tuán)隊的力量,-毀人不倦語錄,DDL數(shù)據(jù)定義語言,CREATE-創(chuàng)建用戶 CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE tablespace_name; 創(chuàng)建user_name用戶,密碼為password,使用tablespace_name表空間,如果沒有指定表空間,默認(rèn)表空間為system表空間。Oracle10g有用戶默認(rèn)表空間設(shè)置。 建議在創(chuàng)建用戶時一定要指名表空間。,先有雞,還是先有蛋,這么重要的問題還是留給雞去考證吧,-毀人不倦語錄,DDL數(shù)據(jù)定義語言,CREATE-創(chuàng)建數(shù)據(jù)表 CREATE TABLE table_name( Column1 datatype defaultnot null primary key, , constraint key_name primary key(column_list) using index tablespace tablespace_name )tablespace tablespace_name; Datatype 是數(shù)據(jù)類型:varchar2(x), number(x,x), date, integer等。 Not null非空限制,如果不寫表示可為空。 Primary key主鍵,可以緊跟在字段后,或在最后使用constraint。 未指名表空間,數(shù)據(jù)表建立在用戶默認(rèn)的表空間中。,筆只留下了痕跡,人用筆留下了文化,-毀人不倦語錄,DDL數(shù)據(jù)定義語言,CREATE-創(chuàng)建索引 CREATE UNIQUE INDEX index_name ON table_name(column_list)tablespace tablespace_name; 在table_name表上按照column_list建立索引,索引名為index_name,索引保存在tablespace_name表空間中。 UNIQUE:唯一性索引。,-毀人不倦語錄,你可以不聽,但是我一定要說,DDL數(shù)據(jù)定義語言,ALTER-修改表 ALTER TABLE table_name RENAME TO new_table_name; 將table_name表名修改為new_table_name。 ALTER TABLE table_name ADD(column1 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 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; 刪除table_name表的pk_name主鍵。一個表只能有一個主鍵,-毀人不倦語錄,不說了,再說就該吐了。補(bǔ)充一點(diǎn):站著進(jìn),扶著出也許是侃爺?shù)淖罡呔辰绨?DDL數(shù)據(jù)定義語言,DROP -刪除 DROP TABLE table_name; 刪除table_name表。 DROP INDEX index_name; 刪除index_name索引。 刪除主鍵(強(qiáng)制限制的一種),使用ALTER TABLE table_name DROP CONSTRAINT pk_name;,-毀人不倦猜想,數(shù)據(jù)庫和水庫之間不可能沒有區(qū)別,DML小結(jié),從ALTER和CREATE及DROP語法數(shù)量再一次證明需求是易變的。 如果增加表字段,并要求字段的排列位置,可以使用: 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的語法,如果大家想要嘗試刪除數(shù)據(jù)庫的話,最好在專家的指導(dǎo)下進(jìn)行!,人間本無對錯,因?yàn)橛嬎銠C(jī)才有了對與錯,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT(查詢) INSERT(插入) UPDATE(更新) DELETE(刪除),如果老天能再給我一次機(jī)會,我一定做甲方,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-查詢 SELECT ALL | DISTINCT ON ( expression , . ) * | expression AS output_name , . INTO TEMPORARY | TEMP TABLE new_table FROM from_item , . WHERE condition GROUP BY 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ù)據(jù)操作語言,SCOTT/TIGER表介紹 DEPT部門定義表,DEPTNO是主鍵 EMP職工表,EMPNO主鍵,DEPTNO外鍵關(guān)聯(lián)DEPT 其他表沒有數(shù)據(jù)或沒有關(guān)系,不在這里介紹,將復(fù)雜問題簡單化是修養(yǎng),將簡單問題復(fù)雜化是藝術(shù),綜合起來叫藝術(shù)修養(yǎng),-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-單表查詢 查詢表中所有字段和所有記錄,select后跟* 表示所有字段 SELECT * FROM DEPT; 查詢指定字段,在select后跟查詢的字段名列表,字段間用,隔開 SELECT DEPTNO, DNAME FROM DEPT; 條件查詢,F(xiàn)ROM后面使用WHERE,在WHERE中可以使用=, , ,=,=,BETWEEN,LIKE,IN,返回WHERE條件為true的數(shù)據(jù) SELECT * FROM DEPT WHERE DEPTNO = 20; -返回部門編碼為20的部門數(shù)據(jù) SELECT * FROM DEPT WHERE DEPTNO BETWEEN 20 AND 30; -返回部門編碼在20到30之間的部門數(shù)據(jù)(包括20和30),同意的從門出去,反對的請走窗戶,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-單表查詢 SELECT * FROM DEPT WHERE DNAME LIKE ACCOUNT%; -返回部門名稱以ACCOUNT開始的部門數(shù)據(jù) SELECT * FROM DEPT WHERE DNAME LIKE %UNT%; -返回部門名稱含UNT的部門數(shù)據(jù),%全匹配符,?單匹配符 SELECT * FROM DEPT WHERE DEPTNO IN (20, 30) AND (DNAME LIKE %UNT% OR DNAME = SALES); -返回部門編碼等于20和30并且部門名稱含UNT或等于SALES的部門數(shù)據(jù),AND與,OR或,IN和(等同OR),知識可以拷貝,思想無法復(fù)制,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-多表查詢 在FROM中列舉表名,WHERE中寫表關(guān)聯(lián) SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO = 20; -字段名前使用表名.指定表字段,在WHERE中先寫表關(guān)聯(lián)關(guān)系,從FROM的內(nèi)側(cè)(即左側(cè))向外側(cè)寫(即右側(cè)),表關(guān)聯(lián)寫完后再寫查詢條件,不要把表管理和查詢條件混在一起寫,這雖然不是必須的,但卻是規(guī)范推薦的。 SELECT E.EMPNO AS 職工編碼, E.ENAME 姓名, E.JOB, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.DEPTNO = 20; -字段和表名可以使用別名,方法為 AS 別名,或直接寫別名,表如果指定別名,原表名在該查詢中不能再被使用。,淹死的都是會游泳的,累死的都是能干的,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-Joins(連接) 語法 T1 NATURAL INNER | LEFT | RIGHT | FULL OUTER JOIN T2 ON search condition | USING ( join column list ) 一個條件 JOIN 必須通過提供一個(并且只能有一個) NATURAL,ON,或者 USING 這樣的關(guān)鍵字來聲明它的 連接條件 ON 子句 接受一個 search condition, 它與一個 WHERE 子句相同USING 子句接受一個用逗號分隔的 字段名列表,連接表中必須都有這些字段, 并且用那些字段連接這些表。 NATURAL 是 USING 子句的縮寫,它列出兩個表中所有公共 的字段名字。 對于所有 JOIN 而言,INNER 和 OUTER 都是可選的INNER 是缺省 LEFT,RIGHT和 FULL 只用于 OUTER JOIN。,DDL數(shù)據(jù)操作語言,SELECTINNER JOIN 內(nèi)連接 對于T1的每行R1,連接成的表在T2里都有一行滿足與R1的連接條件。 SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.DNAME FROM EMP JOIN DEPT USING (DEPTNO); 結(jié)果同: SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO INNER JOIN完全可以寫成WHERE子句,重復(fù)兩遍后你就應(yīng)該把他變?yōu)槌绦?-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECTOUTER JOIN 外連接 LEFT OUTER JOIN 首先執(zhí)行一次INNER JOIN,然后,如果T1里有一行對任何 T2 的行都不滿足連接條件,那么返回一個連接行,該行的T2的字段為null。 左表數(shù)據(jù)全部返回,右表無對應(yīng)數(shù)據(jù)返回NULL。 Oracle也可以寫成:WHERE EMP.DEPTNO = DEPT.DEPTNO (+) RIGHT OUTER JOIN 首先執(zhí)行一次INNER JOIN,然后,如果T2里有一行對任何T1的行都不滿足連接條件,那么返回一個連接行,該行的T1的字段為null。 右表數(shù)據(jù)全部返回,左表無對應(yīng)數(shù)據(jù)返回NULL。 Oracle也可以寫成:WHERE EMP.DEPTNO (+) = DEPT.DEPTNO FULL OUTER JOIN 首先執(zhí)行一次INNER JOIN,然后,如果T1里有一行對任何T2的行都不滿足連接條件,那么返回一個連接行,該行的T1的字段為null。 同樣,如果T2里有一行對任何T1的行都不滿足連接條件,那么返回一個連接行,該行的T2的字段為 null。 兩個表數(shù)據(jù)全部返回,相互之間沒有對應(yīng)數(shù)據(jù)返回NULL。,三分技術(shù),七分管理,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-DISTINCT 取差異數(shù)據(jù),在SELECT查詢列表中只返回有差異的結(jié)果集。 SELECT-統(tǒng)計函數(shù) 統(tǒng)計操作(AVG,COUNT,SUM,MIN,MAX)以表達(dá)式為參數(shù)。 滿足 WHERE 子句的行均被計算, 通常,一個聚集對整個 SELECT 語句 生成一個計算結(jié)果。如果在一個查詢里面聲明了分組, 那么數(shù)據(jù)庫將對每個組進(jìn)行一次獨(dú)立的計算。 SELECT-分組操作 SQL 使用GROUP BY 實(shí)現(xiàn)查詢結(jié)果的分組,GROUP BY 后面跟著字段列表,字段列表值均相同的記錄成為一組。 分組操作伴隨聚集操作使用才有使用價值(注意:是分組伴隨聚集,而不是聚集伴隨分組)。 SELECT-HAVING 在分組操作后可以跟HAVING子句,限定分組統(tǒng)計函數(shù)的查詢結(jié)果。WHERE是分組之前限定查詢結(jié)果,HAVING是對分組后的限定,即:HAVING 伴隨GROUP BY 子句才有意思。,難道我現(xiàn)在是和上帝說話?怎么總是沒有回答!,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-范例 查詢?nèi)藬?shù)和人次,KC61是中心門診報銷表,其中AAC001是個人編碼,一個人只有一個唯一的編碼,可以使用DISTINCT和聚集查詢 SELECT COUNT(*) AS 人次, COUNT(DISTINCT(AAC001) ) AS 人數(shù) FROM KC61; 統(tǒng)計各部門人數(shù)、工資總額和平均工資 SELECT DEPTNO, COUNT(*) AS 人數(shù), SUM(SAL) AS 工資總額, AVG(SAL) AS平均工資 FROM EMP GROUP BY DEPTNO; 如果需要顯示部門名稱,必須關(guān)聯(lián)DEPT表 SELECT D.DEPTNO, D.DNAME, COUNT(*) AS人數(shù), SUM(E.SAL) AS工資總額, AVG(E.SAL) AS 平均工資 FROM SCOTT.DEPT D, SCOTT.EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY D.DEPTNO, D.DNAME; -非聚集字段必須在GROUP BY 中列舉,如果列舉字段太多勢必影響性能,可以使用查詢子句解決此問題,有關(guān)查詢子句見后詳述。,解決問題的問題,而不是問題,這是關(guān)鍵性問題,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-UNION,UNION ALL,MINUS, INTERSECT 返回兩個查詢結(jié)果的集合操作,兩個查詢結(jié)果集必須字段相同。 UNION和UNION ALL并集操作,UNION并集后去掉重復(fù)結(jié)果,UNION ALL直接并集 MINUS差集操作 INTERSECT交集操作 SELECT * FROM SCOTT.DEPT UNION SELECT * FROM SCOTT.DEPT WHERE DEPT.DEPTNO = 20; -返回所有部門,因?yàn)槿サ袅酥貜?fù)的結(jié)果 SELECT * FROM SCOTT.DEPT UNION ALL SELECT * FROM SCOTT.DEPT WHERE DEPT.DEPTNO = 20; -返回所有部門,部門編碼為20的有兩條。,工作境界:吃苦耐勞,苦中作樂,樂在其中,無苦無樂,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-ORDER BY ORDER BY排序,跟數(shù)字(代表字段位置)或字段名,ASC升序,DESC降序,默認(rèn)升序。 SELECT DEPTNO, DNAME FROM SCOTT.DEPT WHERE DEPTNO 10 GROUP BY DEPTNO, DNAME HAVING COUNT(*) 0 ORDER BY DEPTNO DESC; -ORDER BY 是對返回的結(jié)果進(jìn)行排序,所以必須放在最后一句。 SELECT DEPTNO, DNAME FROM SCOTT.DEPT WHERE DEPTNO 10 GROUP BY DEPTNO, DNAME HAVING COUNT(*) 0 ORDER BY 1 DESC; -結(jié)果同第一個查詢,字段位置從1開始。,我是來做項目的,不是來創(chuàng)造奇跡的,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-FOR UPDATE 鎖等待查詢。當(dāng)查詢結(jié)果中有被鎖定記錄時等待解鎖,當(dāng)記錄被解鎖后返回結(jié)果集,并鎖定返回的記錄。如果FOR UPDATE后跟NOWAIT,遇到鎖后不等待,返回錯誤。 ORACLE使用記錄級鎖定,當(dāng)事物被提交或回滾后鎖定被釋放。 死鎖問題 當(dāng)兩個事物以不同的順序同時更新多個表時就會發(fā)生死鎖(對牛),解決死鎖的途徑是手工殺掉死鎖的進(jìn)程或者重新啟動數(shù)據(jù)庫。因此,在使用事物更新多表數(shù)據(jù)時一定要小心,使用面向?qū)ο蟮姆椒ǚ庋b數(shù)據(jù)操作可以在很大程度上解決死鎖問題。,沒有經(jīng)過嚴(yán)格測試的軟件開發(fā)進(jìn)度報告不看也罷,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-子查詢 查詢語句可以嵌套,任何產(chǎn)生數(shù)值的地方都可以使用子查詢。 在查詢條件中使用子查詢時,當(dāng)子查詢返回多個結(jié)果時只能使用IN。 查詢順序是先執(zhí)行被依賴的底層查詢,然后一層層向上查。 子查詢只被執(zhí)行一次。 查詢平均工資最低的部門情況 SELECT DEPTNO, AVG(SAL) FROM SCOTT.EMP GROUP BY DEPTNO HAVING AVG(SAL) = (SELECT MIN(AVG(SAL) FROM SCOTT.EMP GROUP BY DEPTNO); -子查詢先查詢出最低的部門平均工資,然后查詢部門最低平均工資等于子查詢工資的部門,就是喜歡編程也不能為了編程而放棄和用戶的功能確認(rèn),如果你把用戶對程序的任意修改提升為對你自身價值的否定,你還不先確認(rèn)嗎?,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-子查詢 在FROM中使用子查詢,子查詢在這里相對與VIEW SELECT D.DEPTNO, D.DNAME, S.AVG_SAL, S.SUM_SAL, S.NUM FROM SCOTT.DEPT D, (SELECT DEPTNO, AVG(SAL) AS AVG_SAL, SUM(SAL) AS SUM_SAL, COUNT(*) AS NUM FROM SCOTT.EMP GROUP BY DEPTNO) S WHERE D.DEPTNO = S.DEPTNO; 在WHERE中使用子查詢,例子不好,應(yīng)該直接寫表關(guān)聯(lián),這里只是為了說明語法。 SELECT * FROM SCOTT.EMP WHERE DEPTNO IN (SELECT DEPTNO FROM SCOTT.DEPT WHERE DEPTNO = 20);,驢怎么了?人家采用的可是軟件工程中的螺旋法則,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,SELECT-子查詢 使用EXISTS(NOT EXISTS)替換IN(NOT IN) IN(NOT IN)在執(zhí)行數(shù)據(jù)庫操作時性能非常低下,應(yīng)該使用EXISTS(NOT EXISTS)替換,特別是NOT IN子句將執(zhí)行一個內(nèi)部的排序和合并; EXISTS子查詢使用主表的字段限制查詢數(shù)據(jù) SELECT * FROM SCOTT.EMP E WHERE EXISTS (SELECT * FROM SCOTT.DEPT WHERE DEPT.DEPTNO = E.DEPTNO AND DEPTNO = 20); -因?yàn)镋XISTS可以看到外表,所以,如果表名重復(fù),使用表別名區(qū)分,在子查詢中一定寫清楚和外表的關(guān)聯(lián)關(guān)系,另外,子查詢寫SELECT * 是對的,不用寫字段名。,多做一點(diǎn),早知道一點(diǎn),-毀人不倦語錄,DDL數(shù)據(jù)操作語言,UPDATE修改 用來更新數(shù)據(jù)表中的數(shù)據(jù) UPDATE table_name SET column_name = new_value, WHERE condition; 更新DEPT表,將20號部門名稱修改為銷售部,地址修改為北京 UPDATE DEPT SET DNAME = 銷售部, LOC = 北京 WHERE DEPTNO = 20; 子查詢也可在UPDATE中使用,將職工領(lǐng)導(dǎo)是KING的人員薪資增加100元 UPDATE SCOTT.EMP SET SAL = SAL + 100 WHERE 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 + 100 WHERE EXISTS (SELECT * FROM SCOTT.EMP E, SCOTT.EMP G WHERE E.MGR = G.EMPNO AND E.EMPNO = EMP.EMPNO AND G.ENAME = KING);,金保工程是“陽光工程”,所以我才陽光,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,INSERT-插入 語法: INSERT INTO table_name (column,.) VALUES (expression ,) | SELECT query 當(dāng)表字段和插入值相同時,可以省略字段列表 INSERT INTO SCOTT.BONUS VALUES(TURNER, SALESMAN, 200, 40); 當(dāng)只插入部分字段時,必須列舉字段,未賦值字段使用默認(rèn)值或?yàn)榭?INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) VALUES(CLARK, MANAGER, 100); 也可以使用查詢給表插入數(shù)據(jù) INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) SELECT ENAME, JOB, SAL FROM SCOTT.EMP WHERE MGR = 7698;,理論上都是問題,做起來沒有問題,-毀人不倦語錄,DDL數(shù)據(jù)操作語言,DELETE-刪除 語法: DELETE FROM table_name WHERE condition; 刪除BONUS中ENAME為CLARK的記錄 DELETE FROM SCOTT.BONUS WHERE ENAME = CLARK 刪除重復(fù)記錄,ROWID是記錄的物理位置,一經(jīng)確定永不改變 DELETE FROM SCOTT.BONUS B WHERE ROWID 1); -刪除ENAME重復(fù)記錄,自己先擦塊玻璃再交代給別人擦,安排工作同理,-毀人不倦語錄,序列號,創(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+27 NOMINVALUE 缺省值1 NOCYCLE 不循環(huán), 常用于唯一關(guān)鍵字 CACHE n 在內(nèi)存里緩存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下一個序列號值 CURRVAL當(dāng)前序列號值 如果EMP_EMPNO是一個序列號,可以用下面SQL取序列值 -去序列的當(dāng)前值 SELECT EMP_EMPNO.CURRVAL FROM DUAL; -去序列的下一個值 SELECT EMP_EMPNO.NEXTVAL FROM DUAL; -使用序列插入數(shù)據(jù) INSERT INTO EMP(EMPNO, ENAME,) VALUES(EMP_EMPNO.NEXTVAL, JONE,); 不能用序列號的nextval和currval的地方 視圖查詢、distinct查詢、有g(shù)roup by,having,order by的查詢、 有子查詢的查詢、表里的缺省值,注釋,/* 注釋內(nèi)容 */ -注釋內(nèi)容 -SELECT * DELETE FROM EMP WHERE DEPTNO = 20; 提示:刪除數(shù)據(jù)前最好先查詢一下??梢韵葘慡ELECT *,然后把SELECT *注釋掉,增加DELETE。,如果再想不出來就去上廁所,-毀人不倦語錄,常用函數(shù),數(shù)字函數(shù) ABS 取絕對值 POWER 乘方 LN 10為底數(shù)取冪 SQRT 平方根 EXP e的n次乘方 LOG(m,n) m為底數(shù)n取冪 數(shù)學(xué)運(yùn)算函數(shù):ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH CEIL 大于或等于取整數(shù) FLOOR 小于或等于取整數(shù) MOD 取余數(shù) ROUND(n,m) 按m的位數(shù)取四舍五入值如果round(日期): 中午12以后將是明天的日期. round(sysdate,Y)是年的第一天 TRUNC(n,m) 按m的位數(shù)取前面的數(shù)值如果trunc(日期), 確省的是去掉時間,沖鋒號響起后執(zhí)行的是命令而不是計劃,-毀人不倦語錄,常用函數(shù),字符函數(shù) CHR 按數(shù)據(jù)庫的字符集由數(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鮮奶收購合同范本
- 出售電纜合同范本
- 協(xié)調(diào)糾紛后合同范本
- 參賽企業(yè)合作合同范例
- 鹵料加盟合同范例
- 出租房合同范本
- 加盟店鋪轉(zhuǎn)讓合同范本
- Rh基催化劑在CO2加氫制乙醇反應(yīng)中的性能及機(jī)理研究
- 臺地茶機(jī)器采購合同范本
- 企業(yè)購買牛肉合同范本
- 《增廣賢文》全文及解釋(珍藏版)
- 中小學(xué)美術(shù)教學(xué)論
- 屋頂分布式光伏發(fā)電EPC項目 投標(biāo)方案(技術(shù)方案)
- 新編建筑裝飾設(shè)計收費(fèi)標(biāo)準(zhǔn)
- 托班藝術(shù)活動《小小茶樹》教案
- 中國急性缺血性卒中診治指南(2023)解讀
- 2024年萊蕪職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 《計算機(jī)網(wǎng)絡(luò)(第8版)》 課件 第5、6章 運(yùn)輸層、應(yīng)用層
- 2023年6月福建省高中學(xué)業(yè)水平合格考英語試卷真題(含答案詳解)
- 紙的世界-2、紙的用途
- 《肌電圖的臨床應(yīng)用》課件
評論
0/150
提交評論