




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫實驗工作報告總結(jié)多篇
試驗內(nèi)容
1、數(shù)據(jù)表的建立
基本表《簡潔的》帶有主鍵
帶有外碼約束的(外碼來自其他表或者本表)
2、數(shù)據(jù)表的修改
添加刪除列
修改列屬性類型
添加刪除約束(約束名)
元組的添加,修改,刪除
刪除數(shù)據(jù)表
試驗過程
1、createtablestudent
(
snochar(9)primarykey,/*sno是主碼列級完整性約束條件*/
snamechar(20)unique,/*sname取唯一值*/
ssexchar(2),
sagesmallint,/*類型為smallint*/
sdeptchar(20)/*所在系*/
);
createtablecourse
(
cnochar(4)primarykey,/*列級完整性約束條件,cno是主碼*/
cnamechar(40),
cpnochar(4),/*cpno的含義是先行課*/
ccreditsmallint,
foreignkey(cpno)referencescourse(cno)
/*表級完整性約束條件,cpno是外碼,被參照表是course,被參照列是cno*/
);
createtablesc
(
snochar(9),
cnochar(4),
gradesmallint,
primarykey(sno,cno),
/*主碼有兩個屬性構(gòu)成,必需作為表級完整性進(jìn)行定義*/
foreignkey(sno)referencesstudent(sno),
/*表級完整性約束條件,sno是外碼,被參照表是student*/
foreignkey(cno)referencescourse(cno),
/*表級完整性約束條件,cno是外碼,被參照表示course*/
);
例1、createtables
(
cnovarchar(3),/*變長的字符串,輸入2個字符就是兩個字符不會補空格*/
snamevarchar(20),
statusint,
cityvarchar(20),
constraintpk_snoprimarykey(sno),/*約束條件的名字為pk_sno*/
);
createtablep
(
pnovarchar(3),
pnamevarchar(20),
colorvarchar(3),
weightint,
constraintpk_pnoprimarykey(pno),/*約束條件的名字是pk_pno*/
);
createtablej
(
jnovarchar(3),
jnamevarchar(20),
cityvarchar(20),
constraintpk_jnoprimarykey(jno)/*約束條件的名字為pk_jno*/
);
例2、createtablespj
(
snovarchar(3),/*第一個表中的主碼*/
pnovarchar(3),
jnovarchar(3),
qtyint,/*數(shù)量*/
constraintpk_spjprimarykey(sno,pno,jno),/*主碼由3個屬性組成*/
foreignkey(sno)referencess(sno),
/*表級完整性約束條件,sno是外碼,被參照表是s*/
foreignkey(pno)referencesp(pno),
/*表級完整性約束條件,pno是外碼,被參照表是p*/
foreignkey(jno)referencesj(jno),
/*表級完整性約束條件,jno是外碼,被參照表是j*/
);
2、數(shù)據(jù)表的更改
在s表中添加一個concat列
altertablesaddconcatvarchar(20)
在s表中刪除concat列
altertablesdropcolumnconcat
更改s表concat列的屬性把長度由20改為30
altertablesaltercolumnconcatvarchar(30)
聯(lián)系方式名字為concat修改屬性為唯一的屬性名為con_concat
altertablesaddconstraintcon_concatunique(concat)
刪除約束關(guān)系con_concat
altertablesdropconstraintcon_concat
/*插入一個元組*/
insertintosvalus(‘s1’,’精益’,20,’天津’)/*20不能寫成’20’*/
試驗中的問題的排解與總結(jié):
1、在創(chuàng)建spj時
有三個實體所以從3個實體中取主碼,還有一個數(shù)量屬性也要寫上
主碼由那3個主碼確定
2、更改一個數(shù)據(jù)庫中數(shù)據(jù)表時肯定要先使該數(shù)據(jù)庫處于正在使用狀態(tài)
3、constraint
是可選關(guān)鍵字,表示primarykey、notnull、unique、foreignkey或check約束定義的開頭。約束是特別屬性,用于強制數(shù)據(jù)完整性并可以為表及其列創(chuàng)建索引。
4、--go可以不加但是要留意挨次注:go--解釋提示錯誤
5、留意添加一個空元素用null
附sql備份
--創(chuàng)建一個數(shù)據(jù)庫student
createdatabasestudent
go
--在數(shù)據(jù)庫student中創(chuàng)建表studentcoursesc留意挨次
usestudent
----------------------------------------------------------------
createtablestudent
(
snochar(9)primarykey,/*sno是主碼列級完整性約束條件*/
snamechar(10)unique,/*sname取唯一值*/
ssexchar(2),
sagesmallint,/*類型為smallint*/
sdeptchar(20)/*所在系*/
);/*;要加*/
-----------
數(shù)據(jù)庫試驗總結(jié)【二】
我在sqlserver索引基礎(chǔ)學(xué)問系列中,第一篇就講了記錄數(shù)據(jù)的基本格式。那里主要講解的是,數(shù)據(jù)庫的最小讀存單元:數(shù)據(jù)頁。一個數(shù)據(jù)頁是8k大小。
對于數(shù)據(jù)庫來說,它不會每次有一個數(shù)據(jù)頁變化后,就存到硬盤。而是變化達(dá)到肯定數(shù)量級后才會作這個操作。這時候,數(shù)據(jù)庫并不是以數(shù)據(jù)頁來作為操作單元,而是以64k的數(shù)據(jù)(8個數(shù)據(jù)頁,一個區(qū))作為操作單元。
區(qū)是管理空間的基本單位。一個區(qū)是八個物理上連續(xù)的頁(即64kb)。這意味著sqlserver數(shù)據(jù)庫中每mb有16個區(qū)。
為了使空間安排更有效,sqlserver不會將全部區(qū)安排給包含少量數(shù)據(jù)的表。sqlserver有兩種類型的區(qū):
統(tǒng)一區(qū),由單個對象全部。區(qū)中的全部8頁只能由所屬對象使用。
混合區(qū),最多可由八個對象共享。區(qū)中八頁的每頁可由不同的對象全部。
通常從混合區(qū)向新表或索引安排頁。當(dāng)表或索引增長到8頁時,將變成使用統(tǒng)一區(qū)進(jìn)行后續(xù)安排。假如對現(xiàn)有表創(chuàng)建索引,并且該表包含的行足以在索引中生成8頁,則對該索引的全部安排都使用統(tǒng)一區(qū)進(jìn)行。
為何會這樣呢?
其實很簡潔:
讀或?qū)?kb的時間與讀或?qū)?4kb的時間幾乎相同。
在8kb到64kb范圍之內(nèi),單個磁盤i/o傳輸操作所花的時間主要是磁盤取數(shù)臂和讀/寫磁頭運動的時間。
因此,從數(shù)學(xué)上來講,當(dāng)需要傳輸64kb以上的sql數(shù)據(jù)時,
盡可能地執(zhí)行64kb磁盤傳輸是有益的,即分成數(shù)個64k的操作。
由于64kb傳輸基本上與8kb傳輸一樣快,而每次傳輸?shù)膕qlserver數(shù)據(jù)是8kb傳輸?shù)?8倍。
我們通過一個實例來看有and操作符時候的最常見的一種狀況。我們有下面一個表,
createtable[dbo].[member]([member_no][dbo].[numeric_id]identity(1,1)notnull,[lastname][dbo].[shortstring]notnull,[firstname][dbo].[shortstring]notnull,[middleinitial][dbo].[letter]null,[street][dbo].[shortstring]notnull,[city][dbo].[shortstring]notnull,[state_prov][dbo].[statecode]notnull,[country][dbo].[countrycode]notnull,[mail_code][dbo].[mailcode]notnull,[phone_no][dbo].[phonenumber]null,[photograph][image]null,[issue_dt][datetime]notnulldefault(getdate()),[expr_dt][datetime]notnulldefault(dateadd(year,1,getdate())),[region_no][dbo].[numeric_id]notnull,[corp_no][dbo].[numeric_id]null,[Pv_balance][money]nulldefault(0),[curr_balance][money]nulldefault(0),[member_code][dbo].[status_code]notnulldefault())
這個表具備下面的四個索引:
索引名細(xì)節(jié)索引的列
member_corporation_linknonclusteredlocatedonprimarycorp_no
member_identclustered,unique,primarykeylocatedonprimarymember_no
member_region_linknonclusteredlocatedonprimaryregion_no
memberfirstnamenonclusteredlocatedonprimaryfirstname
當(dāng)我們執(zhí)行下面的sql查詢時候,
selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwherem.firstnamelikek%andm.region_no6andm.member_no5000go
sqlserver會依據(jù)索引方式,優(yōu)化成下面方式來執(zhí)行。
selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelikek%andm.member_no5000)a,--這個查詢可以直接使用memberfirstname非聚集索引,而且這個非聚集索引掩蓋了全部查詢列--實際執(zhí)行時,只需要規(guī)律讀取3次
(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6)b
--這個查詢可以直接使用member_region_link非聚集索引,而且這個非聚集索引掩蓋了全部查詢列--實際執(zhí)行時,只需要規(guī)律讀取10次
wherea.member_no=b.member_no
不信,你可以看這兩個sql的執(zhí)行方案,以及規(guī)律讀信息,都是一樣的。
其實上面的sql,假如優(yōu)化成下面的方式,實際的規(guī)律讀消耗也是一樣的。為何sqlserver不會優(yōu)化成下面的方式。是由于and操作符優(yōu)化的另外一個原則。
1/26的數(shù)據(jù)和1/6的數(shù)據(jù)找交集的速度要比1/52的數(shù)據(jù)和1/3的數(shù)據(jù)找交集速度要慢。
selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelikek%--1/26數(shù)據(jù))a,
(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6andm.member_no5000--1/3*1/2數(shù)據(jù))bwherea.member_no=b.member_no
當(dāng)然,我們要學(xué)習(xí)sql如何優(yōu)化的話,就會用到查詢語句中的一個功能,指定查詢使用哪個索引來進(jìn)行。
比如下面的查詢語句
selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(0))wherem.firstnamelikek%andm.region_no6andm.member_no5000go
selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(1))wherem.firstnamelikek%andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(membercovering3))wherem.firstnamelikek%andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(memberfirstname,member_region_link))wherem.firstnamelikek%andm.region_no6andm.member_no5000go
這里index計算符可以是0,1,指定的一個或者多個索引名字。對于0,1的意義如下:
假如存在聚集索引,則index(0)強制執(zhí)行聚集索引掃描,index(1)強制執(zhí)行聚集索引掃描或查找(使用性能最高的一種)。
假如不存在聚集索引,則index(0)強制執(zhí)行表掃描,index(1)被解釋為錯誤。
總結(jié)學(xué)問點:
簡潔來說,我們可以這么理解:sqlserver對于每一條查詢語句。會依據(jù)實際索引狀況(sysindexes系統(tǒng)表中存儲這些信息),分析每種組合可能的成本。然后選擇它認(rèn)為成本最小的一種。作為它實際執(zhí)行的方案。
成本代價計算的一個主要組成部分是規(guī)律i/o的數(shù)量,特殊是對于單表的查詢。
and操作要滿意全部條件,這樣,常常會要求對幾個數(shù)據(jù)集作交集。數(shù)據(jù)集越小,數(shù)據(jù)集的交集計算越節(jié)約成本。
的項目中,竟然消失了濫用聚集索引的問題??磥頉]有培訓(xùn)最最基礎(chǔ)的索引的意義,代價,使用場景,是一個特別大的失誤。這篇博客就是從這個角度來排列索引的基礎(chǔ)學(xué)問。
使用索引的意義
索引在數(shù)據(jù)庫中的作用類似于名目在書籍中的作用,用來提高查找信息的速度。
使用索引查找數(shù)據(jù),無需對整表進(jìn)行掃描,可以快速找到所需數(shù)據(jù)。
使用索引的代價
索引需要占用數(shù)據(jù)表以外的物理存儲空間。
創(chuàng)建索引和維護(hù)索引要花費肯定的時間。
當(dāng)對表進(jìn)行更新操作時,索引需要被重建,這樣降低了數(shù)據(jù)的維護(hù)速度。
創(chuàng)建索引的列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)相關(guān)課件
- 中醫(yī)婦科護(hù)理課件
- 大學(xué)生職業(yè)規(guī)劃大賽《書法專業(yè)》生涯發(fā)展展示
- 自媒體賬號內(nèi)容合作合同(版)
- 生豬養(yǎng)殖合作協(xié)議
- ??齐娮有畔⒐こ陶n件
- 項目合同協(xié)議書模板
- 二手房屋帶車庫交易合同樣本
- 軟裝一體化裝修合同模板
- 西藏日喀則市南木林一中學(xué)2025屆普通中考第二次適應(yīng)性檢測試題數(shù)學(xué)試題含解析
- 2025中煤鄂爾多斯能源化工有限公司高校畢業(yè)生招聘98人筆試參考題庫附帶答案詳解
- 導(dǎo)游知識培訓(xùn)課件
- 眼科“一科一品”特色護(hù)理服務(wù)
- 銀行內(nèi)控案防警示教育
- 初中勞動測試題及答案
- 基因指導(dǎo)蛋白質(zhì)的合成課件-高一下學(xué)期生物人教版必修22
- 2024-2025學(xué)年湖南省長沙市八年級(上)期末物理試卷(含解析)
- 2025-2030中國鍍鋅鋼板行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 大模型備案-落實算法安全主體責(zé)任基本情況
- 2025《四川省建設(shè)工程施工總包合同》示范文本
- 施工入場考試題及答案
評論
0/150
提交評論