Orale數(shù)據(jù)庫必備知識_第1頁
Orale數(shù)據(jù)庫必備知識_第2頁
Orale數(shù)據(jù)庫必備知識_第3頁
免費預覽已結束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

1、Oracle 教程記錄:1 OracleOraDb10/11g_home1TNSListener:表示監(jiān)聽服務,如果客戶端想連接數(shù)據(jù)庫,次服務必須 打開,在日后開發(fā)中次服務起作用。2 OracleServeiceMLDN,表示數(shù)據(jù)庫主服務,命名規(guī)則:OracleService數(shù)據(jù)庫名稱。次服務必須啟動。負責 Oracle 根本無法使用。3 直接通過命令行方式進入SQLPlus的控制中心,進行命令的輸入。4 也可以通過窗口的形式啟動命令行工具,及sqlplusw工具。5 查詢、修改、插入、刪除等語句必須以分號結束語句及“;”。6進入環(huán)境以后首先進行環(huán)境設置:<1>設置每行顯示的長度:

2、set linesize 長度值;<2> 設置每頁顯示記錄的長度 :set pagesize 行數(shù)值;7 在sqlplusw中因為沒法修改輸入內(nèi)容,所以一般會使用本機的記事本程序進行編輯,直接在命令窗口輸 入“ ed 文件名即可” ,輸入完成之后,會提示用戶是否要創(chuàng)建文件,編輯完成以后可以通 過文件名的方式執(zhí)行命令,除了可以直接簡歷文件以外也可以通過找到磁盤上的文件如“ d:demo txt”效果是一樣的,如果后綴名是“ * sql” ,在查找是可以不注入后綴,系統(tǒng)默認的是“ sql” 文件。8 在sqlplusw/sqlplus中可以使用其他用戶連接 sys是超級管理員 syst

3、em是普通管理員 scott 是普通用戶 連接格式:conn 用戶名 /密碼 as sysdba|sysoper如果現(xiàn)在連接的是超級管理員 (sys)在連接的最后必須寫上 AS SYSDBA。以系統(tǒng)管理員的身份進行登陸。例如:conn sys/xuli564335 as sysdba;注意:用戶名表名如果連接用戶下查詢某一個用戶下表而其連接用戶沒用此表則必須加上該表所在的用戶名,格式:9顯示當前連接的用戶是那個:show user;10 查看標的完整結構:desc 表名稱 ;11 SQL 可以分為以下幾組:DML: 數(shù)據(jù)操作語言用戶檢索或者修改數(shù)據(jù)。DDL: 數(shù)據(jù)定義語言用于定義數(shù)據(jù)結構,如如

4、創(chuàng)建、修改或者刪除數(shù)據(jù)哭對象。DCL: 數(shù)據(jù)控制語言用于定義數(shù)據(jù)庫用戶權限。11 查詢的時候也可以為其返回列指定名稱及別名: 格式: select 字段名 別名 from 表名稱 ;12 去除查詢結果中的重復列用DISTINCT 可以直接消除:格式: select DISTINCT*| 具體列名 別名 from 表名稱 ;''“括起13 修改查詢結果的信息顯示格式添加新信息可以用|連接,所有其他的固定信息要使用”來:格式:select固定信息|列名稱固定信息|列名稱 from表名稱;14 在進四則運算時要給返回列期別名必須回避中文:格式: select 具體列名稱 +/-/*/

5、 數(shù)值 別名 (用英文表示 ) from 表名稱15 WHERE限制后面的一些語法匯總:<1>判斷為空: IS NULL;<2>判斷不為空: IS NOT NULL<3> 判斷等于: =;<4> 判斷不等于: <>/!=;<5> 判斷大于或者大于等于: >/>=;<6>判斷小于或者小于等于: </<= ;<7> 判斷的兩個或者兩個以上的條件都必須成立: AND 連接;OR 連接 ;<8>判斷的兩個或者兩個以上的條件中有一個條件成立即可: <9> 判斷要

6、求整體條件取反 :NOT( 整體條件 )<10> 查詢指定范圍的過濾語句:字段名稱BETWEEN 最小值 and 最大值 ;此查詢語句包含了等于,查詢的是日期的時候則必須加“ ” ” BETWEEN AND 可以查詢?nèi)掌诤蛿?shù)值。<11>指定查詢范圍可以用IN操作來完成,語法格式:字段 IN/NOT IN(值1,值2,值3,值4)<12>查詢中也可以使用模糊查詢即“ LIKE ” ,在使用 LIKE 是要注意通配符, LIKE 主要使用兩種通配符: “ %關鍵字 %” :可以匹配任意長度的內(nèi)容,如果沒有指定關鍵字怎么表示查詢?nèi)績?nèi)容 “ _關鍵字” :可以匹配

7、一個長度的內(nèi)容<13>使用ORDER BY字段名稱 ASC/DESC,對查詢結果進行排序,ASC:表示升序,DESC :表示降序,當存在兩個排序條件時其語法格式:ORDER BY字段名稱 ASC,字段名稱DESC。16 在Oracle中對大小寫是敏感和區(qū)分的。17 SQL中的單行函數(shù)<1>單行函數(shù)分類:字符函數(shù):接受字符輸入并且返回字符或者數(shù)值數(shù)值函數(shù):接受數(shù)值并返回數(shù)值日期函數(shù):對日期型數(shù)據(jù)進行操作轉換函數(shù):從一種數(shù)據(jù)類型轉換為另一種數(shù)據(jù)類型通用函數(shù): NVL 函數(shù), DECODE 函數(shù)<2>字符函數(shù)變小寫字母為大寫字母用 UPPER() 函數(shù),語法格式:

8、 UPPER(' 字段值'/字段名稱 )例子: SELECT UPPER(' 字段值 '/字段名稱 ) FROM 表名稱;變大寫字母為小寫字母用 LOWER() 函數(shù) ,語法格式: LOWER(' 字段值 '/字段名稱 )例子: SELECT LOWER(' 字段值 '/字段名稱 ) FROM 表名稱;變字段值的第一個字母為大寫使用 INITCAP() 函數(shù),語法格式: INITCAP(' 字段值'/字段名稱 )例子: SELECT INITCAP(' 字段值 '/字段名稱 ) FROM 表名稱;字

9、符串除了可以使用“ |”連接之外,還可以使用 CONCAT() 函數(shù)進行連接 ,語法格式: CONCAT(' 字段值 ','字段 值),此連接方式不如“ |”好用。字符串截取的時候可以使用 SUBSTR()函數(shù)截取,語法格式:SUBSTR('字段值'/字段名稱,截取位置值,截取位數(shù) 值),在Oracle中SUBSTR()函數(shù)的截取點是從 0或者1開始,其效果是一樣的。截取點可以是負值表示倒著取。計算字符串長度是使用length()函數(shù)獲取,語法格式:length('字段值'/字段名稱)字符串替換的時候使用 REPLACE() 函數(shù)替換,語

10、法格式: REPLACE(' 字段值'/字段名稱,需要替換的內(nèi)容 ,賦予的 新內(nèi)容 )。<3>數(shù)值函數(shù)需要四舍五入的時候使用 ROUND() 函數(shù),語法格式: ROUND(' 字段值 '/字段名稱 ),也可以指定保留的小數(shù)位 數(shù),語法格式: ROUND(' 字段值 '/字段名稱 ,保留位數(shù)值 ),其中保留位數(shù)值可以是負數(shù)。截斷小數(shù)位的時候使用 TRUNC() 函數(shù),語法格式: ROUND(' 字段值 '/字段名稱 ),與 ROUND() 函數(shù)不同的是 TRUNC() 函數(shù)不保留任何小數(shù)位也不存在四舍五入,但 TRUNC

11、() 函數(shù),也可以指定保留的小數(shù)位數(shù),語法格式: TRUNC(' 字段值 '/字段名稱 ,保留位數(shù)值 ),其中保留位數(shù)值可以是負數(shù)。取余或者叫取模的時候使用 MOD() 函數(shù),語法格式: MOD(' 字段值 '/字段名稱 ,與字段值 /字段名稱取模的值 )<4>日期函數(shù) 日期加減的規(guī)律: 日期 - 數(shù)字 =日期 日期 + 數(shù)字 =日期 日期-日期=數(shù)字(天數(shù))求出當前日期使用 sysdate例子: SELECT SYSDATE FROM DAUL求出星期數(shù):當前日期 -起始日期 =天數(shù) /7=天數(shù)或者 ROUND( 當前日期 -起始日期 =天數(shù) /7

12、=天數(shù) ) Oracle 提供幾種日期函數(shù)支持:MONTHS_BETWEEN(): 求出給定日期范圍的月數(shù)例子: select MONTHS_BETWEEN(sysdate, 給定日期值 )ROUND(MONTHS_BETWEEN(sysdate, 給定日期 )from 表名稱ADD_MONTHS(): 在指定日期上加上指定的月數(shù)求出之后的日期例子: select ADD_MONTHS(sysdate, 加上指定的月數(shù)值 ) from DAULNEXT_DAY(): 下一個的今天是那個日期例子: select ADD_MONTHS(sysdate,' 星期一 ') from D

13、AULLAST_DAY(): 求出給定日期的最后一天日期例子: select LAST_DAY(sysdate) from DAUL<4>轉換函數(shù)TO_CHAR():轉換成字符串,對年、月、日進行分開的時候指定拆分的通配符,并且此函數(shù)也可以用在數(shù)字上:年:y,年是四位的數(shù)字,所以使用 yyyy表示 月:m,月是二位的數(shù)字,所以使用mm表示日:d, 日是二位數(shù)字,所以使用 dd表示例子 1 : select TO_CHAR(日期字段名稱 ,'yyyy') year(別名),TO_CHAR(日期字段名稱,'mm') months(別 名 ),TO_CHA

14、R( 日期字段名稱 ,'dd') day( 別名 ) from 表名稱例子 2: select TO_CHAR( 日期字段名稱 ,'yyyy-mm-dd') from 表名稱 轉換數(shù)字是可以加入一些符號,中國一般用” ,“,如果希望數(shù)字可以明確的表示出區(qū)域比如金錢可以使用一下 兩種符號,$:表示美元L: 是 LOCAL 的縮寫,以本地語言進行金額顯示語法格式: TO_CHAR( 字段名稱 ,'$/L99,999,999') TO_NUMBER(): 轉換成數(shù)字 ,可以將字符串變?yōu)閿?shù)字的函數(shù),其結果可以進行四則運算例子: SELECT TO_NUM

15、BER('123')+/-/*/TO_NUMBER('123') FROM DUAL TO_DATE:轉換成日期 ,可以將一個字符串變?yōu)橐粋€ DATE 型數(shù)據(jù)例子: SELECT TO_DATE('2009-08-18','yyyy-mm-dd') FROM DUAL<5>通用函數(shù)NVL() 函數(shù):可以將一個指定的 NULL 值變成指定內(nèi)容, 在進行計算的時候對有 NULL 的字段必須使用 NVL() 函數(shù)進行一個轉換操作,負責計算結果認為空值。例子: SELECT NVL( 指定字段名稱,指定內(nèi)容),(指定字段名稱

16、,NVL( 指定字段名稱,指定內(nèi)容 ) *12 別名FROM 表名稱 ; DECODE() 函數(shù):類似于 IF ELSEIF ELSE 語句:例子 1:SELECT DECODE(1,1,' 內(nèi)容是 1',2,'內(nèi)容是 2',3,'內(nèi)容是 3',4,'內(nèi)容是 4') FROM DUAL;查詢結果是:內(nèi)容是 1例子 2: SELECT DECODE( 字段名稱 ,字段值 1,'替換信息 1',字段值 2,'替換信息 2',字段值 3,'替換信息 3',字段值 4,'替換信息 4

17、') FROM 表名稱 ;18 分組函數(shù)及分組統(tǒng)計<1>組函數(shù)分類 COUNT(): 求出全部的記錄數(shù) MAX(): 求出一組中的最大值MIN(): 求出最小值AVG(): 求出平均值SUM: 求和<2>COUNT() 函數(shù)例句: SELECT COUNT(*/ 名稱字段 ) FROM 表名稱 ; 注意:一般最好寫某個字段不要用 * 表示。<3>MAX/MIN() 函數(shù)例句: SELECT MAX/MIN( 名稱字段 ) FROM 表名稱 ;<4>AVG/SUM() 函數(shù)例句: SELECT A VG/SUM( 名稱字段 ) FROM 表

18、名稱 ;<5>分組統(tǒng)計函數(shù) GROUP UP 分組條件及字段名稱:語法格式:SELECT DISTINCT*|查詢列1,查詢列2,查詢列3,查詢列 4 FROM 表1列名1,表2列名2,表3列名3 WHERE 條件 GROUP UP 分組條件及字段名稱 ORDER BY 排序字段名稱1ASC|DESC,排序字段名稱 2 ASC|DESC,注意:使用分組條件,則有兩種使用情況:程序中存在 GROUP BY, 并指定了分組條件,則可以將分組條件一起查詢出來。如果不使用分組的話,則只能單獨使用分組條件。例子: SELECT 查詢列名稱 ,COUNT( 查詢列名稱 ) FROM 表名稱;此

19、查詢語句查不出結果。例子: SELECT COUNT( 查詢列名稱 ) FROM 表名稱;可以查詢出結果。使用分組條件和分組函數(shù)的時候不能出現(xiàn)分組條件或者分組函數(shù)以外的字段。例子:SELECT 查詢字段名1,查詢字段名 2,COUNT(查詢字段名2) FROM 表名稱GROUP BY 查詢字段名1 此查詢語句是錯誤的,因為查詢字段名 2 不是 GROUP UP 的表達式,所以分組不執(zhí)行。分組函數(shù)只能在分組中使用,不能在 WHERE 語句中出現(xiàn),如果現(xiàn)在要指定分組條件,則只能通過第二種條 件的指令 :HAVING ,此時語法格式:SELECT DISTINCT*|查詢列1,查詢列2,查詢列 3,

20、查詢列4 FROM 表1列名1,表2列名2,表3列名3 WHERE 條件 GROUP UP分組條件及字段名稱 HAVING 分組條件 ORDER BY排序字段名稱 1ASC|DESC, 排序字段名稱 2 ASC|DESC,例子1: SELECT查詢字段名 1,AVG(查詢字段名 2) FROM表名稱WHERE AVG(查詢字段名 2)>某個數(shù)值 GROUP BY 查詢字段名 1;此查詢語句是錯誤,不能執(zhí)行查詢結果。例子1: SELECT 查詢字段名1,AVG(查詢字段名 2) FROM 表名稱 GROUP BY 查詢字段名1 HAVINGA VG(查詢字段名 2)>某個數(shù)值 ;此查

21、詢語句是可以執(zhí)行查詢并檢索出結果 。19 子查詢<1>子查詢:就是必須在“ () ”里編寫代碼。例子: SELECT * FROM 表名稱 WHERE 列名稱 >(select 列名稱 FROM 表名稱 WHERE 列名稱 1= 某個數(shù)值 ) 子查詢分為以下三類:單列子查詢:返回結果是一列的一個內(nèi)容,出現(xiàn)記錄最高 單行子查詢:返回多個列,可能是一條完整的記錄多行子查詢:返回多條記錄<2>在子查詢中有以下三種操作符:IN: 指定一個查詢的范圍例子: SELECT * FROM 表名稱 WHERE 列名稱 IN (select MIN( 列名稱 ) FROM 表名稱

22、GROUP BY 列 名稱 1)ANY=ANY: 與 IN 操作符的功能完全一樣。例子:SELECT * FROM表名稱 WHERE列名稱 =ANY(select MIN( 列名稱 ) FROM表名稱 GROUP BY列名稱1)>ANY:比里面最小的值要大例子:SELECT * FROM表名稱WHERE列名稱>ANY(select MIN( 列名稱 ) FROM表名稱GROUPBY列名稱1)<ANY:比里面最大的值要小例子:SELECT * FROM表名稱WHERE列名稱<ANY(select MIN( 列名稱 ) FROM表名稱GROUP BY列名稱 1)ALL>

23、;ALL: 比最大的值要大例子:SELECT * FROM表名稱 WHERE列名稱<ALL(select MIN(列名稱 ) FROM表名稱GROUP BY列名稱1)<ALL:比最小的值要小例子:SELECT * FROM表名稱 WHERE列名稱>ALL(select MIN(列名稱 ) FROM表名稱GROUP BY列名稱 1)20 左右連接<1>(+)=: 左邊表示右連接<2>=(+): 右邊表示左連接21 交叉連接 (CROSS JOIN): 產(chǎn)生笛卡爾積例子: SELECT * FROM 表名稱 1 CROSS JOIN 表名稱 2;22 自然

24、連接 (NATURAL JOIN): 自動進行關聯(lián)字段的匹配 例子: SELECT * FROM 表名稱 1 NATURAL JOIN 表名稱 2;23 USING字句:直接關聯(lián)的操作列例子: SELECT * FROM 表名稱 1 別名 1 JOIN 表名稱 2 別名 2 USING( 兩表共同的字段名 ) WHERE 兩表共 同的字段名 = 某個數(shù)值 ;24 ON字句:用戶自己編寫的連接條件例子:SELECT * FROM 表名稱1別名1 JOIN表名稱2別名2 ON(表名稱1 兩表共同的字段名=表名稱2 兩表共同的字段名)WHERE表名稱1 兩表共同的字段名=某個數(shù)值;25 左連接(做外

25、連接):RIGHT JION;右連接(右外連接)LEFT JION例子:SELECT * FROM 表名稱1別名1 RIGHT OUTER JOIN表名稱2別名2 ON(表名稱1 兩表共同的字段名=表名稱2 兩表共同的字段名);26 清空過多的記錄:格式語法: CLEAR SCR;27 commit:提交事務及 session語法格式: COMMIT;28 rollback :執(zhí)行事務回滾操作,在沒有執(zhí)行提交事務命令之前使用可以反之不能執(zhí)行回滾。 語法格式: ROLLBACK;29 常用的數(shù)據(jù)類型<1>VACHAR,V ARCHAR2: 表示一個字符串,有效長度為 255。<

26、2>NUMBER: NUMBER(m):表示的是一個整數(shù),數(shù)字長度為n,可以使用INT。 NUMBER(m,n):表示一個小數(shù),小數(shù)的長度為 n,整數(shù)的長度為 m-n,可以使用FLOAT。<3>DATE: 表示日期函數(shù),日期函數(shù)以標準日期格式存放。<4>CLOB: 大對象,表示大文本數(shù)據(jù),可以存放 4個 G 的文本。<5>BLOB: 大對象,表示二進制數(shù)據(jù),最大可以存放 4個 G ,一般存放視頻、圖片歌曲等。29 創(chuàng)建數(shù)據(jù)表語法格式:CREATE TABLE 表名稱 (字段名稱1字段類型DEFAULT默認值 ,字段名稱2字段類型DEFAULT默認值 ,

27、字段名稱n字段類型DEFAULT默認值 30 復制表語法CREATE TABLE 表名稱 AS ( 子查詢 );例子: CREATE TABLE 表名稱 AS (SELECT * FROM 表名稱 1);上例子表示完全復制表的結構和表的內(nèi)容例子: CREATE TABLE 表名稱 AS (SELECT * FROM 表名稱 1 WHERE 字段名稱 =某個值 );上例子表示復制標的結構和部分內(nèi)容例子: CREATE TABLE 表名稱 AS (SELECT * FROM 1=2);上例子中的條件里加入了一個不可能成立的條件,怎么表示只復制表的結構,不復制表的內(nèi)容。31 刪除表里的數(shù)據(jù)用 DEL

28、ETE,刪除表用DROP。32 為表增加列用 ALTER語法格式:ALTER TABLE 表名稱ADD(列的名稱列的類型列的默認值 DEFAULT);33 修改表結構的語法語法格式: ALTER TABLE 表名稱 MODIFY( 列的名稱 列的類型列的默認值 DEFAULT) ; 一般最好不要使用修改命令。34 為表重命名的語法語法格式: RENAME 舊表名稱 TO 新表名稱;35 截斷表:表示清空表的記錄,不需要執(zhí)行回滾操作用TRUNCATE命令。語法格式: TRUNCATE 表名稱;36 約束的分類 <1>主鍵約束:主鍵表示一個唯一的表示,其本身不能為空。例子:語法格式:C

29、REATE TABLE 表名稱 (字段名稱字段名稱12字段類型字段類型PRIMARY KEY ,DEFAULT默認值 ,字段名稱)或者n字段類型DEFAULT默認值 CREATE TABLE 表名稱 (字段名稱1字段類型,字段名稱2字段類型DEFAULT默認值 ,字段名稱n字段類型DEFAULT默認值 ,CONSTRAINT 表名稱 _字段名稱 1_PK PRIMARY KEY( 字段名稱 1 ) )PK 表示主鍵約束。可以使用唯一<2>唯一約束: 在一個表中只允許建立一個主鍵約束, 而其他列不希望出現(xiàn)空值的話, 約束。語法格式:CREATE TABLE 表名稱 (字段名稱 1 字

30、段類型 ,字段名稱 2 字段類型 UNIOUE NOT NULL,字段名稱 n 字段類型 DEFAULT 默認值 ,CONSTRAINT 表名稱 _字段名稱 1_PK PRIMARY KEY( 字段名稱 1 ), CONSTRAINT 表名稱 _字段名稱 1_UK UNIOUE( 字段名稱 2 ) )<3>檢查約束:檢查某一列是否合法。語法格式:CREATE TABLE 表名稱 ( 字段名稱 1 字段類型 ,字段名稱 2 字段類型 UNIOUE NOT NULL,AGE NUMBER(20) NOT NULL CHECK(AGE BETWEEN 0 AND 150),SEX NUM

31、BER(20) NOT NULL CHECK(SEX IN (' 男','女','中性 '),字段名稱CONSTRAINT字段類型表名稱CONSTRAINTDEFAULT 默認值 ,字段名稱 1_PK PRIMARY KEY( 表名稱 _字段名稱 1_UK PRIMARY KEY(字段名稱字段名稱1 ),) 或者語法格式:CREATE TABLE 表名稱 (字段名稱1字段類型,字段名稱2字段類型NOT NULL,AGENUMBER(20),SEXNUMBER(20),字段名稱n字段類型DEFAULT默認值 ,CONSTRAINT表名稱_字段名稱

32、1_PK PRIMARY KEY( 字段名稱 1 ),CONSTRAINT表名稱_字段名稱 2_UK UNIOUE( 字段名稱 2 ),CONSTRAINT表名稱_AGE_CK CHECK(AGE BETWEEN 0 AND 150),CONSTRAINT表名稱_SEX_CK CHECK(SEX IN (' 男','女','中性 '),)<4>非空約束:字段內(nèi)容不允許為空。語法格式:CREATE TABLE 表名稱 (字段名稱1字段類型,字段名稱2字段類型NOT NULL,字段名稱n字段類型DEFAULT默認值 CONSTRAINT表

33、名稱_字段名稱 1_PK PRIMARY KEY( 字段名稱 1 )<5>外鍵約束:在兩個表里進行約束操作。其實就是主外鍵約束,有父表和子表(FOREIGN KEY)例子:CREATE TABLE PERSON(PID VARCHAR2(18) ,NAME VARCHAR2(200) NOT NULL,AGE NUMBER(20) NOT NULL, BIRTHDAY DATE,SEX NUMBER(20),CONSTRAINT表名稱 _字段名稱 1_PK PRIMARY KEY( 字段名稱 1 ),CONSTRAINT表名稱 _字段名稱 2_UK UNIOUE( 字段名稱 2 )

34、,CONSTRAINT表名稱 _AGE_CK CHECK(AGE BETWEEN 0 AND 150),CONSTRAINT表名稱 _SEX_CK CHECK(SEX IN (' 男','女','中性'),CREATE TABLE BOOK(BID NUMBER(18) ,BNAME VARCHAR2(30),BPRICE NUMBER(5,2),PID VARCHAR2(18),SEX NUMBER(20),CONSTRAINT表名稱 _字段名稱 1_PK PRIMARY KEY( 字段名稱 1 ),CONSTRAINT表名稱 _字段名稱 2_

35、UK UNIOUE( 字段名稱 2 ),CONSTRAINT表名稱 _AGE_CK CHECK(AGE BETWEEN 0 AND 150),CONSTRAINT 件表名稱 _BOOK_PID_FK FOREIGN KEY(PID) REFERENCES PERSON(PID)- 主外鍵約束條);刪除表的時候必須先刪除子表再刪除父表,不然刪除不了。 可以只用強制型刪除手段刪除: 語法格式: DROP TABLE BOOK CASCADE CONSTRAINT;主外鍵約束的集聯(lián)操作完整語法:DROP TABLE PERSON;DROP TABLE BOOK;CREATE TABLE PERSON

36、(PIDVARCHAR2(18) ,NAME VARCHAR2(200) NOT NULL,AGE NUMBER(20) NOT NULL,BIRTHDAY DATE,SEX NUMBER(20),CONSTRAINT PERSON_PID_PK PRIMARY KEY(PID ),CONSTRAINT PERSON_NAME_UK UNIOUE(NAME ),CONSTRAINT PERSON_AGE_CK CHECK(AGE BETWEEN 0 AND 150),CONSTRAINT PERSON_SEX_CK CHECK(SEX IN ('男','女',&

37、#39;中性 '),);CREATE TABLE BOOK(BID NUMBER(18) ,BNAME VARCHAR2(30),BPRICE NUMBER(5,2),PID VARCHAR2(18),SEX NUMBER(20),CONSTRAINT BOOK_BID_PK PRIMARY KEY (BID),CONSTRAINT BOOK_BNAME_UK UNIOUE(BNAME),CONSTRAINT BOOK_AGE_CK CHECK(AGE BETWEEN 0 AND 150),ON DELETE','30',TO_DATECONSTRAINT BO

38、OK_PID_FK FOREIGN KEY(PID) REFERENCES PERSON(PID) CASCADE- 集聯(lián)刪除操作);INSERT INTO PERSON(PID,NAME,AGE,BIRTHDAY,SEX) VALUE('11111111',' 張 三 ('1976-02-23'),' 女 ')INSERT INTO BOOK(BID,BNAME,BPRICE,PID) V ALUES('1','JA VA','SE','89 9','1111111

39、1') 更改了表的結構,再次執(zhí)行刪除操作的時候,刪除主表的內(nèi)容時,子表的內(nèi)容也相應刪除了。 此操作值主外鍵操作中的重要操作及集聯(lián)刪除操作。37 修改約束<1 >增加約束條件語法格式: ALTER TABLE 表名稱 ADD CONSTRAINT 約束名稱 約束類型 (約束字段 ); 約束類型命名一定要統(tǒng)一:PRIMARY KEY: 字段名 _PKUNIOUE: 字段名 _UKCHECK: 字段名 _CKFOREIGN KEY :父字段名 _子字段名 _FK<2>刪除約束條件語法格式: ALTER TABLE 表名稱 DROP CONSTRAINT 約束名稱 ;3

40、8 ROENUM(重點)<1>ROWNUM 定義ROWNUM: 表示行號,實際上此是一個列,但這個列是偽列,此列可以在每張表里出現(xiàn)。語法格式:SELECT ROWNUM, 字段名1,字段名2, from 表名稱;某個值;差(MINUS)。SELECT ROWNUM, 字段名 1,字段名 2, from 表名稱 WHERE ROWNUM>以上檢索出的結果是以自動編號的形式出現(xiàn)。如果想從中間截取怎么必須使用子查詢。39 - Oracle中提供三種類型的集合操作:并(UNION),交(INSTERSECT),<1>UNION: 將多個查詢結果合并的一個查詢結果中,沒有重

41、復值。<2>UNIONALL: 將多個查詢結果合并的一個查詢結果中,但有重復值。<3>INSTERSECT: 返回查詢結果中的相同部分。<4>MINUS: 返回查詢結果中差集。40 視圖(重點)視圖的功能:一個試圖實際上是封裝了一個復雜的查詢語句。創(chuàng)建視圖的語法:CREATE VIEW 視圖名稱 AS 子查詢;實際上此時的子查詢個非常復雜的查詢語句。查詢視圖的語法:SELECT * FROM 視圖名稱 ;視圖不允許重名。刪除視圖的語法:DROP VIEW 視圖名稱 ;修改視圖,在Oracle中提供的一種替換方法也是視圖的創(chuàng)建的完整語法;語法格式:CREATE

42、 OR REPLACE 視圖名稱 AS 子查詢; Oracle在視圖中提供了兩個重要的參數(shù);WITH CHECK OPTION: 不能更改視圖的創(chuàng)建條件;WITH READ ONLY: 創(chuàng)建的視圖只能讀。41 序列(重點) 自動增長列可以通過序列來實現(xiàn)。創(chuàng)建一個序列的語法格式:CREATE SEQUENCE 序列名稱 ; 序列創(chuàng)建完成以后,所有的操作都需要用自己處理,所以序列提供一下兩種操作: NESTVAL:取得序列的下一個內(nèi)容; CURRVAL:取得序列的當前內(nèi)容。例子:建立一張表 MYSEQ;CREATE TABLE MYSEQ(NEST NUMBER;CURR NUMBER);INSE

43、RT INTO MYSEQ(NEST,CURR) V ALUES(MYSEQ NESTV AL,MYSEQ CURRVAL);以上操作, NEST 的內(nèi)容始終是在進行自動增長的操作, CURR 的內(nèi)容是取出當前操作的序列結果。 此時的自動增長的序列,自動增長的幅度是1,也可以修改自動增長的幅度??梢允褂靡韵乱粋€參數(shù):每次增長的幅度: INCREMENT BY 長度刪除序列的語法:DROP SEQUENCE 序列名稱;重新創(chuàng)建序列CREATE SEQUENCE 序列名稱 INCREMENT BY 長度 ;默認情況下,序列的起始值是 1,我們可以用 START WITH 指定起始值CREATE S

44、EQUENCE 序列名稱 INCREMENT BY 長度 START WITH 起始值 ;重新創(chuàng)建序列,使其取值在 1,3,5,7,9,循環(huán)序列。DROP SEQUENCE MYSEQ;CREATE SEQUENCE MYSEQ MAXVALUE 10 INCREMENT BY 2 START WITH 1 CACHE 2 CYCLE;42 同義詞Oracle 數(shù)據(jù)庫中有一張表叫 DUAL, 此表是一張?zhí)摂M表,在 SYS 用戶下存在此表,但在 SCOOT 用戶下可以直接訪問此表。此時就是同義詞的作用,同義詞,可以是其他用戶通過一名稱方便訪問“用戶名表名稱”。創(chuàng)建同義詞的語法:CREATE SY

45、NONYM 同義詞名稱 FOR用戶名稱表名稱;刪除同義詞方法:DROP SYNONYM 同義詞名稱 ;此操作只適合 Oracle 用戶。查找 Oracle 數(shù)據(jù)庫中是否有某張表:SELECT * FROM TAB WHERE TNAME='查找的表名 (必須是大寫 )'43 用戶管理在 Oracle 中可以對用戶進行建立和授權操作。創(chuàng)建用戶的語法:CREATE USER 用戶名稱 IDENTIFIED BY 密碼 ; 創(chuàng)建用戶必須在超級管理員用戶下操作及 SYS 用戶。給創(chuàng)建用戶授權限;語法格式:GRANT 權限1,權限2,權限3 TO 用戶;例子:GRANT CREATE S

46、ESSION TO TEST;此時授予 TEST 一個 SESSION 權限及連接數(shù)據(jù)庫的權限。 如果想一次性授予一個用戶多個權限,則可以將這個權限定義成一個角色。在 Oracle 中提供兩種主要角色, CONNECT,RESOURCE, 可以直接將這兩個角色賦予 TEST 用戶。GRANT CONNECT RESOURCE TO TEST;超級管理員可以修改普通管理員和用戶的密碼,語法格式如下:ALTER USER 用戶名 IDENTIFIYED BY 密碼 ;在一般系統(tǒng)中, 當用戶第一次登陸的時候可以修改密碼, 所以完成次功能, 可以手工使一個密碼失效其語法格式如下:ALTER USER

47、用戶名 PASSWORD EXPIRE; 運行語句以后會出現(xiàn)一個對話框,提示輸入舊的口令和新的口令??梢允褂靡粋€命令鎖住一個用戶,其語法格式如下:ALTER USER 用戶名 ACCOUNT LOCK;可以使用一個命令將鎖住一個用戶解鎖,其語法格式如下:ALTER USER 用戶名 ACCOUNT UNLOCK;不是超級管理員用戶而是普通用戶想訪問其他用戶,需要授予此表的訪問權限。例子:將 SCOTT 用戶下的 emp 表的查詢和刪除權限授予 TEST 用戶。GRANT SELECT,DELETE ON SCOTT emp TO TEST;既可以授予權限也可以收回權限,回收權限使用 REVOK

48、E 語法,語法如下:REVOKE 權限 ON用戶表名稱 FROM 用戶;44 數(shù)據(jù)庫的備份與恢復Oracle 數(shù)據(jù)庫提供兩種命令進行數(shù)據(jù)庫的備份與恢復 ;數(shù)據(jù)庫備份:EXP數(shù)據(jù)庫回復:IMP在 d 盤下建立一個 DATE 的文件夾,在這個文件夾里存放所有備份的文件,如果需要備份,需要使用命令行的方式 及 CMD ,進入到 D:DATE 文件夾之中。45 嵌套表嵌套表:一個表中還包含一個子表。首先要創(chuàng)建類型,其語法格式如下:CREATE TYPE PROJECT_TY AS OBJECT(POID NUMBER(4),PRONAME V ARCHAR(25),PRODATE DATE);/ 類型創(chuàng)建成功以后,并不意味這類型可以使用,因為此類型是一個完整的類型,所以要為此類型指定一個名稱。 語法格式如下:CREATE TYPE PROJECT_NT AS TABLE OF

溫馨提示

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

最新文檔

評論

0/150

提交評論