1. 主鍵 超鍵 候選鍵 外鍵
主 鍵:數(shù)據(jù)庫表中對儲(chǔ)存數(shù)據(jù)對象予以唯一和完整標(biāo)識的數(shù)據(jù)列或?qū)傩缘慕M合浇衬。一個(gè)數(shù)據(jù)列只能有一個(gè)主鍵,且主鍵的取值不能缺失缨该,即不能為空值(Null)。
超 鍵:在關(guān)系中能唯一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵。一個(gè)屬性可以為作為一個(gè)超鍵旷偿,多個(gè)屬性組合在一起也可以作為一個(gè)超鍵。超鍵包含候選鍵和主鍵爆侣。
候選鍵:是最小超鍵萍程,即沒有冗余元素的超鍵。
外 鍵:在一個(gè)表中存在的另一個(gè)表的主鍵稱此表的外鍵兔仰。
2.數(shù)據(jù)庫事務(wù)的四個(gè)特性及含義
數(shù)據(jù)庫事務(wù)transanction正確執(zhí)行的四個(gè)基本要素茫负。ACID,原子性(Atomicity)、一致性(Correspondence)乎赴、隔離性(Isolation)忍法、持久性(Durability)。
原子性:整個(gè)事務(wù)中的所有操作榕吼,要么全部完成饿序,要么全部不完成,不可能停滯在中間某個(gè)環(huán)節(jié)羹蚣。事務(wù)在執(zhí)行過程中發(fā)生錯(cuò)誤原探,會(huì)被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來沒有執(zhí)行過一樣顽素。
一致性:在事務(wù)開始之前和事務(wù)結(jié)束以后咽弦,數(shù)據(jù)庫的完整性約束沒有被破壞。
隔離性:隔離狀態(tài)執(zhí)行事務(wù)胁出,使它們好像是系統(tǒng)在給定時(shí)間內(nèi)執(zhí)行的唯一操作离唬。如果有兩個(gè)事務(wù),運(yùn)行在相同的時(shí)間內(nèi)划鸽,執(zhí)行 相同的功能输莺,事務(wù)的隔離性將確保每一事務(wù)在系統(tǒng)中認(rèn)為只有該事務(wù)在使用系統(tǒng)。這種屬性有時(shí)稱為串行化裸诽,為了防止事務(wù)操作間的混淆嫂用,必須串行化或序列化請 求,使得在同一時(shí)間僅有一個(gè)請求用于同一數(shù)據(jù)丈冬。
持久性:在事務(wù)完成以后嘱函,該事務(wù)所對數(shù)據(jù)庫所作的更改便持久的保存在數(shù)據(jù)庫之中,并不會(huì)被回滾埂蕊。
實(shí)現(xiàn)ACID的方式WAL(Write-Ahead Logging)預(yù)寫式日志 和?Shadow paging 影子分頁技術(shù)
WAL:在數(shù)據(jù)寫入到數(shù)據(jù)庫之前往弓,先寫入到日志.再將日志記錄變更到存儲(chǔ)器中疏唾。
SQL Server修改數(shù)據(jù)的步驟
1.在SQL Server的緩沖區(qū)的日志中寫入”Begin Tran”記錄
2.在SQL Server的緩沖區(qū)的日志頁寫入要修改的信息
3.在SQL Server的緩沖區(qū)將要修改的數(shù)據(jù)寫入數(shù)據(jù)頁
4.在SQL Server的緩沖區(qū)的日志中寫入”Commit”記錄
5.將緩沖區(qū)的日志寫入日志文件
6.發(fā)送確認(rèn)信息到客戶端(SMSS,ODBC等)
7.將緩沖區(qū)內(nèi)的頁寫入到磁盤
而將緩沖區(qū)的數(shù)據(jù)寫入到磁盤的過程又分為:Lazy Writer、CheckPoint
3函似、SQL 約束有哪幾種
NOT NULL: 用于控制字段的內(nèi)容一定不能為空(NULL)槐脏。
UNIQUE: 控件字段內(nèi)容不能重復(fù),一個(gè)表允許有多個(gè) Unique 約束撇寞。
PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復(fù)顿天,但它在一個(gè)表只允許出現(xiàn)一個(gè)。
FOREIGN KEY: 用于預(yù)防破壞表之間連接的動(dòng)作蔑担,也能防止非法數(shù)據(jù)插入外鍵列牌废,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
CHECK: 用于控制字段的值范圍啤握。
DEFAULT: 用于設(shè)置新記錄的默認(rèn)值鸟缕。
4. 關(guān)系數(shù)據(jù)庫的范式
第一范式(1NF):所謂第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值排抬,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性叁扫。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個(gè)新的實(shí)體畜埋,新的實(shí)體由重復(fù)的屬性構(gòu)成莫绣,新實(shí)體與原實(shí)體之間為一對多關(guān)系。在第一范式(1NF)中表的每一行只包含一個(gè)實(shí)例的信息悠鞍。
第二范式(2NF):第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的对室,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分咖祭。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列掩宜,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識。
第三范式(3NF):滿足第三范式(3NF)必須先滿足第二范式(2NF)么翰。簡而言之牺汤,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。
5浩嫌、數(shù)據(jù)庫運(yùn)行于哪種狀態(tài)下可以防止數(shù)據(jù)的丟失檐迟?
在archivelog mode只要其歸檔日志文件不丟失,就可以有效地防止數(shù)據(jù)丟失码耐。
6追迟、通過JDBC訪問數(shù)據(jù)庫包含下面哪幾步?
1. 加載JDBC驅(qū)動(dòng)程序:
2. 提供JDBC連接的URL
3. 創(chuàng)建數(shù)據(jù)庫的連接
4. 創(chuàng)建一個(gè)Statement
5. 執(zhí)行SQL語句
6. 處理結(jié)果
7. 關(guān)閉JDBC對象
7骚腥、解釋什么是死鎖敦间,如何解決Oracle中的死鎖?
簡言之就是存在加了鎖而沒有解鎖,可能是使用鎖沒有提交或者回滾事務(wù)廓块,如果是表級鎖則不能操作表厢绝,客戶端處于等在狀態(tài),如果是行級鎖則不能操作鎖定行
解決辦法:
1). 查找出被鎖的表
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
2). 殺進(jìn)程中的會(huì)話
alter system kill session "sid,serial#";
8. 簡述oracle中 dml带猴、ddl昔汉、dcl的使用
Dml 數(shù)據(jù)操縱語言,如select浓利、update挤庇、delete钞速,insert
Ddl 數(shù)據(jù)定義語言贷掖,如create table 、drop table 等等
Dcl 數(shù)據(jù)控制語言渴语, 如 commit苹威、 rollback、grant驾凶、 invoke等
9. 說說oracle中的經(jīng)常使用到得函數(shù)
Length 長度牙甫、 lower 小寫、upper 大寫调违, to_date 轉(zhuǎn)化日期窟哺, to_char轉(zhuǎn)化字符
Ltrim 去左邊空格、 rtrim去右邊空格技肩,substr取字串且轨,add_month增加或者減掉月份、to_number轉(zhuǎn)變?yōu)閿?shù)字
10. 怎樣創(chuàng)建一個(gè)一個(gè)索引,索引使用的原則,有什么優(yōu)點(diǎn)和缺點(diǎn)
創(chuàng)建標(biāo)準(zhǔn)索引:
CREATE? INDEX 索引名 ON 表名 (列名)? TABLESPACE 表空間名;
創(chuàng)建唯一索引:
CREATE unique INDEX 索引名 ON 表名 (列名)? TABLESPACE 表空間名;
創(chuàng)建組合索引:
CREATE INDEX 索引名 ON 表名 (列名1,列名2)? TABLESPACE 表空間名;
創(chuàng)建反向鍵索引:
CREATE INDEX 索引名 ON 表名 (列名) reverse TABLESPACE 表空間名;
11虚婿、?在java種怎樣調(diào)用oracle存儲(chǔ)過程;
{ call test_a(?,?) } 有出參則需要注冊出參
{? = call tpackage.test_b(?) } 返回游標(biāo) 注冊出參為游標(biāo)
12旋奢、?rowid, rownum的定義
1. rowid和rownum都是虛列
2. rowid是物理地址,用于定位oracle中具體數(shù)據(jù)的物理存儲(chǔ)位置
3. rownum則是sql的輸出結(jié)果排序然痊,從下面的例子可以看出其中的區(qū)別至朗。