版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Oracle數(shù)據(jù)庫技術實驗指導書 編著:梁 海 計算機科學與工程學院二一三年十月目 錄實驗一 Oracle基本知識與SQL*PLUS環(huán)境3一實驗目的3二基礎知識3三實驗內容6實驗二 數(shù)據(jù)表的創(chuàng)建10一實驗目的10二基礎知識10三實驗內容13實驗三 數(shù)據(jù)插入、修改和刪除16一實驗目的16二基礎知識16三實驗內容18實驗四 數(shù)據(jù)查詢21一實驗目的21二基礎知識21三實驗內容30實驗一 Oracle基本知識與SQL*PLUS環(huán)境一實驗目的1 熟悉Oracle的基本知識。2 熟悉Oracle的命令操作環(huán)境SQL*PLUS。3 熟悉并掌握一些SQL*PLUS命令。二基礎知識1Oracle數(shù)據(jù)庫管理系統(tǒng)簡
2、介1979年,硅谷的一個小公司推出了Oracle,這是第一個與數(shù)據(jù)訪問語言SQL結合的關系數(shù)據(jù)庫。今天,Oracle公司已是世界上數(shù)據(jù)庫管理系統(tǒng)及相關產品的最大供應商。發(fā)布于1985年的Oracle第5版,是第一個真正的客戶/服務器數(shù)據(jù)庫系統(tǒng)。Oracle 8以及Oracle 8i是Oracle公司的最新產品。2Oracle服務器Oracle服務器是一個精致的信息管理環(huán)境。它是一個大量數(shù)據(jù)的儲藏所,并給用戶提供對這些數(shù)據(jù)的快速訪問。Oracle服務器允許應用系統(tǒng)之間共享數(shù)據(jù)。信息存放在一個地方并由許多應用系統(tǒng)來使用。Oracle服務器可運行在Sun系列以及Windows NT上。Oracle服
3、務器運行在很多不同的計算機上,支持下列配置:l 基于主機的配置 用戶直接連到存放數(shù)據(jù)庫的同一計算機上。l 客戶機/服務器結構 用戶通過網(wǎng)絡從他們的個人計算機(客戶機)上訪問數(shù)據(jù)庫,數(shù)據(jù)庫駐留在一個分離的計算機(服務器)上。l 分布式處理 用戶訪問存放在不止一臺計算機上的數(shù)據(jù)庫。數(shù)據(jù)庫分散在不止一臺機器上,用戶并不需要了解他們存放的數(shù)據(jù)的實際存放位置。l Web計算 能從基于Internet的應用程序訪問數(shù)據(jù)。3SQL,SQL*Plus 和 PL/SQLl SQL 是一種能夠訪問關系數(shù)據(jù)庫(包括Oracle數(shù)據(jù)庫)的語言。它能夠用在每一個Oracle工具中。l SQL*Plus 是一個SQL和P
4、L/SQL都能用的Oracle產品,并且也有自己的命令語言。l PL/SQL是為了編寫應用程序和操作數(shù)據(jù)的Oracle過程化語言,包含著SQL命令的子集,它適用于每個CDE產品。4Oracle數(shù)據(jù)庫系統(tǒng)的體系結構Oracle數(shù)據(jù)庫系統(tǒng)是具有管理Oracle數(shù)據(jù)庫功能的計算機軟件系統(tǒng)。每一個運行的Oracle數(shù)據(jù)庫與一個Oracle實例(instance)相聯(lián)系。一個Oracle實例是存取和控制一數(shù)據(jù)庫的軟件機制。每一次在數(shù)據(jù)庫服務器上啟動一數(shù)據(jù)庫時,稱為系統(tǒng)全局區(qū)(system global area)的一內存區(qū)(簡稱SGA)被分配,有一個或多個Oracle進程被起動。該SGA和Oracle進
5、程的結合稱為一個Oracle數(shù)據(jù)庫實例。一個實例的SGA和進程為管理數(shù)據(jù)庫數(shù)據(jù)、為該數(shù)據(jù)庫一個或多個用戶服務而工作。在Oracle系統(tǒng)中,首先是實例啟動,然后由實例裝配(mount)一個數(shù)據(jù)庫。1) 進程結構進程(process)是操作系統(tǒng)中的一種機制,它可執(zhí)行一系列的操作步驟。在有些操作系統(tǒng)中使用作業(yè)(JOB)或任務(TASK)的術語。一個進程通常有它自己的專用存儲區(qū)。Oracle進程的體系結構設計使性能最大。Oracle實例有兩種類:單進程實例和多進程實例。SGAOracle Server數(shù)據(jù)庫應用圖1-1 單進程Oracle實例單進程Oracle(又稱單用戶Oracle)是一個數(shù)據(jù)庫系統(tǒng)
6、,一個進程執(zhí)行全部Oracle代碼。由于Oracle部分和客戶應用程序不能分別以進程執(zhí)行,所以Oracle的代碼和用戶數(shù)據(jù)庫應用是單個進程執(zhí)行,其結構如圖1-2所示。在單進程環(huán)境下的Oracle實例,僅允許一個用戶存取。例如在MS-DOS上運行Oracle。用戶進程用戶進程用戶進程用戶進程SGARECOPMONSMONDBWRLGWRARCH圖1-2 多進程Oracle實例多進程Oracle實例(又稱多用戶Oracle)使用多個進程來執(zhí)行Oracle的不同部分,對于每一個連接的用戶都有一個進程,如圖1-3所示。在多進程系統(tǒng)中,進程分為兩類:用戶進程和Oracle進程。當一用戶運行一應用程序,如
7、Pro*c程序或一個Oracle工具(如SQL*Plus),為用戶運行的應用建立一個用戶 進程。Oracle進程又分為兩類:服務器進程(server process)和后臺進程(background process),服務器進程用于處理連接到該實例的用戶進程的請求。當應用和Oracle是在同一臺機器上運行,而不再通過網(wǎng)絡,一般將用戶進程和它相應的服務器進程組合成單個進程,可降低系統(tǒng)開銷。然而,當應用和Oracle運行在不同的機器上時,用戶進程經一個分離服務器進程Oracle通信。它執(zhí)行下列任務:l 對應用所發(fā)出的SQL語句進行語法分析和執(zhí)行。l 從磁盤(數(shù)據(jù)文件中)讀入必要的數(shù)據(jù)塊到SGA的共
8、享數(shù)據(jù)庫緩沖區(qū)(該塊不在緩沖區(qū)時)。l 將結果返回給應用程序處理。系統(tǒng)為了使性能最好和協(xié)調多個用戶,在多進程系統(tǒng)中使用一些附加進程,稱為后臺進程。在許多操作系統(tǒng)中,后臺進程是在實例啟動時自動地建立。一個Oracle實例可以有許多后臺進程,但它們不是一直存在。后臺進程的名字為:l DBWR 數(shù)據(jù)庫寫入程序l LGWR 日志寫入程序l CKPT 檢查點l SMON 系統(tǒng)監(jiān)控l PMON 進程監(jiān)控l ARCH 歸檔l RECO 恢復l LCKn 封鎖l Dnnn 調度進程l Snnn 服務器2) 內存結構Oracle在內存存儲下列信息:l 執(zhí)行的程序代碼。l 連接的會話信息(包括當前不活動的)。l
9、程序執(zhí)行期間所需要數(shù)據(jù)(如查詢的當前狀態(tài))。l Oracle進程間通信和共享的信息(如封鎖信息)。l 存儲在外存儲上的緩沖信息。Oracle具有下列基本的內存結構:l 軟件代碼區(qū)l 系統(tǒng)全局區(qū)(SGA),包括數(shù)據(jù)庫緩沖存儲區(qū)、日志緩沖區(qū)和共享池l 程序全局區(qū)(PGA),包括棧區(qū)和數(shù)據(jù)區(qū)。l 排序區(qū)(sort area)。5SQL*Plus命令SQL*Plus有許多命令,表1-1只是列舉了一部分常用命令。表1-1 常用SQL*Plus命令SQL*Plus命令縮寫意義APPEND textA text把字符串增加到當前行的末尾CHANGE /old/new/C/old/new/把當前行的舊字符串替
10、換成新字符串CHANGE /text/C/text/把當前行中字符串刪除CLEAR BUFFERCL BUFF從SQL緩沖區(qū)中刪除所有行CONNECT userid/passwordCONN userid/password在當前的登錄下,擊活其它的Oracle用戶DEL刪除當前行DESCRIBE tablenameDESC tablename顯示任何數(shù)據(jù)庫表的數(shù)據(jù)結構ED filename用默認的編輯器編輯保存的文件內容EXIT退出SQL*PlusGET filename把以filename為名字的文件內容調入SQL緩沖區(qū)中INPUTI插入許多行INPUT textI text插入一個包含te
11、xt字符串的行HELP擊活Oracle內部的幫助部件HOST command在SQL*Plus中擊活一個操作系統(tǒng)命令LISTL顯示SQL緩沖區(qū)的所有行LIST nL n顯示SQL緩沖區(qū)中的一行到n行LIST m nL m nSQL緩沖區(qū)中的從第m行顯示到第n行PROMPT text當運行一個命令文件時,顯示文本RUNR顯示并運行在緩沖區(qū)中的當前SQL命令RUNFORM filename從SQL*Plus中運行一個Oracle Forms應用程序SAVE filename把SQL緩沖區(qū)中的內容保存到以filename為名字的文件中,默認路徑為orawinbinSPOOL filename寫所有的
12、后面的命令或者輸出到一個已經命名的文件中。假脫機輸入輸出文件的后綴為.LISSPOOL OFF|OUTOFF 關閉假脫機輸入輸出文件;OUT改變假脫機輸入輸出,送文件到打印機上START filename filename運行以前保存的命令文件三實驗內容1 SQL*Plus的啟動當?shù)卿浀讲僮飨到y(tǒng)后,有三種方法啟動SQL*Plus。1) SQLPLUS(或 SQLPLUSW,下同)將看到如下的信息:SQL*Plus: Release 9.0.1.0.1 - Production on 星期二 9月 13 14:27:51 2005(c) Copyright 2001 Oracle Corpora
13、tion. All rights reserved.請輸入用戶名:輸入你的用戶名字并按回車。SQL*Plus將提示:請輸入口令:輸入你的密碼并按回車。那么,將看到SQL*Plus的提示符:SQL>例如:SQLPLUSSQL*Plus: Release 9.0.1.0.1 - Production on 星期二 9月 13 14:27:51 2005(c) Copyright 2001 Oracle Corporation. All rights reserved.Enter Username:scottEnter Password:tigerSQL>2) SQLPLUS Usern
14、ame再提示你輸入密碼。例如:SQLPLUS scottEnter Password: tigerSQL*Plus: Release 9.0.1.0.1 - Production on 星期二 9月 13 14:27:51 2005(c) Copyright 2001 Oracle Corporation. All rights reserved.SQL>3) SQLPLUS username/password例如:SQLPLUS scott/tigerSQL*Plus: Release 9.0.1.0.1 - Production on 星期二 9月 13 14:27:51 2005(
15、c) Copyright 2001 Oracle Corporation. All rights reserved.SQL>4) 斷開與數(shù)據(jù)庫的連接 SQL>DISCONNECT5) 退出SQL*PlusSQL>EXIT或:SQL>Quit2 SQL命令SQL命令包括數(shù)據(jù)定義語言(如Create、Alter等)和數(shù)據(jù)操作語言(Select Insert Update Delete等),這些都可在SQL*Plus中使用。如:SQL> conn / as sysdbaSQL>SELECT EMPNO, ENAME, JOB, SAL 2FROM EMP WHER
16、E SAL < 2500;3 SQL*Plus命令1.監(jiān)聽啟動監(jiān)聽lsnrctl start停止監(jiān)聽 lsnrctl stop查看監(jiān)聽狀態(tài) lsnrctl status2.啟動用oracle用戶進入 su - oracle運行sqlplus命令,進入sqlplus環(huán)境,nolog參數(shù)表示不登錄; sqlplus /nolog以管理員模式進入 conn /as sysdba啟動數(shù)據(jù)庫startup;停止數(shù)據(jù)庫SHUTDOWN IMMEDIATE遠程連接數(shù)據(jù)庫sq
17、lplus /nologconn sys/sysIP:1521/orainstance as sysdba也可以直接運行:dbstart /啟動數(shù)據(jù)庫腳本 dbshut /停止數(shù)據(jù)庫腳本 3.用戶管理創(chuàng)建用戶 create user "username" identified by "userpassword" ; 注:后面可帶表空間刪除用戶 drop user “username” cascade; 注:cascade 參數(shù)是級聯(lián)刪除該用戶所有對象,經常遇到如
18、用戶有對象而未加此參數(shù)則用戶刪不了的問題,所以習慣性的加此參數(shù) 授權grant connect,resource,dba to "username" ;查看當前用戶的角色select * from user_role_privs;select * from session_privs; 查看當前用戶的系統(tǒng)權限和表級權限select * from user_sys_privs;select * from user_tab_privs;查詢用戶表select username from dba_users; 修改用戶口令alter user "usernam
19、e" identified by "password" 顯示當前用戶show user;4.表及表空間創(chuàng)建表空間 CREATE TABLESPACE data01 DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M;刪除表空間 DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;修改表空間大小 alter database datafile '/path/NAD
20、Date05.dbf' resize 100M;增加表空間 ALTER TABLESPACE NEWCCS ADD DATAFILE '/u03/oradata/newccs/newccs04.dbf' SIZE 4896M; 查詢數(shù)據(jù)庫文件select * from dba_data_files; 查詢當前存在的表空間 select * from v$tablespace;表空間情況 select tablespace_name,sum(bytes)/1024/1024 fro
21、m dba_data_files group by tablespace_name;查詢表空間剩余空間 select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;查看表結構 desc table;修改連接數(shù):要重啟數(shù)據(jù)庫alter system set processes=1000 scope=spfile;shutdown immediate;startup;查看用戶當前連接數(shù)select count(*) from sy
22、s.v_$session;PL/SQLDECLARE /*申明部分,一般是變量及常量*/ BEGIN /*執(zhí)行部分,流程結構控制,SQL部分*/EXCEPTION/*異常處理部分*/ENDSET SERVEROUTPUT ON /打開輸出開關BEGIN DBMS_OUTPUT.PUT_LINE('Hello world!'); /輸出結果END;案例學習:修改數(shù)據(jù)庫的連接數(shù),操作如下1) 查看當前會話數(shù)、processes和sessions值SQL> conn / as sysdba已連接。SQL> select count(*) from v$session;SQ
23、L> show parameter processes;SQL> show parameter sessions;2) 修改processes和sessions值SQL> alter system set processes=300 scope=spfile;系統(tǒng)已更改。SQL> alter system set sessions=300 scope=spfile;系統(tǒng)已更改。 3) 查看processes和sessions參數(shù),但更改并未生效 4)重啟數(shù)據(jù)庫,使更改生效SQL> shutdown immediateSQL> startupSQL> s
24、how parameter processesSQL> show parameter sessions以下為實驗部分的內容:4.創(chuàng)建表空間GUET5.創(chuàng)建臨時表空間GUET_TEMP6.創(chuàng)建數(shù)據(jù)庫GUETDB7.創(chuàng)建賬號密碼均為dept3的賬戶,并賦予操作GUETDB的管理員權限8使用PL/Develop連接數(shù)據(jù)庫實驗二 數(shù)據(jù)表的創(chuàng)建一實驗目的1 了解并掌握Oracle中表結構的定義。2 了解并掌握Oracle中的用Create命令定義表的方法,以及表的完整性定義。3 了解并掌握Oracle中的用Alter命令 和Drop命令對表的修改和刪除。二基礎知識DDL是SQL命令的子集,用來創(chuàng)建
25、、修改、刪除Oracle數(shù)據(jù)庫結構。這些命令能立即影響數(shù)據(jù)庫和數(shù)據(jù)字典字段信息。1 表名命名規(guī)則所用的表名必須滿足下面的條件:a) 名字必須以A-Z 或a-z的字母開始;b) 名字可以包括字母、數(shù)字和特殊字母(_)。字符$和#也是合法的,但是這種用法不提倡;c) 名字大小寫是一樣的;例如EMP、emp和eMp是表示同一個表;d) 名字最長不超過30個字符;e) 表名不能和其它的對象重名;f) 表名不能是SQL保留字。表2-1 表名命名舉例名 字合 法EMP85YES85EMPNO(開始不是字母)FIXED_ASSETSYESFIXED ASSETSNO(包含空格)UPDATENO(SQL保留字
26、)2 字段類型表2-2 字段類型數(shù)據(jù)類型描述VARCHAR2(w)變長字符,長度為w。最長為2000個字符。CHAR(w)定長字符,長度為w。默認為1個字符;最長為255個字符NUMBER38位有效數(shù)字的浮點數(shù)NUMBER(w)W位精確度的整數(shù),范圍從1至38NUMBER(w,s)W是精度,或總的數(shù)字位,范圍從1至38。S是比例,或是小數(shù)點右邊的數(shù)字位。比例的范圍從-84至127DATE日期值,范圍從公元前14712年1月到公元314712年12月LONG變長字符串,其最大長度為2G(或231-1個字節(jié))RAW 和LONG RAW面向字節(jié)數(shù)據(jù),可存儲字符串、浮點數(shù),二進制數(shù)據(jù)等3 Create
27、命令1)、CREATE TABLE table_name( column_name type(size), column_name type(size), );例如:CREATE TABLE DEPT(DEPTNO NUMBER(2),DNAME VARCHAR2(12),LOC VARCHAR2(12);2)、CREATE TABLE table_name (column_name,) AS SELECT statement;例如:CREATE TABLE DEPTNO10 (NAME,LOCATION)AS SELECT DNAME,LOC FROM DEPTWHERE DEPTNO =
28、10;4完整性約束Oracle允許用戶為表和列定義完整性約束來增強一定的規(guī)則??煞譃椋罕砑s束和字段約束5約束類型1)、NOT NULL約束NOT NULL約束保證字段值不能為NULL。沒有NOT NULL約束的字段,值可以為NULL。2)、UNIQUE約束指定一個字段或者字段的集合為唯一鍵。在表中沒有兩行具有相同的值。如果唯一鍵是基于單條記錄的,NULL是允許的。表約束命令格式:,CONSTRAINT constraint_name UNIQUE (Column, Column, )字段約束命令格式:CONSTRAINT constraint_name UNIQUE例如:CREATE TABL
29、E DEPT(DEPTNO NUMBER, DNAME VARCHAR2(9),LOC VARCHAR2(10),CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME,LOC);UNQ_DEPT_LOC是一個表約束。3)、主鍵約束(Primary Key Constraint)主鍵約束強制字段和字段集合的唯一性,并且用一個唯一索引來管理它。每個表中只能用一個主鍵,這樣可以通過主鍵來標識表中的每條記錄。NULL值不允許在主鍵字段出現(xiàn)。表約束命令格式:,CONSTRAINT constraint_name PRIMARY KEY (Column, Column, )字段約束命令
30、格式:CONSTRAINT constraint_name PRIMARY KEY例如:用字段約束定義DEPTNO為主鍵CREATE TABLE DEPT(DEPTNO NUMBER(2) CONSTRAINT DEPT_PRIM PRIMARY KEY,);4)、外鍵約束外鍵提供表內或表間的完整性規(guī)則。外鍵必須依賴于一個primary或unique key。表約束命令格式:,CONSTRAINT constraint_name FOREIGN KEY (Column, Column, ) REFERENCES table (column, column, )字段約束命令格式:CONSTRAI
31、NT constraint_name FOREIGN KEY table (column)例如:CREATE TABLE EMP(CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO);5)、Check約束CHECK約束定義了每條記錄必須滿足的條件語法:CONSTRAINT constraint_name CHECK (condition)6 Alter命令ALTER TABLE命令可用來修改數(shù)據(jù)表的定義。命令格式:ALTER TABLE tablenameADD或MODIFY或DROP options (column
32、_spec column_constraint) ENABLE clause 或DISABLE clause ADD關鍵字可以用來給已存在的數(shù)據(jù)表增加一個字段或約束。如:給EMP增加一個字段增加一列(字段):alter table tablename add column_name datatype.ALTER TABLE EMPADD (SPOUSES_NAME CHAR(10));Table altered。MODIFY關鍵字可以用來修改已存在的數(shù)據(jù)表定義。如:把EMP中ENAME長度改為25個字符ALTER TABLE EMPMODIFY (ENAM CHAR(25);Table alt
33、ered。DROP關鍵字可以用來刪除已存在數(shù)據(jù)表的約束。如:把EMP中主鍵刪除ALTER TABLE EMPDROP PRIMARY KEY;Table altered。7 Drop 命令用DROP TABLE命令刪除Oracle數(shù)據(jù)表的定義。命令格式:DROP TABLE table_name CASCADE CONSTRAINT例如:DROP TABLE EMP;CASCADE CONSTRAINT選項說明了也把完整性約束一起刪除。注意:l DROP TABLE也把數(shù)據(jù)表中的數(shù)據(jù)刪除。l 數(shù)據(jù)表的VIEWS和SYNOMNYMS保留下來,但它們變成了不合法的。l 任何懸而未決的事務將被提交。
34、l 只有數(shù)據(jù)表的生成者或DBA才有權刪除它。三實驗內容1 創(chuàng)建表EMPCREATE TABLE EMP(EMPNO NUMBER(4) NOT NULL PRIMARY KEY,ENAME VARCHAR2(10),JOB VARCHAR2(10),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(2) NOT NULL);Table created.用SQL*PLUS命令DESCRIBE來看生成的EMP表的列明細清單:輸入命令:DESCRIBE EMPEMP生成的數(shù)據(jù)表結構顯示如下: Name
35、Null?TypeEMPNONOT NULLNUMBER(4)ENAMEVARCHAR2(10)JOBVARCHAR2(10)MGRNUMBER(4)HIREDATEDATESALNUMBER(7,2)COMMNUMBER(7,2)DEPTNONOT NULLNUMBER(2)2 從其他表中抽取字段生成數(shù)據(jù)表CREATE TABLE EMP_PART ASSELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP;Table Created.輸入命令:DESCRIBE EMP_PARTEMP_Part生成的數(shù)據(jù)表結構結果顯示如下: NameNull?TypeEMPNONO
36、T NULLNUMBER(4)ENAMEVARCHAR2(10)JOBVARCHAR2(10)SALNUMBER(7,2)COMMNUMBER(7,2)3 DROP命令刪除數(shù)據(jù)表DROP TABLE EMP_PART;Table dropped.4 給數(shù)據(jù)表EMP增加一個字段SPOUSES_NAMEALTER TABLE EMPADD (SPOUSES_NAME CHAR(10));輸入命令:DESCRIBE EMPEMP生成的數(shù)據(jù)表結構顯示如下: NameNull?TypeEMPNONOT NULLNUMBER(4)ENAMEVARCHAR2(10)JOBVARCHAR2(10)MGRNUM
37、BER(4)HIREDATEDATESALNUMBER(7,2)COMMNUMBER(7,2)DEPTNONOT NULLNUMBER(2)SPOUSES_NAMECHAR(10)5 用ALTER的MODIFY命令修改已存在的字段的定義ALTER TABLE EMPMODIFY (ENAME VARCHAR2(12);Table Altered.輸入命令:DESCRIBE EMPEMP生成的數(shù)據(jù)表結構顯示如下: NameNull?TypeEMPNONOT NULLNUMBER(4)ENAMEVARCHAR2(12)JOBVARCHAR2(10)MGRNUMBER(4)HIREDATEDATES
38、ALNUMBER(7,2)COMMNUMBER(7,2)DEPTNONOT NULLNUMBER(2)SPOUSES_NAMECHAR(10)6 用ALTER的DROP命令刪除數(shù)據(jù)表中已存在的約束ALTER TABLE EMP DROP PRIMARY KEY;Table Altered. 7創(chuàng)建表CUSTOMERcreate table customer(last_name varchar2 (30) not null,state_cdvarchar(2),salesnumber);Table created.8創(chuàng)建表STATEcreate table state(state_cdvarch
39、ar(2) not null,sate_namevarchar2(30);Table created.9. 創(chuàng)建如下三個基表:S (S#,SNAME,AGE,SEX) 對應的中文為:學生 (學號,姓名,年齡,性別)SC (S#,C#,GRADE) 對應的中文為:學習(學號,課程號,成績) C(C#,CNAME,TEACHER) 對應的中文為:課程(課程號,課程名,任課教師)注:以后的實驗要用到這三個基本表。實驗三 數(shù)據(jù)插入、修改和刪除一實驗目的1 在數(shù)據(jù)表中用Insert增加記錄。2 用Update修改數(shù)據(jù)表中的數(shù)據(jù)。3 用Delete刪除表中的數(shù)據(jù)。4 了解事務處理過程及其命令。二基礎知識1
40、 Insert命令1)用來在數(shù)據(jù)表中增加記錄,格式如下:INSERT INTO tablename (column, column, .)VALUES (value, value, .);命令中(column, column, .)是可選的。一般情況下,為了編程的方便,最好指定字段列表。該命令每次只能增加一條記錄。注意,CHARACTER和DATE必須用單引號括起來。例如:INSERT INTO DEPT (DEPTNO,DNAME,LOC)VALUES (50,市場部,上海);在DEPT中增加一個新部門,忽略部門名稱,這時字段列表必須指定否則出錯,可用如下命令:INSERT INTO DEP
41、T (DEPTNO, LOC)VALUES (50,上海);另外,如果部門名稱不能確定,可用NULL代替,如下:INSERT INTO DEPT (DEPTNO,DNAME,LOC)VALUES (50,NULL,上海);增加DATE類型的數(shù)值,常用格式是DD-MON-YY。默認的世紀是20世紀,ORCALE已克服了Y2K(千年蟲)問題。如下:INSERT INTO EMP (EMPNO,NAM,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)VALUES (7568,MASON,ANALYST,7566,TO_DATE(24/06/2084 9:30,DD/MM/YYYY
42、HH:MI),3000,NULL,20);2)增加從其他數(shù)據(jù)表查詢出的數(shù)據(jù)命令格式:INSERT INTO table (column, column, .)SELECT select-listFROM table(s);2 Update命令在需要修改表中數(shù)據(jù)時,可使用update命令如下:UPDATE tablealiasSET column,column. = expression, subqueryWHERE condition;命令由三部分組成:l update后跟一個或多個要修改的表,這部分是必不可少的。l set后跟一個或多個要修改的表列,這也是必不可少的。l where后跟查詢條
43、件,這是選項;如果WHERE子句忽略,UPDATE命令將修改數(shù)據(jù)表中所有記錄。例如:修改EMP表中SCOTT的記錄數(shù)據(jù),把他調到銷售部,并且工資提高10%,具體命令如下:UPDATE EMPSET JOB =SALESMAN,HIREDATE = SYSDATE,SAL = SAL*1.1WHERE ENAME = SCOTT;1 record updated.3 Delete命令Delete命令用來從表中刪除一行或多行記錄。命令格式如下:DELETE FROM table WHERE condition;該命令由兩部分組成:l 關鍵字delete from 后跟準備要從中刪除數(shù)據(jù)的表名,這是
44、必不可少的。l 關鍵字where后跟刪除條件,是可選項;如果不用WHERE子句,數(shù)據(jù)表中的所有記錄將被刪除。例如刪除EMP表中部門號是10的記錄:DELETE FROM EMP WHERE DEPTNO = 10;4 事務(Transaction)事務是由一串修改數(shù)據(jù)庫的操作組成的。Oracle中有兩種事務:DML事務和DDL事務。DML事務是一些DML語句組成的,Oracle把事務作為單個實體或邏輯工作單元來處理;DDL事務只能由一條DDL語句組成。事務的執(zhí)行必須是完整的,也就是說事務處理中一部分提交給數(shù)據(jù)庫而其他部分不提交這是不允許的。對于事務來說,要么事務中所有處理都提交,要么所有的處理
45、都放棄。事務是以可執(zhí)行的DML或DDL命令開始,以下面的情況結束:l COMMIT/ROLLBACKl DDL命令(DDL語句是自動提交)l 一些錯誤(如死鎖)l 注銷(如退出SQL*Plus)l 硬件錯誤1)、永久性修改為了使修改變成永久性,這些修改必須提交給數(shù)據(jù)庫。COMMIT命令可以用來使數(shù)據(jù)庫永久性改變。而ROLLBACK可以撤消或放棄修改。在兩次提交之間對數(shù)據(jù)庫的修改就是事務。2)、撤消修改ROLLBACK可以放棄不提交的修改。ROLLBACK可以恢復上次提交之后修改過的數(shù)據(jù)。3)、系統(tǒng)錯誤事務被一些嚴重錯誤(例如系統(tǒng)錯誤)的中斷時,它將自動回滾。這阻止了由錯誤造成的對數(shù)據(jù)不完整的修
46、改,而恢復到最近提交之后的數(shù)據(jù)表的狀態(tài)。用這種方式SQL*Plus保護了數(shù)據(jù)的完整性。自動回滾通常是系統(tǒng)錯誤造成的,例如斷電或RESET。而在輸入命令時的錯誤,例如拼寫錯誤或沒有授權的操作,不會造成事務的中斷或者自動回滾。這是因為錯誤是在編譯時而不是在運行時檢測到的。4)、用SQL語句控制事務)、COMMIT WORK;Ä 使當前事務永久的修改。Ä 清除這個事務中所有的保存點。Ä 結束事務。Ä 釋放事務中的鎖操作。Ä 關鍵字WORK是可選的。一般情況下,應在應用程序中用COMMIT(或ROLLBACK)顯式的結束事務。隱式(自動)結束事務在下列
47、情況發(fā)生:Ä DDL命令之前。Ä DDL語句之后。Ä 和一個數(shù)據(jù)庫正常斷開之后。)、SAVEPOINT savepoint_nameÄ 保存點能把事務分割成更小的部分。Ä 保存點允許在任意點阻止工作的進行。Ä 如果第二個保存點的名字和第一個保存點的名字相同,那么第一個保存點自動失效。Ä 保存點的最大數(shù)默認是5;但可以修改。)、ROLLBACK WORK to SAVEPOINT savepoint_nameROLLBACK語句用來撤消工作。Ä 關鍵字WORK是可選的。SAVEPOINT也是可選的。Ä 如果
48、ROLLBACK語句中沒有TO SAVEPOINT子句,那么它將結束事務;回滾這個事務中所有的操作;清除這個事務中所有的保存點;釋放這個事務的鎖操作。三實驗內容1 用Insert在基本表customer中插入數(shù)據(jù)SQL>insert into customer values (Nicholson,CA,6989.99);1 row created.SQL>insert into customer values (Martin,CA,2345.45);1 row created.SQL>insert into customer values (Laursen,CA,34.34)
49、;1 row created.SQL>insert into customer values (Bambi,CA,1234.55);1 row created.SQL>insert into customer values (McGraw,NJ,123.45);1 row created.2 在表STATE中插入指定的字段SQL>insert into state (state_name,state_cd)2values (Massachusetttes,MA);1 row created.SQL>insert into state (state_name,state_
50、cd)2values (California, CA);1 row created.SQL>insert into state (state_name,state_cd)2values (NewJersey,NJ);1 created.SQL>insert into state (state_name,state_cd)2values (NewYork,NY);1 created.3修改數(shù)據(jù)把state表中NewYork改為Florida,NY改為FD:UPDATE state SET state_name = Florida, state_cd = FD where state_
51、name = NewYork and state_cd = NY;4刪除數(shù)據(jù)從STATE表刪除state_name為Florida和state_cd為FD的記錄:DELETE FROM STATE WHERE state_name = Florida AND state_cd = FD;1 用INSERT 命令輸入數(shù)據(jù) 表3-1 基本表S的數(shù)據(jù)S1WANG20MS2LIU19MS3CHEN22MS4WU19MS5LOU21FS8DONG18F表3-2 基表C的數(shù)據(jù)C2MATHSMAC4PHYSICSSHIC3CHEMISTRYZHOUC1DBLIC5OSWEN 表3-3 基本表SC的數(shù)據(jù)(空格
52、為未選修) C# S#S1S2S3S4S5S8C1808590757090C270NULL8560NULLC38595NULL8090C490NULL70C57065NULL2 對S、C、SC表進行操作:1)、把C2課程的非空成績提高10%。2)、在SC表中刪除課程名為PHYSICS的成績的元組。3)、在S和SC表中刪除學號為S8的所有數(shù)據(jù)。實驗四 數(shù)據(jù)查詢一實驗目的1 掌握Select語句的運用。2 掌握一些函數(shù)的應用。3 掌握子查詢的運用。4 連接和分組的應用。二基礎知識1Select語句Select命令用于從Oracle數(shù)據(jù)庫中檢索數(shù)據(jù)。利用select命令告訴數(shù)據(jù)庫要檢索什么樣的信息。Select是最常用的SQL語句,select命令(如下)有六個基本部分構成:SELECT DISTINCT *,COLUMN ALIAS,F(xiàn)ROM tableWHERE condition(s)ORDER BY column,exper ASC|DESCGR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提前解除勞動合同的賠償計算與支付方式
- 聯(lián)合經營協(xié)議書范本
- 證人保證書范文2024年
- 買賣定金合同協(xié)議書
- 2024年外墻施工分包合同范本
- 2024中國銀行信托投資公司外匯固定資產貸款合同
- 互聯(lián)網(wǎng)投資合作協(xié)議書怎么寫
- 2024設備保修合同模板
- 土方設備互換協(xié)議
- 2024年二手車轉讓合同模板
- 項目主要施工管理人員情況
- 個人借條電子版模板
- 關于學習“國語普通話”發(fā)聲亮劍【三篇】
- 玻璃廠應急預案
- 嬰幼兒游戲照料(嬰幼兒回應性照護課件)
- 貨車進入車間安全要求
- MAC地址-廠商對應表
- 2022年中國出版業(yè)總體狀況分析
- BIM大賽題庫含答案
- 造紙術學習課件
- (完整版)譯林版四年級上冊Unit7單元測試
評論
0/150
提交評論