【文章內(nèi)容簡(jiǎn)介】
OB列最大長(zhǎng)度:2GB最大長(zhǎng)度:4GB不支持對(duì)象類型支持對(duì)象類型存放在表段中小于4000:存放在表段中大于4000:存放到LOB段SELECT:直接返回?cái)?shù)據(jù)SELECT:返回定位符列數(shù)據(jù)順序訪問(wèn)列數(shù)據(jù)可以隨機(jī)訪問(wèn)252。 偽列ROWID和ROWNUM216。 ROWID用于惟一地標(biāo)識(shí)表行,它間接給出了表行的物理位置,并且ROWID是定位表行最快的方式。如果某表包含了完全相同的行數(shù)據(jù),為了刪除重復(fù)行,那么可以考慮使用ROWID作為條件。當(dāng)使用INSERT語(yǔ)句插入數(shù)據(jù)時(shí),Oracle會(huì)自動(dòng)生成ROWID,并將其值與表數(shù)據(jù)一起存放到表行。ROWID與表列一樣可以直接查詢,如SELECT dname,rowid FROM dept。216。 ROWNUM用于返回標(biāo)識(shí)行數(shù)據(jù)順序的數(shù)字值。當(dāng)執(zhí)行SELECT語(yǔ)句返回?cái)?shù)據(jù)時(shí),第1行的ROWNUM為1,第2行的ROWNUM為2,以此類推 建表語(yǔ)法:CREATE TABLE [schema.]table_name( Column_name datatype [DEFAULT expr] [,…] )。其中:schema用于指定方案名(與用戶名完全相同),table_name用于指定表名,column_name用于指定列名,datatype用于指定列的數(shù)據(jù)類型,DEFAULT子句用于指定列的默認(rèn)值。(每張表最多可定義1000列)[注釋:查詢表結(jié)構(gòu):DESC]252。 在當(dāng)前方案中建表CREATE TABLE dept01( dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20))。252。 在其他方案中建表CREATE TABLE ( dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20));252。 在建表時(shí)為列指定默認(rèn)值CREATE TABLE ( dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20) DEFAULT ‘呼和浩特’);252。 使用子查詢建表CREATE TABLE emp04(name,salary,job,dno) ASSELECT ename,sal,job,deptno FROM emp WHERE deptno=30。252。 建立臨時(shí)表臨時(shí)表用于存放會(huì)話或事務(wù)的私有數(shù)據(jù)。臨時(shí)表包括事務(wù)臨時(shí)表和會(huì)話臨時(shí)表兩種類型,其中事務(wù)臨時(shí)表是指數(shù)據(jù)只在當(dāng)時(shí)事務(wù)內(nèi)有效的臨時(shí)表,會(huì)話臨時(shí)表是指數(shù)據(jù)只在當(dāng)前會(huì)話內(nèi)有效的臨時(shí)表。當(dāng)建立臨時(shí)表時(shí),需要使用CREATE GLOBAL TEMPORARY TABLE命令。通過(guò)使用ON COMMIT DELETE ROWS選項(xiàng)可以指定事務(wù)臨時(shí)表,通過(guò)使用ON COMMIT PRESERVE ROWS選項(xiàng)可以指定會(huì)話臨時(shí)表,例:CREATE GLOBAL TEMPORARY TABLE temp1(cola INT)ON COMMIT DELETE ROWS說(shuō)明:當(dāng)執(zhí)行了以上語(yǔ)句之后,會(huì)建立事務(wù)臨時(shí)表TEMP1。因?yàn)槭聞?wù)臨時(shí)表的數(shù)據(jù)只在當(dāng)前事務(wù)內(nèi)有效,所以在事務(wù)結(jié)束之后會(huì)自動(dòng)清除其數(shù)據(jù)。 修改表如果表結(jié)構(gòu)不符合實(shí)際情況,建表之后,可用ALTER TABLE改變表結(jié)構(gòu)。l 增加列語(yǔ)法:ALTER TABLE table_name ADD(column datatype [DEFAULT expr][,column datatype…]}。 如ALTER TABLE emp01 ADD eno NUMBER(4)。l 修改列定義語(yǔ)法:ALTER TABLE table_name MODIFY(column datatype [DEFAULT expr][,column datatype…]}。 如ALTER TABLE emp01 MODIFY job VARCHAR2(15)。l 刪除列語(yǔ)法:ALTER TABLE table_name DROP(column)。如:ALTER TABLE emp01 DROP COLUMN dno。l 修改列名語(yǔ)法:ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name。如:ALTER TABLE emp01 RENAME COLUMN eno TO empno。l 修改表名語(yǔ)法:RENAME object_name TO new_object_name。如:RENAME emp01 TO employee。l 增加注釋語(yǔ)法:COMMENT ON TABLE table_name IS ‘text’。 COMMENT ON COLUMN IS ‘text’。如:COMMENT ON TABLE employee IS ‘存放雇員信息’。 COMMENT ON COLUMN IS ‘描述雇員姓名’。 截?cái)嗪蛣h除表l 截?cái)啾懋?dāng)表結(jié)構(gòu)必須保留,而表數(shù)據(jù)不再需要時(shí),可以使用TRUNCATE TABLE命令截?cái)啾?。?zhí)行此命令時(shí),會(huì)刪除表的所有數(shù)據(jù),并釋放表所占用的空間,但會(huì)保留表的結(jié)構(gòu)。語(yǔ)法:TRUNCATE TABLE table_name。說(shuō)明:當(dāng)刪除表的所有數(shù)據(jù)時(shí),既可以使用DELETE語(yǔ)句,也可以使用TRUNCATE TABLE命令。注意的是,DELETE(DML)操作可以回退,但TRUNCATE TABLE(DDL)操作不能回退。如:TRUNCATE TABLE employee。l 刪除表當(dāng)表不再需要時(shí),可以使用DROP TABLE命令刪除表。用此命令,不僅會(huì)刪除表的所有數(shù)據(jù),而且會(huì)刪除表結(jié)構(gòu)。語(yǔ)法:DROP TABLE table_name [CASCADE CONSTRAINTS] [PURGE]。CASCADE CONSTRAINTS用于指定級(jí)聯(lián)刪除從表的外鍵約束,PURGE用于指定徹底刪除表(這個(gè)選項(xiàng)是10g的新特征)如:DROP TABLE employee。l 恢復(fù)被刪除表當(dāng)執(zhí)行DROP TABLE語(yǔ)句刪除表時(shí),Oracle會(huì)將被刪除表存放到數(shù)據(jù)庫(kù)回收站。從Oracle Database 10g開(kāi)始,使用FLASHBACK TABLE命令可以恢復(fù)被刪除表。語(yǔ)法:FLASHBACK TABLE table_name TO BEFORE DROP。 顯示表信息l USER_TABLES當(dāng)建立表時(shí),Oracle會(huì)將表信息存放到數(shù)據(jù)字典。通過(guò)查詢數(shù)據(jù)字典視圖USER_TABLES,可以顯示當(dāng)前用戶的所有表信息。如:conn scott/tiger SELECT table_name FROM user_tables。l USER_OBJECTS當(dāng)建立數(shù)據(jù)庫(kù)對(duì)象(表、視圖、索引等)時(shí),Oracle會(huì)將對(duì)象信息存放到數(shù)據(jù)字典中。通過(guò)查詢數(shù)據(jù)字典視圖USER_OBJECTS,可顯示所有數(shù)據(jù)庫(kù)對(duì)象。如:SELECT object_name FROM user_objects WHERE object_type=’TABLE’。l USER_TAB_COMMENTS當(dāng)執(zhí)行COMMENT命令為表、視圖增加注釋信息時(shí),Oracle會(huì)將注釋存放到數(shù)據(jù)字典中。通過(guò)查詢數(shù)據(jù)字典視圖USER_TAB_COMMENTS,可以顯示當(dāng)前用戶所有表的注釋。如:SELECT ments FROM user_tab_ments WHERE table_name=’EMPLOYEE’。l USER_COL_COMMENTS當(dāng)執(zhí)行COMMENT命令為列增加注釋信息時(shí),Oracle會(huì)將注釋存放到數(shù)據(jù)字典中。通過(guò)查詢數(shù)據(jù)字典視圖USER_COL_COMMENTS,可以顯示當(dāng)前用戶所有表的列注釋。如:SELECT ments FROM user_col_ments WHERE table_name=’EMPLOYEE’ AND column_name=’NAME’。[注釋:表名及列名均大寫(xiě),因?yàn)镺racle中是以大寫(xiě)字母存儲(chǔ)對(duì)象名及列名第4章 Oracle操作符Oracle中有很多的操作符,每種操作符都有自己的含義,在使用時(shí)需要很好的理解其中的內(nèi)涵。這些操作符與平時(shí)大家見(jiàn)到的一些操作符幾乎是一樣的,含義也差不多。需要注意一點(diǎn)的是,oracle中的賦值語(yǔ)句用:=的方式,而不是=。第5章 基本查詢l 簡(jiǎn)單查詢語(yǔ)句l 限制數(shù)據(jù)l 排序數(shù)據(jù) 簡(jiǎn)單查詢語(yǔ)句查詢所有列:select * from dept。查詢指定列:desc emp(顯示表結(jié)構(gòu)) select empno,ename,sal from emp。查詢?nèi)掌诹校喝掌诹惺侵竏ate類型列,默認(rèn)顯示格式為ddmonyy,不同語(yǔ)言和地區(qū)的日期顯示結(jié)果有所不同。如果想以自己習(xí)慣的日期格式顯示日期值,必須要用to_char函數(shù)進(jìn)行轉(zhuǎn)換。當(dāng)日期語(yǔ)言為SIMPLIFIED CHINESE時(shí),格式:1712月80 Select ename,to_char(hiredate,’YYYYMMDD’ from emp。 上述語(yǔ)句顯示格式:19801217取消重復(fù)行:默認(rèn)會(huì)顯示所有行,但完全相同的查詢結(jié)果沒(méi)有實(shí)際意義,因此有時(shí)需要取消重復(fù)結(jié)果 Select distinct deptno,job from emp。(顯示三列都不相同的記錄集) Select distinct deptno。(只顯示deptno不同的記錄集)使用算術(shù)表達(dá)式:當(dāng)招行查詢操作時(shí),可在數(shù)字列上用算術(shù)表達(dá)式(+,,*,/) Select ename,sal,sal*12 from emp。使用列別名:默認(rèn)情況下,列標(biāo)題是大寫(xiě)格式的列名或表達(dá)式,如果使用列別名,列別名可跟在列名后,并且在二者之間可以加AS關(guān)鍵字,若列別名區(qū)分大小寫(xiě)、包含特殊字符或空格,必須用雙引號(hào)引住 Select ename as name,sal*12 “Annual Salary” from emp。處理NULL:NULL表示未知值,既不是空格也不是0。若沒(méi)為列提供數(shù)據(jù)且該列無(wú)默認(rèn)值,則其數(shù)據(jù)為NULL。當(dāng)算術(shù)表達(dá)式包含NULL時(shí),其結(jié)果也是NULL。 Select ename,sal,m,sal+m from emp。 Select ename,sal,m,sal+nvl(m,0) from emp。 Nvl(m,0)說(shuō)明:如果m存在數(shù)值,則函數(shù)返回其原有數(shù)值;如果m列為NULL,則函數(shù)返回0。 連接字符串:連接字符串是使用||操作符完成的。如果在字符串中要加入數(shù)字值,那么在||后可以直接指定數(shù)字;如果在字符串中加入字符和日期值,則必須用單引號(hào)引住。 Select ename||’的崗位是’||job “Employee” from emp。 或Select ename||’的崗位是’||job AS Employee from emp。[注釋:dual是一個(gè)虛擬表,用來(lái)查那些不屬于實(shí)際表里的內(nèi)容,如:select sysdate from dual。 select 3+3 from dual。]1. 限制數(shù)據(jù)(條件查詢)條件查詢中條件表達(dá)式中需要使用各種比較操作符,如(=,(!=),=,=,,BETWEEN…AND…,IN(list),LIKE,IS NULL)使用數(shù)字值:select ename,sal from emp where sal2000。使用字符值:select ename,sal from emp where job=’MANAGER’。//字符值必須用單引號(hào)引住 需要注意:字符值區(qū)分大小寫(xiě)使用日期值:在where條件中使用日期值時(shí),必須用單引號(hào)引住,并且日期必須符合默認(rèn)日期顯示格式和日期語(yǔ)言。如果不符合默認(rèn)日期顯示格式,必須使用to_date函數(shù)進(jìn)行轉(zhuǎn)換。 Select ename,sal,hiredate from emp where hiredate’011月82’。使用BETWEEN…AND操作符:select ename,sal,job from emp where sal between 2000 and 4000使用LIKE操作符:執(zhí)行模糊查詢。%:通配0或多個(gè)字符 _:通配單個(gè)字符 Select ename,sal from emp where ename like ‘S%’//顯示首字符為S的所有雇員名及其工資 Select ename,sal from emp where ename like ‘__o%’; 當(dāng)希望使用這兩個(gè)字符(%,_)招行模糊查詢時(shí),必須使用ESCAPE選項(xiàng)和轉(zhuǎn)義符實(shí)現(xiàn)。當(dāng)使用ESCAPE選項(xiàng)時(shí),需要在%或_前加轉(zhuǎn)義符,并且在ESCAPE選項(xiàng)中指定轉(zhuǎn)義符的名稱。例: Select ename,sal from emp where ename like ‘%a_%’ ESCAPE ‘a(chǎn)’。使用IN操作符:select ename,sal,job from emp where job in(‘CLERK’,’MANAGER’)使用IS NULL操作符:select ename from emp where mgr IS (NOT) NU