山交Oracle復(fù)習(xí)資料
10個(gè)填寫,8個(gè)大題
第1章 數(shù)據(jù)庫的基本概念與Oracle環(huán)境
1.1.2 數(shù)據(jù)模型
oracle是關(guān)系型數(shù)據(jù)庫
數(shù)據(jù)模型分為:層次模型、網(wǎng)狀模型、關(guān)系模型
- 層次模型:以樹形層次結(jié)構(gòu)組織數(shù)據(jù)
- 網(wǎng)狀模型:每一個(gè)數(shù)據(jù)用一個(gè)節(jié)點(diǎn)表示,每個(gè)節(jié)點(diǎn)與其他節(jié)點(diǎn)都有聯(lián)系,這樣,數(shù)據(jù)庫中的所有數(shù)據(jù)節(jié)點(diǎn)就構(gòu)成了一個(gè)復(fù)雜的網(wǎng)絡(luò)。
- 關(guān)系模型:以二維表格(關(guān)系表)的形式組織數(shù)據(jù)庫中的數(shù)據(jù)。從用戶觀點(diǎn)看,關(guān)系模型由一組關(guān)系組成,每個(gè)關(guān)系的數(shù)據(jù)結(jié)構(gòu)是一個(gè)規(guī)范化的二維表。
1.1.3 關(guān)系型數(shù)據(jù)庫語言 (分類)
- 數(shù)據(jù)定義語言(DDL)
- 數(shù)據(jù)操作語言(DML)
- 數(shù)據(jù)控制語言(DCL)
- 數(shù)據(jù)查詢語言(DQL)
1.1.4 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)從哪些方面設(shè)計(jì):
- 概念結(jié)構(gòu)設(shè)計(jì)
- 邏輯結(jié)構(gòu)設(shè)計(jì)
- 物理結(jié)構(gòu)設(shè)計(jì)
E-R模型:將實(shí)體集及實(shí)體集之間聯(lián)系的圖稱為E-R模型
E-R模型的表示方法為:
- 實(shí)體集用矩形框表示,矩形框內(nèi)標(biāo)注實(shí)體名
- 實(shí)體集的屬性用橢圓框表示,框內(nèi)標(biāo)注屬性名,并用無向邊與其實(shí)體集相連
- 實(shí)體集間的聯(lián)系用菱形框表示,聯(lián)系以適當(dāng)?shù)暮x命名,名字寫在菱形框中,用無向邊將參加聯(lián)系的實(shí)體矩形框分別與菱形框相連,并在連線上標(biāo)明聯(lián)系的類型,即1—1、1—n或m—n
- 如果一個(gè)聯(lián)系有屬性,則這些屬性也要用無向邊與該聯(lián)系連接起來
兩個(gè)實(shí)體集之間的聯(lián)系可能是以下三種情況之一:
- 一對(duì)一的聯(lián)系(1∶1)
- 一對(duì)多的聯(lián)系(1∶n)
- 多對(duì)多的聯(lián)系(m∶n)
1.3.4 SQL*Plus工具
用于數(shù)據(jù)庫交互的命令會(huì)命令工具為SQLPlus
create table xsb();
Describe xsb;
INSERT INTO KCB VALUES('101', '計(jì)算機(jī)基礎(chǔ)', 1, 80, 5);
SELECT * FROM KCB;
第2章 數(shù)據(jù)庫創(chuàng)建
第2章-1 數(shù)據(jù)庫體系結(jié)構(gòu)
2.1 Oracle體系結(jié)構(gòu)

- Oracle是一個(gè)基于B/S模式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
- Oracle系統(tǒng)體系結(jié)構(gòu)由三部分組成:邏輯結(jié)構(gòu)、物理結(jié)構(gòu)和實(shí)例
2.1.2 外部結(jié)構(gòu)
- 數(shù)據(jù)文件(DATAFILE)
- 重做日志文件(REDO LOG FILES)
- 控制文件(CONTROL FILES)
- 參數(shù)文件(CONTROL FILES)
第2章-2 oracle數(shù)據(jù)庫管理工具
Oracle的服務(wù)啟動(dòng)
- net start oracleserviceoracle ----啟動(dòng)oracleserviceoracle服務(wù)
- net start oraclevsswriteroracle ----啟動(dòng)oraclevsswriteroracle服務(wù)
- lsnrctl start ----啟動(dòng)OracleOraDB12Home1TNSListener監(jiān)聽程序。
Oracle的服務(wù)關(guān)閉
- net stop oracleserviceoracle ----啟動(dòng)oracleserviceoracle服務(wù)
- net stop oraclevsswriteroracle ----啟動(dòng)oraclevsswriteroracle服務(wù)
- lsnrctl stop ----啟動(dòng)OracleOraDB12Home1TNSListener監(jiān)聽程序
Web OEM控制臺(tái)
默認(rèn)端口:5500
網(wǎng)址:https://localhost:5500/em
OracleSQL Plus-啟動(dòng)
SQLPLUS <用戶名>/<口令>@<數(shù)據(jù)庫實(shí)例名> AS <身份類型>
例如:
C:>SQLPLUS SYS/lj0414@eBuy AS SYSDBA
第2章-3 oracle數(shù)據(jù)庫的創(chuàng)建和管理
創(chuàng)建數(shù)據(jù)庫的方式
通過界面創(chuàng)建、通過命令行創(chuàng)建
2.3.1 創(chuàng)建數(shù)據(jù)庫
- 設(shè)定實(shí)例標(biāo)識(shí)符
SET ORACLE_SID=mydb - 設(shè)定數(shù)據(jù)庫管理員的驗(yàn)證方法
orapwd file=D:\oracle\oradata\DATABASE\PWDmydb.ora Password=123456 entries=5 - 創(chuàng)建初始化參數(shù)
- 啟動(dòng)SQL*Plus并以SYSDBA連接到Oracle實(shí)例
sqlplus /nolog connect system/123456 as sysdba - 啟動(dòng)實(shí)例
STARTUP NOMOUNT pfile="D:\app\tao\mydb\pfile\initmydb.ora" - 啟動(dòng)實(shí)例
使用CREATE DATABASE語句創(chuàng)建數(shù)據(jù)庫mydb
CREATE DATABASE mydb
MAXINSTANCES 1
MAXDATAFILES 100
DATAFILE 'D:\app\tao\oradata\mydb\system01.dbf'
SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
UNDO TABLESPACE UNDOTBS DATAFILE
'D:\app\tao\oradata\mydb\undotbs01.dbf'
SIZE 150M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
LOGFILE 'D:\ app\tao\oradata\mydb\redo01.log' SIZE 100M,
'D:\ app\tao\oradata\mydb\redo02.log' SIZE 100M,
'D:\ app\tao\oradata\mydb\redo03.log' SIZE 100M
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
2.3.2 修改數(shù)據(jù)庫
使用ALTER DATABASE語句來修改數(shù)據(jù)庫的某些設(shè)置
創(chuàng)建新的數(shù)據(jù)文件以代替原來的數(shù)據(jù)文件
ALTER DATABASE mydb
CREATE DATAFILE 'users' AS 'D:\app\tao\oradata\mydb\users01.dbf'
SIZE 50M REUSE AUTOEXTEND ON NEXT 20M MAXSIZE 500M;
2.3.3 刪除數(shù)據(jù)庫
刪除數(shù)據(jù)庫mydb
DROP DATABASE mydb;
第3章 表與表數(shù)據(jù)操作
3.2 創(chuàng)建和管理表空間
查看表空間:
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
Spool:
該命令將sql*plus屏幕上的內(nèi)容輸出到指定文件中去
spool d:\b.sql;
select * from emp;
spool off;
創(chuàng)建大小為50MB的表空間TEST,禁止自動(dòng)擴(kuò)展數(shù)據(jù)文件:
CREATE TABLESPACE TEST
LOGGING
DATAFILE 'D:\app\tao\oradata\XSCJ\TEST01.DBF' SIZE 50M
REUSE AUTOEXTEND OFF;
創(chuàng)建表空間DATA,允許自動(dòng)擴(kuò)展數(shù)據(jù)文件:
CREATE TABLESPACE DATA
LOGGING
DATAFILE 'D:\app\tao\oradata\XSCJ\DATA01.DBF' SIZE 50M
REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M
通過ALTER TABLESPACE命令把一個(gè)新的數(shù)據(jù)文件添加到DATA表空間,并指定了AUTOEXTEND ON和 MAXSIZE 300M:
ALTER TABLESPACE DATA
ADD DATAFILE 'D:\app\tao\oradata\XSCJ\DATA02.DBF' SIZE 50M
REUSE AUTOEXTEND ON NEXT 50M MAXSIZE 300M;
3.4.1 創(chuàng)建表
利用CREATE TABLE命令為XSCJ數(shù)據(jù)庫建立表KCB,指定表的存儲(chǔ)參數(shù):
CREATE TABLE KCB
(
KCH char(3) NOT NULL PRIMARY KEY,
KCM char(16) NOT NULL,
KKXQ number(1) NULL,
XS number(2) NULL,
XF number(1) NOT NULL
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE (INITIAL 64K MINEXTENTS 1 PCTINCREASE 40
FREELISTS 1 FREELIST GROUPS 1);
創(chuàng)建XSB表中計(jì)算機(jī)專業(yè)學(xué)生的記錄備份:
CREATE TABLE XS_JSJ
AS SELECT *
FROM XSB
WHERE ZY= '計(jì)算機(jī)' ;
3.4.2 修改表
使用ALTER TABLE語句修改XSCJ數(shù)據(jù)庫中的表。
(1)在表XSB中增加兩列:JXJ(獎(jiǎng)學(xué)金等級(jí))、DJSM(獎(jiǎng)學(xué)金等級(jí)說明)
ALTER TABLE XSB
ADD ( JXJ number(1),
DJSM varchar2(40) DEFAULT '獎(jiǎng)金1000元');
(2)在表XSB中修改名為DJSM的列的默認(rèn)值
ALTER TABLE XSB
MODIFY ( DJSM DEFAULT '獎(jiǎng)金800元' );
(3)在表XSB中刪除名為JXJ和DJSM的列
ALTER TABLE XSB
DROP COLUMN JXJ;
ALTER TABLE XSB
DROP COLUMN DJSM;
3.4.3 刪除表
DROP TABLE XSB
3.6 命令方式操作表數(shù)據(jù)
INSERT語句
INSERT INTO table_name[(column_list)] VALUES(constant1,constant2,…) COMMIT;-
MERGE語句
USING table_name ON (join_condition) WHEN MATCHED THEN { UPDATE SET…| DELETE…} WHEN NOT MATCHED THEN INSERT(…) VALUES(…)```
3.6.2 刪除記錄
-
DELETE語句
DELETE FROM table_name∣view_name [WHERE condition]
3.6.3 修改記錄
UPDATE table_name∣view_name
SET column_name=expression,[…n]
[WHERE condition]
第4章 數(shù)據(jù)庫的查詢和視圖
4.2.1 選擇列
- 消除結(jié)果集中的重復(fù)行
SELECT DISTINCT column_name [ , column_name…] - 范圍比較
expression [ NOT ] BETWEEN expression1 AND expression2 - IN
expression IN ( expression [,…n])
查詢CP表中庫存量為“200”“300”和“500”的情況
SELECT *
FROM CP
WHERE KCL IN (200,300,500);
在XSCJ數(shù)據(jù)庫中查找選修了課程號(hào)為101的課程的學(xué)生的情況
SELECT *
FROM XSB
WHERE XH IN
( SELECT XH FROM CJB WHERE KCH = '101' );
查找比所有計(jì)算機(jī)系學(xué)生年齡都大的學(xué)生
SELECT *
FROM XSB
WHERE CSSJ <ALL
( SELECT CSSJ
FROM XSB
WHERE ZY= '計(jì)算機(jī)'
);
查找選修206號(hào)課程的學(xué)生姓名
SELECT XM
FROM XSB
WHERE EXISTS
( SELECT *
FROM CJB
WHERE XH=XSB.XH AND KCH= '206'
);
4.2.4 連接
- 內(nèi)連接 內(nèi)連接按照ON所指定的連接條件合并兩個(gè)表,返回滿足條件的行
查找不同課程成績相同的學(xué)生的學(xué)號(hào)、課程號(hào)和成績
SELECT a.XH,a.KCH,b.KCH,a.CJ
FROM CJB a JOIN CJB b
ON a.CJ=b.CJ AND a.XH=b.XH AND a.KCH!=b.KCH;
- 外連接 外連接的結(jié)果表不但包含滿足連接條件的行,還包括相應(yīng)表中的所有行
- 左外連接(LEFT OUTER JOIN):結(jié)果表中除了包括滿足連接條件的行外,還包括左表的所有行;
- 右外連接(RIGHT OUTER JOIN):結(jié)果表中除了包括滿足連接條件的行外,還包括右表的所有行;
- 完全外連接(FULL OUTER JOIN):結(jié)果表中除了包括滿足連接條件的行外,還包括兩個(gè)表的所有行。
查找被選修了的課程的選修情況和所有開設(shè)的課程名
SELECT CJB.* , KCM
FROM CJB RIGHT JOIN KCB ON CJB.KCH= KCB.KCH;