第一篇:文管二級(jí)Access數(shù)據(jù)庫(kù)SQL語(yǔ)句詳解
第一講
上面是Access數(shù)據(jù)庫(kù)中所涉及的兩個(gè)表
下面我們介紹Access數(shù)據(jù)庫(kù)中用于查詢數(shù)據(jù)的語(yǔ)句:
1、SELECT 語(yǔ)句
SELECT語(yǔ)句是數(shù)據(jù)庫(kù)中使用頻率最高的語(yǔ)句,就是我們通常說(shuō)的查詢語(yǔ)句。
其格式如下:
SELECT+需要查詢的對(duì)象+FROM+表名+WHERE+條件。
例
1、查詢上表中所有男性職工的“工號(hào)”“姓名”“部門”和“應(yīng)發(fā)工資”。SELECT 工號(hào),姓名,部門,應(yīng)發(fā)工資 FROM rsda where 性別=”男”
注意事項(xiàng):
1):寫查詢語(yǔ)句時(shí)英文部分不區(qū)分字母大小寫。
2):除漢字外,所有字符標(biāo)點(diǎn)和數(shù)字都必須使用半角英文狀態(tài)下輸入。
3):SELECT查詢語(yǔ)句中如果沒(méi)有條件限制,“WHERE+條件”部分可以省略。
4):需要查詢的項(xiàng)目在表中必須存在。
5):如果要輸出表中所有項(xiàng)目可以用“*”代替。
例如:查詢上表中所有人員的姓名,出生年月及部門
SELECT 姓名,出生年月,部門 FROM rsda;
顯示表中的所有信息
Select * from rsda;顯示表中所有女性職工的信息 Select * from rsda where 性別=”女”;
要求:查詢表中所有“未婚”男性職工的信息。
Select * from rsda where(性別=”男”)and(婚否=no);有兩個(gè)知識(shí)點(diǎn)需要掌握:
1):運(yùn)算符:
A、算術(shù)運(yùn)算符:加(+)、減(-)、乘(*)、除(/)、和取模(%)。算術(shù)運(yùn)算符可以完成對(duì)兩個(gè)表達(dá)式的數(shù)學(xué)運(yùn)算。
B:賦值運(yùn)算符:等號(hào)(=)
C:比較運(yùn)算符:等于(=)、大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、不等于(<>或!=)、不小于(!<)、不大于(!>).D:邏輯運(yùn)算符:與(and)、或(or)和非(not)。對(duì)于AND運(yùn)算,只有當(dāng)運(yùn)算符兩端的表達(dá)式的值都為真時(shí),結(jié)果才返回真,只要有一股表達(dá)式的值為假,結(jié)果就是假;對(duì)于or運(yùn)算,只要運(yùn)算符兩端的表達(dá)式的值有一個(gè)位真,結(jié)果就返回真,只有兩個(gè)表達(dá)式的值都是假,結(jié)果才為假;NOT運(yùn)算是對(duì)表達(dá)式的值取反。
2):數(shù)據(jù)類型:文本、備注、數(shù)字、日期/時(shí)間、貨幣、自動(dòng)編號(hào)、是/否、超鏈接等。本例中“婚否”選項(xiàng),使用的是“是/否”類型,即我們常說(shuō)的布爾型,判斷的時(shí)候“是”用yes表示,“否”用no表示。
Select語(yǔ)句中各個(gè)參數(shù):
1)、top 如:查詢前3條記錄的工號(hào),姓名,性別 Select top 3 工號(hào),姓名,性別 from rsda;顯示的結(jié)果是前3條記錄。
查詢數(shù)據(jù)表中前50%人員的信息
Select top 50 percent * from rsda;顯示的結(jié)果是表中前50%人員的信息 2):DISTINCT
如:查詢所有記錄的“性別”字段,并去掉重復(fù)值 Select distinct 性別 from rsda;3):別名
如:查詢所有記錄的工號(hào)(別名為number)、姓名(別名為name)、出生年月(別名為birthday)字段
Select number=工號(hào),姓名 as name ,出生年月 birthday from rsda;需要注意的是,在ACCESS中使用 “列名 AS 列別名”形式。4):年齡
如:查詢表中每個(gè)人的年齡。
Select 姓名,(year(now())-year(出生年月))as 年齡 from rsda;now()函數(shù)返回當(dāng)前日期,year()獲取年份。其他函數(shù)有abs(絕對(duì)值)、left(從左側(cè)截取字符串)、right(從右側(cè)截取字符串)、len(獲取字符串的長(zhǎng)度)、ltrim和rtrim(去掉字符串前面或后面的空格)、day(返回日期)、month(返回月份)、year(返回年份)、weekday(返回星期)、hour(返回小時(shí))、date(返回系統(tǒng)日期)、sum(求和)、avg(求平均值)、count(統(tǒng)計(jì)個(gè)數(shù))、max(求最大值)、min(求最小值)等等。
如:顯示表中應(yīng)發(fā)工資的最大值
Select max(應(yīng)發(fā)工資)as 工資 from rsda; 如:查詢表中各人員工號(hào)的前兩位
Select left(工號(hào),2)as 工號(hào)前兩位 from rsda; 如:統(tǒng)計(jì)所有男性職工的人數(shù)
Select count(*)from rsda where 性別=”男”
如:顯示表中應(yīng)發(fā)工資最高的人員信息
select * from rsda where 應(yīng)發(fā)工資>=(select max(應(yīng)發(fā)工資)from rsda);上面是個(gè)嵌套查詢語(yǔ)句
2、into語(yǔ)句
如:創(chuàng)建一個(gè)新表rrr來(lái)顯示上表中前五名人員的信息。
Select top 5 * into rrr from rsda;
第二講
一、from語(yǔ)句
from子句用于指定要查詢的表。
例如:查詢表rsda表和kcm表中的數(shù)據(jù)。
SELECT rsda.編號(hào),rsda.工號(hào),姓名,性別,出生年月,kcm.課程名 from rsda,kcm where rsda.工號(hào)=kcm.工號(hào)
注意:本例子是關(guān)于表間查詢的。表中有共同列的項(xiàng)目必須標(biāo)注表名,格式為“表名”+“.”+“列號(hào)”。當(dāng)兩個(gè)或多個(gè)數(shù)據(jù)表中有共同名稱的字段時(shí)必須使用上面的格式,否則由于系統(tǒng)不清楚應(yīng)該使用哪個(gè)數(shù)據(jù)表中的同名字段,將無(wú)法執(zhí)行此查詢,會(huì)提示錯(cuò)誤。上面例子也可以使用聯(lián)合查詢形式完成,程序如下:
SELECT rsda.編號(hào),rsda.工號(hào),姓名,性別,出生年月,kcm.課程名 from rsda inner join kcm on rsda.工號(hào)=kcm.工號(hào)
練習(xí):顯示擔(dān)任“計(jì)算機(jī)文化基礎(chǔ)”教學(xué)人員的工號(hào),姓名,性別,婚否,基本工資及部門。
二、where語(yǔ)句
where子句是條件子句,用來(lái)限定查詢的內(nèi)容。在where語(yǔ)句中是允許使用比較運(yùn)算符如下:
等于、大于、大于等于、小于、小于等于、不等于、不大于、不小于、不等于。例如:查詢r(jià)sda表中應(yīng)發(fā)工資小于1500的人員信息。
SELECT * from rsda where 應(yīng)發(fā)工資<1500 練習(xí):顯示表中基本工資不大于1200的工號(hào),姓名,出生年月及基本工資。邏輯表達(dá)式如下:
邏輯反、邏輯與、邏輯或。
例如:查詢年齡小于39歲未婚男士的部門信息
SELECT 姓名,部門 from rsda where(year(now())-year(出生年月)<39)and(婚否=no)and(性別=”男”)練習(xí):顯示當(dāng)前未過(guò)生日的已婚人員信息。
三、between關(guān)鍵字
例如:查詢表rsda中應(yīng)發(fā)工資在1000到1500之間的人員信息 SELECT * from rsda where 應(yīng)發(fā)工資 between 1000 and 1500 練習(xí):顯示表中基本工資在800到1200之間人員的姓名,部門及基本工資。
四、in 關(guān)鍵字
使用in關(guān)鍵字可以確定給定的值是否與子查詢或列表中的值相匹配。例如:顯示教務(wù)處、學(xué)生處和總務(wù)處已婚男士人員的補(bǔ)貼信息
SELECT 姓名,補(bǔ)貼 from rsda where(性別=“男”)and(婚否=-1)and(部門 in(“教務(wù)處”,“學(xué)生處”,“總務(wù)處”))練習(xí):查詢表中總務(wù)處和基礎(chǔ)部未婚女性職工的人數(shù)。
五、like關(guān)鍵字
使用like關(guān)鍵字可以確定給定的字符串是否與指定的模式匹配。模式可以包含常規(guī)字符和通配符字符。通過(guò)模式的匹配,達(dá)到模糊查詢的效果。
例如:查詢表中張姓人員的工號(hào),姓名,性別,部門及出生年月
SELECT 工號(hào),姓名,性別,部門,出生年月 from rsda where 姓名 like “張*”
練習(xí):查詢工號(hào)以11開頭的所有人員信息。
六、group by語(yǔ)句
在group by語(yǔ)句中在選擇列表內(nèi)定義的列的別名不能用于指定分組列,此外,select后面的每一列數(shù)據(jù)除了出現(xiàn)在統(tǒng)計(jì)函數(shù)中的列外,都必須在group by子句中應(yīng)用。例如:在表rsda表中按性別進(jìn)行分組,查詢相應(yīng)的人數(shù)。
SELECT 性別,count(性別)as 人數(shù) from rsda group by 性別 練習(xí):統(tǒng)計(jì)已婚和未婚的人數(shù),并按婚否進(jìn)行分組。
七、having語(yǔ)句
having語(yǔ)句為分組或集合指定搜索條件,通常與group by語(yǔ)句一起使用,說(shuō)明:當(dāng)having 與group by all一起使用時(shí),having 語(yǔ)句替代了all。在having語(yǔ)句中不能使用text,image,ntext數(shù)據(jù)類型。
HAVING 子句對(duì) GROUP BY 子句設(shè)置條件的方式與 WHERE 子句和 SELECT 語(yǔ)句交互的方式類似。WHERE 子句搜索條件在進(jìn)行分組操作之前應(yīng)用;而 HAVING 搜索條件在進(jìn)行分組操作之后應(yīng)用。HAVING 語(yǔ)法與 WHERE 語(yǔ)法類似,但 HAVING 可以包含聚合函數(shù)。HAVING 子句可以引用選擇列表中出現(xiàn)的任意項(xiàng)。例如:在表中查詢部門中有兩個(gè)以上人員的部門信息
SELECT 部門,count(部門)as 部門人數(shù) from rsda group by 部門 having count(部門)>=2 練習(xí):顯示表中有兩個(gè)以上補(bǔ)貼相同的人員信息。
八、order by語(yǔ)句
order by語(yǔ)句用于指定對(duì)查詢結(jié)果排序。如果在select中同時(shí)指定了top,則order by語(yǔ)句無(wú)效。在排序過(guò)程中ASC表示按遞增順序排列,即從最低值到最高值對(duì)指定列中的值進(jìn)行排序。是系統(tǒng)默認(rèn)的排列方式,書寫語(yǔ)句時(shí)可省略。DESC表示按遞減順序排列,即從最高值到最低值對(duì)指定列中的值進(jìn)行排序。需要注意的是,空值被視為最低值。例如:顯示表中基本工資為1000的人員信息,并按工號(hào)降序排列。SELECT * from rsda where 基本工資=1000 order by 工號(hào) desc;練習(xí):查詢補(bǔ)貼為500的工號(hào),姓名,部門,并按工號(hào)升序排列。
九、聯(lián)合查詢。
聯(lián)合查詢是指將兩個(gè)或兩個(gè)以上的select語(yǔ)句通過(guò)union運(yùn)算符連接起來(lái)的查詢,聯(lián)合查詢可以將兩個(gè)或者更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中所有查詢的全部行。
使用union組合兩個(gè)查詢的結(jié)果集的兩個(gè)基本規(guī)則是:
1、所有查詢中的列數(shù)和列是順序必須相同。
2、數(shù)據(jù)類型必須兼容。
十、嵌套查詢
嵌套查詢主要用于復(fù)雜的查詢。在SQL語(yǔ)言中,一個(gè)select---from---where語(yǔ)句稱為一個(gè)查詢塊,將一個(gè)查詢塊嵌套在另外一個(gè)查詢塊的where子句或having短語(yǔ)的條件中的查詢稱為嵌套查詢。
嵌套查詢中上層查詢塊稱為外層查詢或父查詢,下層查詢塊稱為內(nèi)查詢或子查詢。SQL語(yǔ)言允許多層查詢嵌套,但是在子查詢中不允許出現(xiàn)order by語(yǔ)句,order by語(yǔ)句只能用在最外層的查詢塊中。
嵌套查詢一般按照由里向外的方法處理,即先處理最內(nèi)層的子查詢,然后處理一層一層的向上處理,直到最外層查詢塊。
在某些嵌套查詢中where之后還可以使用any和all兩個(gè)關(guān)鍵字。Any表示子查詢結(jié)果中的某個(gè)值,而all表示子查詢結(jié)果中的所有值。這兩個(gè)關(guān)鍵字可以和算術(shù)運(yùn)算符在一
起構(gòu)成各種查詢條件,如>all表示大于子查詢中的所有值。
例如:查詢所授兩門以上科目的人員基本信息。
SELECT * from rsda where 工號(hào)=any(select 工號(hào) from kcm group by 工號(hào) having count(工號(hào))>=2)練習(xí):顯示表中應(yīng)發(fā)工資最高的人員信息
十一、插入函數(shù)
Insert語(yǔ)句用于向數(shù)據(jù)庫(kù)表或者視圖中加入一行數(shù)據(jù)。
例如:向表rsda中插入一行數(shù)據(jù),只包含工號(hào),姓名,婚否。insert into rsda(工號(hào),姓名,婚否)values(“12039”,“王五”,“-1”)例如:向rsda表中插入一行數(shù)據(jù),所有字段都要給出相應(yīng)的值。
insert into rsda
values(“13”,“12049”,“趙六”,“男”,“1999-12-12”,“-1”,“學(xué)生處”,“2000”,“850”,“60”,“2790”,“")
例如:向表rsda中插入一批數(shù)據(jù),數(shù)據(jù)來(lái)源于另外一個(gè)已有的數(shù)據(jù)表rsda1.Insert into rsda(工號(hào),姓名,性別,出生年月)select工號(hào),姓名,性別,出生年月from rsda1;如果所追加的表不存在請(qǐng)用下面的格式:
Select+所要添加的項(xiàng)目+into+新表名+from+需要查詢的表名+where+條件
例如:要求將所有男性職工的記錄追加到名為“追加表”的表中,只需要其中的4個(gè)字段:姓名、性別、工資、補(bǔ)貼。
SELECT 工號(hào),姓名,性別,部門 into 追加表 from rsda where 性別=”男“
十二、更新數(shù)據(jù)
Update語(yǔ)句用于修改數(shù)據(jù)庫(kù)表中特定記錄或者字段的數(shù)據(jù)。
例如:修改劉龍強(qiáng)的工號(hào)為11027,出生年月為1978年1月3日。update rsda set 工號(hào)=”11027“,出生年月=”1978-1-3“ where 姓名=”劉龍強(qiáng)“ 練習(xí):更新工號(hào)為12009的員工教師課程為“數(shù)據(jù)庫(kù)” 例如:更新表rsda中所有人員為已婚。update rsda set 婚否=-1;
十三、delete語(yǔ)句
Delete語(yǔ)句用于刪除數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。
例如:刪除表中張三的所有信息。delete from rsda where 姓名=”張三" 當(dāng)不指定條件時(shí),將刪除表中的所有行數(shù)據(jù)。要清除表中的所有數(shù)據(jù),只留下數(shù)據(jù)表的定義還可以使用truncate語(yǔ)句。與delete語(yǔ)句相比,通常truncate執(zhí)行速度快,因?yàn)樗遣挥涗浫罩镜膭h除表中全部數(shù)據(jù)的操作。
如:delete from rsda
Truncate table rsda Truncate table 表名 速度快,而且效率高,因?yàn)?
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語(yǔ)句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。
DELETE 語(yǔ)句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。TRUNCATE TABLE 通過(guò)釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁(yè)來(lái)刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁(yè)的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。新行標(biāo)識(shí)所用的計(jì)數(shù)值重置為該列的種子。如果想保留標(biāo)識(shí)計(jì)數(shù)值,請(qǐng)改用 DELETE。如果要?jiǎng)h除表定義及其數(shù)據(jù),請(qǐng)使用 DROP TABLE 語(yǔ)句。
DROP TABLE table_name 表示刪除表的全部信息。
表所有者可以除去任何數(shù)據(jù)庫(kù)內(nèi)的表。除去表時(shí),表上的規(guī)則或默認(rèn)值將解除綁定,任何與表關(guān)聯(lián)的約束或觸發(fā)器將自動(dòng)除去。如果重新創(chuàng)建表,必須重新綁定適當(dāng)?shù)囊?guī)則和默認(rèn)值,重新創(chuàng)建任何觸發(fā)器并添加必要的約束。如果刪除表內(nèi)的所有行(DELETE tablename)或使用 TRUNCATE TABLE 語(yǔ)句,則表將一直存在到被除去。
課后練習(xí):
1.要求:列出rsda數(shù)據(jù)表中部門為“教務(wù)處”的女性職工的工號(hào),姓名,性別和部門。Select 工號(hào),姓名,性別,部門 from rsda where(部門=”教務(wù)處”)and(性別=”女”)2.顯示基本工資的最小值和最大值,并將結(jié)果分別賦給變量minjbgz、maxjbgz。Select min(基本工資)as minjbgz,max(基本工資)as maxjbgz from rsda 顯示“基礎(chǔ)部”每位老師所講授的所有課程名。Select 姓名,課程名 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(部門=”基礎(chǔ)部”)顯示所有姓張的人員信息。Select * from rsda where 姓名 like “張*” 物理刪除rsda數(shù)據(jù)表中部門為“基礎(chǔ)部”的所有男性職工的記錄。Delete from rsda where(部門=”基礎(chǔ)部”)and(性別=”男”)統(tǒng)計(jì)每位教師講授的課程數(shù)目。SELECT 姓名,count(課程名)as 課程數(shù)目 from rsda,kcm where rsda.工號(hào)=kcm.工號(hào) group by 姓名
列出rsda數(shù)據(jù)表中部門為“總務(wù)處”和“學(xué)生處”的所有男性職工的信息。Select * from rsda where(部門 in(“總務(wù)處”,”學(xué)生處”))and(性別=”男”)按照“出生年月”升序形式顯示所有人員的信息。Select * from rsda order by 出生年月
計(jì)算補(bǔ)貼的平均值、公積金的平均值,并將結(jié)果分別賦給變量rjbt、rjgjj。Select avg(補(bǔ)貼)as rjbt,avg(公積金)as rjgjj from rsda
10.11.顯示講課教師中年齡最大的教師的姓名和性別。Select 姓名,性別 from rsda,kcm where 出生年月=any(select max(出生年月)from rsda)列出rsda數(shù)據(jù)表中部門為“基礎(chǔ)部”的男性職工的工號(hào),姓名,性別和部門。Select 工號(hào),姓名,性別,部門 from rsda where(部門=”基礎(chǔ)部”)and(性別=”男”)按照“基本工資”降序形式顯示所有人員的信息。Select * from rsda order by 基本工資 desc 13.14.統(tǒng)計(jì)男教工中基本工資超過(guò)1000元的人數(shù),并將結(jié)果賦給變量num。select count(基本工資)as num from where(基本工資>1000)and(性別=”男”)統(tǒng)計(jì)講授“計(jì)算機(jī)文化基礎(chǔ)實(shí)驗(yàn)”課程的教師中“補(bǔ)貼”一項(xiàng)的最高值,并將結(jié)果賦給變量A57(或者新字段A57)。Select max(補(bǔ)貼)as A57 from 3.4.5.6.7.8.9.12.rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(課程名=”計(jì)算機(jī)文化基礎(chǔ)實(shí)驗(yàn)”).15.要求:顯示所有本年度已經(jīng)過(guò)完生日(不含當(dāng)日)的人員信息。Select * from rsda where(month(date())>month(出生年月))or((month(date())=month(出生年月))and(day(date())>day(出生年月)))要求:為部門是“總務(wù)處”的職工每人增加15%的補(bǔ)貼(補(bǔ)貼=補(bǔ)貼*1.15)。update rsda set 補(bǔ)貼=補(bǔ)貼*1.15 where 部門=”總務(wù)處” 計(jì)算部門為“基礎(chǔ)部”、補(bǔ)貼不足300元的人員的基本工資的平均值。Select avg(基本工資)from rsda where(部門=”基礎(chǔ)部”)and(補(bǔ)貼<300)計(jì)算并替換每一條記錄中的“補(bǔ)貼”字段(補(bǔ)貼=基本工資*0.05)。update rsda set 補(bǔ)貼=基本工資*0.05 19.顯示應(yīng)發(fā)工資的最小值和最大值,并將結(jié)果分別賦給變量minyfgz、maxyfgz。Select min(應(yīng)發(fā)工資)as minyfgz,max(應(yīng)發(fā)工資)as maxyfgz from 20.21.rsda 按照“公積金”升序形式顯示所有人員的信息。Select * from rsda order by 公積金
統(tǒng)計(jì)30歲(不含30歲)以上的老師各自講授的課程數(shù)目。SELECT 姓名,COUNT(課程名)as 課程數(shù)目 FROM kcm INNER JOIN rsda ON Kcm.工號(hào) = Rsda.工號(hào) WHERE(year(date())-year(出生年月))>= 30 GROUP BY 姓名
或者SELECT 姓名,COUNT(課程名)as 課程數(shù)目 FROM rsda, kcm
where((year(date())-year(出生年月))>= 30)and(Kcm.工號(hào) = Rsda.工號(hào))GROUP BY 姓名
16.17.18.第三講 SQL語(yǔ)句的格式總結(jié)
一、Select語(yǔ)句
SELECT+需要查詢的對(duì)象+FROM+表名+WHERE+條件。
Select語(yǔ)句中的參數(shù):
1.Top 顯示結(jié)果的前幾條記錄
select+Top+數(shù)字+from+表名+WHERE+條件。
顯示結(jié)果的前百分之幾的記錄
select+Top+數(shù)字+percent+from+表名+WHERE+條件。
2.Distinct 在顯示的結(jié)果中去掉重復(fù)值
3.As 給相應(yīng)的列名賦予一個(gè)新的名字,或者給相應(yīng)的字段創(chuàng)建一個(gè)新名字。
select+原列名+as+新列名+from+表名+WHERE+條件。
函數(shù)計(jì)算的結(jié)果+as+新名稱(如:max(基本工資)as 最大工資)
4.函數(shù)的使用
1)Now()返回當(dāng)前的系統(tǒng)時(shí)間,包含年、月、日、時(shí)、分、秒 2)Date()返回當(dāng)前系統(tǒng)日期,包含年、月、日 3)Abs(參數(shù))取數(shù)值的絕對(duì)值
4)Left(列名+,+數(shù)字)從左側(cè)截取相應(yīng)長(zhǎng)度的字符串(如:left
(工號(hào),2)=11(工號(hào) like “11*”)
顯示工號(hào)的前兩位字符)
5)right(列名+,+數(shù)字)從右側(cè)截取相應(yīng)長(zhǎng)度的字符串(如:right(工號(hào),2)
顯示工號(hào)的后兩位字符)
6)len(列名)返回滿足條件的列中字符串的長(zhǎng)度(如:len(工號(hào)))顯示工號(hào)有幾個(gè)字符組成
7)day(日期)返回日期中的天(如:day(date())顯示當(dāng)前系統(tǒng)的日)
8)month(日期)返回日期中的月(如:month(date())顯示當(dāng)前系統(tǒng)的月)
9)year(日期)返回日期中的年(如:year(出身年月)顯示出生的年份)
10)sum(列名)對(duì)列中滿足條件的記錄進(jìn)行求和(如:sum(基本工資)統(tǒng)計(jì)滿足條件的基本工資的總和)
11)avg(列名)對(duì)列中滿足條件的記錄求平均值(如:avg(應(yīng)發(fā)工資)統(tǒng)計(jì)滿足條件的應(yīng)發(fā)工資的平均值)
12)count(列名)統(tǒng)計(jì)個(gè)數(shù)(如count(課程名)統(tǒng)計(jì)滿足條件的課程數(shù)目)有時(shí)候要和group by 及having 一起使用。
13)Max(參數(shù))求滿足條件的最大值(如:max(應(yīng)發(fā)工資)顯示應(yīng)發(fā)工資的最大值)
14)Min(參數(shù))求滿足條件的最小值(如:min(應(yīng)發(fā)工資)顯示應(yīng)發(fā)工資的最大值)
5.Into 把數(shù)據(jù)追加到一個(gè)表中,如果沒(méi)有相應(yīng)的表,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)滿足條件的表。
在多表之間查詢的時(shí)候一定要在表中有共同列名的前面加上”表名+.”。格式為“表名”+“.”+“列名”。如果表中獨(dú)有的列,前面可以不加表名。隱含的條件是必須共同列中的數(shù)據(jù)相同(如:rsda.工號(hào)=kcm.工號(hào))。
在條件中不能直接使用函數(shù)。(如:where 基本工資>=max(基本工資))
在條件語(yǔ)句中需要判斷多個(gè)條件時(shí)必須使用邏輯表達(dá)式(如:()and())
6.Between關(guān)鍵字
滿足條件的某區(qū)間的內(nèi)容
Between+數(shù)值1+and+數(shù)值2 7.In關(guān)鍵字
使用in關(guān)鍵字可以確定給定的值是否與子查詢或列表中的值相匹配。
列名+in+(參數(shù)1,參數(shù)2…..)
8.Like關(guān)鍵字
使用like關(guān)鍵字可以確定給定的字符串是否與指定的模式匹配。
列名+like+”參數(shù)”
如:工號(hào) like “12*”
9.Group by
對(duì)查詢的列表中對(duì)相應(yīng)主鍵(列)進(jìn)行分組。在group by語(yǔ)句中在選擇列表內(nèi)定義的列的別名不能用于指定分組列,此外,select后面的每一列數(shù)據(jù)除了出現(xiàn)在統(tǒng)計(jì)函數(shù)中的列外,都必須在group by子句中應(yīng)用。Group +by+列名
SELECT 姓名,count(課程名)as 人數(shù) from rsda,kcm where rsda.工號(hào)=kcm.工號(hào)
group by 姓名
10.Having having語(yǔ)句為分組或集合指定搜索條件,通常與group by語(yǔ)句一起使用
SELECT 部門,count(部門)as 部門人數(shù) from rsda group by 部門 having count(部門)>=2
11.Order by order by語(yǔ)句用于指定對(duì)查詢最終結(jié)果進(jìn)行排序。DESC表示按遞減順序排列,ASC表示按遞增順序排列。
SELECT * from rsda where 基本工資=1000 order by 工號(hào) desc;
二、Insert
Insert語(yǔ)句用于向數(shù)據(jù)庫(kù)已有表中追加一行或者多行。Insert+into+表名+(列名1,列名2,列名3…?)+values+(“數(shù)據(jù)1”,”數(shù)據(jù)2”,”數(shù)據(jù)3”…?)Insert+into+表名+values+(所有字段的相應(yīng)值)Insert+into+表名+(列名1,列名2,列名3…?)+select+列名1,列名2,列名3…..+from+表名+where+條件
如果所追加的表不存在,請(qǐng)用下面的格式:
Select+所要添加的項(xiàng)目+into+新表名+from+需要查詢的表名+where+條件
三、Update Update語(yǔ)句用于修改數(shù)據(jù)庫(kù)表中特定記錄或者字段的數(shù)據(jù).Update+表名+set+(列名=”數(shù)據(jù)”, 列名=”數(shù)據(jù)”……)+where+條件
四、Delete
Delete+from+表名+where+條件
五、Drop 刪除表 Drop+ table+表名
課后習(xí)題:
1.要求:顯示公積金的最小值和最大值,并將結(jié)果分別賦給變量mingjj、maxgjj。Select min(公積金)as mingjj,max(公積金)as maxgjj from rsda 2.要求:顯示女教師講授的所有課程名。Select 姓名,課程名 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(性別=”女”)3.要求:徹底刪除kcm數(shù)據(jù)表中工號(hào)為12006的人員。Delect from kcm where 工號(hào)=”12006”
4.要求:統(tǒng)計(jì)講授“程序設(shè)計(jì)”課程的老師的基本工資的平均值,并將結(jié)果賦給變量A54(或者新字段A54)。Select avg(基本工資)as A54 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(課程名=”程序設(shè)計(jì)”)5.要求:計(jì)算教務(wù)處人員的基本工資的平均值和最大值。Select avg(基本工資)as平均值,max(基本工資)as 最大值 where 部門=”教務(wù)處”
6.要求:顯示30歲(含30歲)以下的人員的所有信息。Select * from rsda where(year(date())-year(出生年月))<30 7.要求:按照“公積金”降序形式顯示所有人員的信息。Select * from rsda order by 公積金 desc 8.要求:顯示講授“英語(yǔ)寫作”課程的每位老師的姓名、年齡。Select 姓名,(year(date())-year(出生年月))as 年齡 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(課程名=”英語(yǔ)寫作”)9.要求:統(tǒng)計(jì)每位男老師各自講授的課程數(shù)目。Select 姓名,count(*)as 課程數(shù)目from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and性別=”男”)group by 姓名
10.要求:物理刪除rsda數(shù)據(jù)表中部門為“教務(wù)處”的所有女性職工的記錄。Delete from rsda
where(部門=”教務(wù)處”)and(性別=”女”)11.要求:按照“應(yīng)發(fā)工資”升序形式顯示所有人員的信息。Select * from rsda order by 應(yīng)發(fā)工資 asc 12.要求:列出rsda數(shù)據(jù)表中應(yīng)發(fā)工資大于1500元的男性職工的工號(hào)、姓名、性別、部門和應(yīng)發(fā)工資。Select 工號(hào),姓名,性別,部門,應(yīng)發(fā)工資 from rsda(應(yīng)發(fā)工資>1500)and(性別=”男”)13.要求:按照rsda數(shù)據(jù)表中“部門”升序生成一個(gè)名為“人事表1”的新表,其中包含4個(gè)字段:工號(hào)、姓名、性別和部門。Select 工號(hào),姓名,性別,部門 into 人事表1 from rsda order by 部門 asc 14.要求:顯示講課教師中年齡最小的教師的姓名和性別。select 姓名,性別 from rsda where(Year([出生年月]))=any(SELECT Max(Year(出生年月))FROM rsda, kcm where rsda.工號(hào) = kcm.工號(hào))and((month([出生年月]))=any(SELECT max(month(出生年月))FROM rsda, kcm where rsda.工號(hào) = kcm.工號(hào)))and((day([出生年月]))=any(SELECT max(day(出生年月))FROM rsda , kcm where rsda.工號(hào) = kcm.工號(hào)))15.要求:物理刪除rsda數(shù)據(jù)表中1985年以前(不含1985年)出生的部門為“教務(wù)處”的職工記錄。Delete from rsda where(year(出生年月)<1985)and(部門=”教務(wù)處”)16.要求:統(tǒng)計(jì)“張運(yùn)生”講授的課程門數(shù),并將結(jié)果賦給變量A57(或者新字段A57)。Select count(課程名)as A57 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(姓名=”張運(yùn)生”)17.要求:按照“出生年月”降序形式顯示所有人員的信息。Select * from rsda order by 出生年月 desc 18.要求:統(tǒng)計(jì)講授“英語(yǔ)寫作”課程的老師的應(yīng)發(fā)工資的平均值,并將結(jié)果賦給變量A56(或者新字段A56)。Select avg(應(yīng)發(fā)工資)as A56 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(課程名=”英語(yǔ)寫作”)19.要求:統(tǒng)計(jì)rsda數(shù)據(jù)表中女性職工中補(bǔ)貼一項(xiàng)的最低值,并將結(jié)果賦給變量A58(或者新字段A58)。Select min(補(bǔ)貼)as A58 from rsda where 性別=”女” 20.要求將所有男性職工的記錄追加到名為“追加表”的表中,只需要其中的4個(gè)字段:姓名、性別、工資、補(bǔ)貼。Select 姓名,性別,工資,補(bǔ)貼 into 追加表 from rsda where 性別=”男”
21.要求:顯示講授“英語(yǔ)閱讀”課程的每位老師的姓名、年齡。Select 姓名,(year(date())-year(出生年月))as 年齡 from rsda,kcm where(rsda.工號(hào)=kcm.工號(hào))and(課程名=”英語(yǔ)閱讀”)22.要求:統(tǒng)計(jì)rsda數(shù)據(jù)表中部門為“基礎(chǔ)部”的女性職工的基本工資的平均值,并將結(jié)果賦給變量A53(或者新字段A53)。Select avg(基本工資)as A53 from rsda where(部門=”基礎(chǔ)部”)and(性別=”女”)23.要求:統(tǒng)計(jì)男性職工中基本工資超過(guò)1500元的人數(shù),并將結(jié)果賦給變量A55(或者新字段A55)。Select 基本工資,count(*)as A55 from rsda where(性別=”男”)and(基本工資>1500)24.要求:列出rsda數(shù)據(jù)表中工號(hào)前2位等于“10”的男性職工的信息。Select * from rsda where 工號(hào) like “10*”;或者是Select * from rsda where left(工號(hào),2)=10;25.要求:為rsda數(shù)據(jù)表中部門是“教務(wù)處”的人員每人增加25%的補(bǔ)貼(補(bǔ)貼=補(bǔ)貼*1.35)。update rsda set 補(bǔ)貼=補(bǔ)貼*1.35 where 部門=”教務(wù)處”
第二篇:數(shù)據(jù)庫(kù)SQL語(yǔ)句十題
作業(yè)十題
1.查詢所有學(xué)生的基本信息,并按學(xué)號(hào)降序排列
SELECT * FROM STUDENT
ORDER BY sno DESC;
2.查詢系別代碼為“02”的女同學(xué)信息
SELECT * FROM STUDENT
WHERE ssex=’女’ and sdept=‘02’;
3.查詢學(xué)生的總?cè)藬?shù)
SELECT COUNT(*)AS 學(xué)生總?cè)藬?shù)
FROM STUDENT;
4.所有選修課學(xué)生的姓名,課程名及成績(jī)
SELECT sname,cname,grade
FROM STUDENT,COURSE,SC
WHERE STUDENT.sno=SC.sno and COURSE.cno=SC.cno;
5.不及格學(xué)生姓名(合并重復(fù)項(xiàng))
SELECT distinct sname
FROM SC,STUDENT
WHERE grade<=60 and STUDENT.sno=SC.sno;
6.查詢學(xué)號(hào)為“011110”的學(xué)生的哪些課程的成績(jī)比他數(shù)據(jù)庫(kù)的成績(jī)要高 SELECT cno
FROM COURSE
WHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SC
WHERE cname=’數(shù)據(jù)庫(kù)’ and sno=‘011110’ and
COURSE.cno=SC.cno);
7.查詢選修課在3門以上(包括3門)的學(xué)生學(xué)號(hào)及選課門數(shù) SELECT sno,COUNT(*)AS 選修門數(shù)
FROM SC
GROUP BY sno HAVING COUNT(*)>=3;
8.查詢學(xué)號(hào)為“011110”的學(xué)生的平均成績(jī),并以平均成績(jī)命名 SELECT AVG(grade)AS average grade
FROM SC
WHERE sno=’011110’;
9.查詢計(jì)算機(jī)系或英語(yǔ)系的所有學(xué)生的個(gè)人信息
SELECT*FROM STUDENT
WHERE sdeptIN(SELECT sdept FROM DEPT
WHERE sdname=’計(jì)算機(jī)系’OR sdname=’英語(yǔ)系’);
10.查詢與“羅宇波”同一個(gè)系的學(xué)生情況
SELECT * FROM STUDENT
WHERE sdept=(SELECT sdept FROM STUDENT
WHERE sname=’羅宇波’);
第三篇:SQL數(shù)據(jù)庫(kù)編程學(xué)習(xí)應(yīng)用語(yǔ)句
SQL數(shù)據(jù)庫(kù)編程學(xué)習(xí)應(yīng)用語(yǔ)句大全
1as 的用處
as可以對(duì)表和列取別名
在開發(fā)過(guò)程中經(jīng)常遇到開始給某一個(gè)的字段去field1的名稱,但后來(lái)有感覺(jué)field1字段指定不確切,于是又把此字段改成了field2,由于開始認(rèn)為field1是常量,于是到處使用字符串field1,而且程序中又含有大量對(duì)field1的處理,此時(shí)就可以使用as
例如原來(lái)的 select field1 from tableA,改為selectfield2 asfield1 from tableA 代碼基本就可以不動(dòng)了。
2自增長(zhǎng)的字段的插入
開發(fā)中經(jīng)常遇到某個(gè)字段類型為IDENTITY,也就是自增長(zhǎng)類型,但由于特殊需要,又要插入數(shù)據(jù)
需要臨時(shí)去掉,可以使用如下語(yǔ)句set IDENTITY_INSERTtablename on,在處理完成后在使用如下語(yǔ)句恢復(fù) set IDENTITY_INSERTtablenameoff
3分組取每組的前N個(gè)數(shù)據(jù)
開發(fā)中還會(huì)遇到需要對(duì)某一組數(shù)據(jù)先分組,然后取每組的前n條記錄的情況
不妨試試如下代碼
[sql] view plaincopy
/*
按CurrentNodeLevel列分組,每組按NodeID排序,取出每個(gè)組中的前3個(gè)元素*/
declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定義臨時(shí)表insert into @temp
selectNodeID,CurrentNodeLevel,ROW_NUMBER()
OVER(partitionby CurrentNodeLevel
order by NodeID)as rowNumber
from SchoolTerminalStruct---給臨時(shí)表中插入數(shù)據(jù)
select * from @temp where rowNumber<=3--從臨時(shí)表中取數(shù)據(jù)
4生成隨機(jī)數(shù)
主意此方法只能寫成存儲(chǔ)過(guò)程,不能寫成函數(shù)
[sql] view plaincopy
-----返回Max,Min之間的隨機(jī)數(shù)不能寫成函數(shù)
createproc [dbo].[getRAND]
(@Max int,--最大值
@Min int--,--最小值)
AS
BEGIN
DECLARE @result int
SELECT @result=RAND()*(@Max-@Min)+@Min
select@result
END
5把滿足一定條件的數(shù)據(jù)用逗號(hào)分隔
這可能也是一個(gè)很常用的語(yǔ)句了,經(jīng)常出現(xiàn)在一對(duì)多的關(guān)系中對(duì)外展示,要求把子表中的數(shù)據(jù)取出來(lái)用逗號(hào)或者其他符號(hào)分隔開
[sql] view plaincopy
/*
把滿足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗號(hào)分隔開合并為一個(gè)字段輸出
*/
select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2
wheret2.NodeID=t1.NodeID
for xml path('')), 1 , 1 , '')as text
fromtableA
6在數(shù)據(jù)庫(kù)中處理異常
通過(guò)個(gè)參數(shù)附加output標(biāo)志來(lái)輸出參數(shù),通過(guò)TRY,CATCH捕捉異常
[sql] view plaincopy
CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]
@nodenameint,@Result int output---2,操作失敗;0操作成功
AS
BEGIN
begin
BEGIN TRY
UPDATE FunctionTree SET NodeName=@nodename
set @Result=0--操作成功
END TRY
BEGIN CATCH
set @Result=-2--操作失敗
END CATCH
end
END
7查詢中的條件判斷
經(jīng)常遇到在某些條件下應(yīng)該查詢這個(gè)字段,在另外一些條件下需要其他字段的情況,可以通過(guò)unoin來(lái)完成,但也可以通過(guò)CASE WHEN 完成[sql] view plaincopy
/*
在State=0 時(shí)返回field1 ,在State=1時(shí)返回 field2 ,其他時(shí)返回field3
*/
SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2
ELSE field3 END)as State
FROM tablename
8單引號(hào)的處理
在包含單引號(hào)時(shí)應(yīng)該使用兩個(gè)單引號(hào)轉(zhuǎn)義
[sql] view plaincopy
dbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end)
fromtablename '
9使用游標(biāo)
[sql] view plaincopy
declare @temp table(TaskIDint ,NodeIdint)--聲明臨時(shí)表
insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B
whereA.TaskID=B.TaskID--//--給聲明的臨時(shí)表中插入記錄
DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--聲明游標(biāo)
FOR select TaskID,NodeId from @temp;--游標(biāo)需要用到的列
open tnames_cursor--打開游標(biāo)
DECLARE @TaskIDint,@NodeIdint;--聲明變量
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移動(dòng)游標(biāo)給變量賦值,應(yīng)該與游標(biāo)需要用到的列一一對(duì)應(yīng),順序類型應(yīng)該一致
WHILE(@@FETCH_STATUS = 0)--循環(huán)
BEGIN
BEGIN
exec TaskType @TaskID,@NodeId--調(diào)用存儲(chǔ)過(guò)程
END
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移動(dòng)游標(biāo)給變量賦值 應(yīng)該與游標(biāo)需要用到的列一一對(duì)應(yīng),順序類型應(yīng)該一致
END
CLOSE tnames_cursor--關(guān)閉游標(biāo)
DEALLOCATE tnames_cursor--釋放游標(biāo)
10合并更新和插入
在開發(fā)中大部分情況下,插入和更新傳遞的參數(shù)基本上是一樣,那為什么不合并呢
[sql] view plaincopy
createproc [dbo].[Save_TableName]
(@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入 大于0更新)
as
begin
if(@insertOrUpdate<0)
begin
INSERT INTOTableName(field1,field2,ID)
values(@field1,@field2,@ID);
end
else
begin
UPDATE TableNameSET field1= @field1, field2 = @field2
where ID =@ID;
end
end
11定義函數(shù)
在沒(méi)有滿足要求的情況時(shí),可以定義函數(shù),但是使用自己定義的函數(shù)時(shí)需要加上架構(gòu)名稱
[sql] view plaincopy
create FUNCTION [dbo].[CheckTime]
(@startTimedatetime,@endTimedatetime--,)
RETURNSint
AS
BEGIN
DECLARE @result int
SET@result=DATEDIFF(hour, @startTime, @endTime)--
if(@result=0)--小時(shí)相同 比較分鐘
begin
SET@result=DATEDIFF(minute, @startTime, @endTime)
if(@result=0)--分鐘相同比較秒
begin
SET@result=DATEDIFF(second, @startTime, @endTime)
end
end
RETURN @result
END
調(diào)用此函數(shù)
[sql] view plaincopy
dbo.CheckTime(@startTime1, @startTime2)--需要加上架構(gòu)名稱
12遞歸讀取數(shù)據(jù)
在實(shí)際的應(yīng)用中經(jīng)常遇到樹結(jié)構(gòu)的表,但讀取會(huì)比較麻煩,這里提夠一個(gè)函數(shù)
[sql] view plaincopy
/*
函數(shù) 返回表,返回給定節(jié)點(diǎn)的所有子孫節(jié)點(diǎn),而不僅僅是子節(jié)點(diǎn)
*/
Create Function [dbo].[GetChildren](@NodeIDInt)
Returns @Tree Table(NodeIDInt, NodeNameVarchar(50), ParentIDInt)
As
Begin
Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID
While @@Rowcount> 0
Insert @Tree Select A.NodeID, A.NodeName, A.ParentID
From Treetable A
Inner Join @Tree B
On A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)Return
End
13通過(guò)默認(rèn)值實(shí)現(xiàn)存儲(chǔ)過(guò)程重載
存儲(chǔ)過(guò)程可以使用默認(rèn)值,估計(jì)都知道,但以此就可以實(shí)現(xiàn)類似函數(shù)重載的效果
例如,如下的存儲(chǔ)過(guò)程由于使用了默認(rèn)值,就可以不傳遞參數(shù),傳遞一個(gè)參數(shù),兩個(gè),三個(gè),[sql] view plaincopy
CREATE PROCEDURE dbo.my_proc
@firstint = NULL,--NULL default value
@secondint = 2,--Default value of 2
@thirdint = 3--Default value of 3
AS SELECT @first, @second, @third;
14在數(shù)據(jù)庫(kù)中拼字符串,也可以用參數(shù)
在實(shí)際的開發(fā)中,某些情況下在數(shù)據(jù)庫(kù)中拼字符串不可避免,但又擔(dān)心有特殊字符,導(dǎo)致拼出來(lái)的SQL有問(wèn)題,其實(shí)數(shù)據(jù)庫(kù)中拼字符串也可以使用參數(shù),這就要用到dbo.sp_executesql,這樣就可以避免SQL注入和特殊字符導(dǎo)致的錯(cuò)誤
如
[sql] view plaincopy
DECLARE @IntVariable INT;--定義變量
DECLARE @SQLString NVARCHAR(500);--存儲(chǔ)拼出來(lái)的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存儲(chǔ)拼出來(lái)的SQL中的參數(shù)
/* Build the SQL string one time.*/
SET @SQLString =
N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/
SET @ParmDefinition = N'@SalesIDint';--賦值
/* Execute the string with the first parameter value.*/
SET @IntVariable = 275;--賦值
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
/* Execute the same string with the second parameter value.*/
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
16觸發(fā)器需要注意的問(wèn)題
在使用觸發(fā)器時(shí)有一個(gè)問(wèn)題,或許很少有人注意到,一條更新語(yǔ)句一次更新了十條記錄,會(huì)觸發(fā)幾次觸發(fā)器?只有一次!很奇怪,但卻是事實(shí),所以這需要注意,一不小心就會(huì)把好
多數(shù)據(jù)漏了
第四篇:計(jì)算機(jī)等級(jí)考試二級(jí)ACCESS數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
計(jì)算機(jī)等級(jí)考試二級(jí)ACCESS數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
1.1 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
1.1.1 計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展 一.?dāng)?shù)據(jù)與數(shù)據(jù)處理 數(shù)據(jù):
是指存儲(chǔ)在某種 媒體上能夠識(shí)別的物理符號(hào)。數(shù)據(jù)處理:
是指將數(shù)據(jù)轉(zhuǎn)換成信息的過(guò)程。
從數(shù)據(jù)處理的角度而言,信息是一種被加工成特定形式的數(shù)據(jù),這種數(shù)據(jù)形式對(duì)于數(shù)據(jù)接受者來(lái)說(shuō)是有意義的。二.計(jì)算機(jī)數(shù)據(jù)管理
計(jì)算機(jī)數(shù)據(jù)管理 是指對(duì)數(shù)據(jù)的 分類、組織、編碼、存儲(chǔ)、檢索和維護(hù)。計(jì)算機(jī)數(shù)據(jù)管理 發(fā)展的幾個(gè)階段: 1 .人工管理 世紀(jì) 50 年代中期以前,計(jì)算機(jī)主要用于科學(xué)計(jì)算。
外部存儲(chǔ)器 只有紙帶、卡片、磁帶,無(wú)像磁盤這樣的可以隨機(jī)訪問(wèn)、直接存取的外部存儲(chǔ)設(shè)備。軟件的狀況 是沒(méi)有操作系統(tǒng),沒(méi)有專門管理數(shù)據(jù)的軟件,數(shù)據(jù)由計(jì)算或處理它的程序自行攜帶。數(shù)據(jù)管理任務(wù),包括存儲(chǔ)結(jié)構(gòu)、存儲(chǔ)方法、輸入/輸出方式等完全由程序設(shè)計(jì)者負(fù)責(zé)。特點(diǎn):
數(shù)據(jù)與程序不具有獨(dú)立性,一組數(shù)據(jù)對(duì)應(yīng)一組程序。數(shù)據(jù)不能長(zhǎng)期保存。
一個(gè)程序中的數(shù)據(jù)無(wú)法被其他程序使用。程序之間存在大量重復(fù)數(shù)據(jù),數(shù)據(jù)冗余大。2 .文件系統(tǒng) 世紀(jì) 50 年代后期到 60 年代中期。計(jì)算機(jī)不僅用于科學(xué)計(jì)算 , 而且還用于大量的數(shù)據(jù)處理。直接存儲(chǔ)設(shè)備,高級(jí)語(yǔ)言,操作系統(tǒng)。
程序和數(shù)據(jù)有一定的獨(dú)立性,數(shù)據(jù)文件可以長(zhǎng)期保存。
數(shù)據(jù)和程序相互依賴。數(shù)據(jù)文件是為滿足特定的業(yè)務(wù),或某部門的專門需要而設(shè)計(jì),服務(wù)于某一特定的應(yīng)用程序。
同一數(shù)據(jù)項(xiàng)可能重復(fù)出現(xiàn)在多個(gè)文件中,數(shù)據(jù)冗余度大。數(shù)據(jù)容易造成不一致。3 .?dāng)?shù)據(jù)庫(kù)系統(tǒng) 世紀(jì) 60 年代后期。計(jì)算機(jī)用于管理的規(guī)模更加龐大,應(yīng)用越來(lái)越廣泛。同時(shí)多種應(yīng)用、多種語(yǔ)言共享數(shù)據(jù)集合的要求越來(lái)越強(qiáng)烈。
標(biāo)志: 1968年IBM的 IMS 是一個(gè)層次模型數(shù)據(jù)庫(kù)。1969年美國(guó)數(shù)據(jù)系統(tǒng)語(yǔ)言協(xié)會(huì)公布的 DBTG 報(bào)告,對(duì)研制開發(fā)網(wǎng)狀數(shù)據(jù)庫(kù)系統(tǒng)起到了推動(dòng)作用。自1970年 IBM 公司的研究成果奠定了關(guān)系數(shù)據(jù)庫(kù)理論基礎(chǔ)。數(shù)據(jù)庫(kù)技術(shù)的主要目的:
有效地 管理和存儲(chǔ) 大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的 共享性,使多個(gè)用戶能夠同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù); 減少數(shù)據(jù)冗余,以提高數(shù)據(jù)的 一致性和完整性 ;提高數(shù)據(jù)與程序的 獨(dú)立性,從而 減少 應(yīng)用程序的 開發(fā)和維護(hù)代價(jià)。4 .分布式數(shù)據(jù)庫(kù) 20 世紀(jì) 70 年代以后,網(wǎng)絡(luò)技術(shù)的發(fā)展為數(shù)據(jù)庫(kù)提供了分布式的運(yùn)行環(huán)境,從主機(jī)—終端結(jié)構(gòu)發(fā)展到 C/S(客戶 / 服務(wù)器)系統(tǒng)結(jié)構(gòu)。
數(shù)據(jù)庫(kù)技術(shù)與網(wǎng)絡(luò)技術(shù)的結(jié)合分為 緊密結(jié)合 與 松散結(jié)合 兩大類。
分布式數(shù)據(jù)庫(kù)系統(tǒng)又分為 物理上分布、邏輯上集中 的分布式數(shù)據(jù)結(jié)構(gòu)和 物理上分布、邏輯上分布 的分布式數(shù)據(jù)庫(kù)結(jié)構(gòu)兩種。
物理上分布、邏輯上集中的分布式數(shù)據(jù)結(jié)構(gòu)是邏輯上統(tǒng)一、地域上分布的數(shù)據(jù)集合,是計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中各個(gè)節(jié)點(diǎn)局部數(shù)據(jù)庫(kù)的邏輯集合,同時(shí)受分布式數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)一控制和管理。物理上分布、邏輯上分布 的分布式數(shù)據(jù)庫(kù)結(jié)構(gòu)是把多個(gè)集中式數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)網(wǎng)絡(luò)連接起來(lái),各個(gè)節(jié)點(diǎn)上計(jì)算機(jī)可以利用網(wǎng)絡(luò)通信功能訪問(wèn)其他節(jié)點(diǎn)上的數(shù)據(jù)庫(kù)資源。5 .面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)
面向?qū)ο髷?shù)據(jù)庫(kù)吸收了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的核心概念和基本思想,采用面向?qū)ο蟮挠^點(diǎn)來(lái) 描述現(xiàn)實(shí)世界實(shí)體(對(duì)象)的邏輯組織、對(duì)象之間的限制和聯(lián)系等??朔藗鹘y(tǒng)數(shù)據(jù)庫(kù)的局限性,能夠自然地存儲(chǔ)復(fù)雜的數(shù)據(jù)對(duì)象以及這些對(duì)象之間的關(guān)系,從而大幅度地提高了 數(shù)據(jù)庫(kù)管理效率、降低了用戶使用的復(fù)雜性。1.1 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) 1.1.2 數(shù)據(jù)庫(kù)系統(tǒng) 一.有關(guān)數(shù)據(jù)庫(kù)的概念 1 .?dāng)?shù)據(jù)(Data)
描述事物的符號(hào)記錄。2 .?dāng)?shù)據(jù)庫(kù)(Data Base)
存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)設(shè)備中的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。它不僅包括描述事物的數(shù)據(jù)本身,而且包括相關(guān)事物之間的關(guān)系。
數(shù)據(jù)庫(kù)中的數(shù)據(jù)不只是面向某項(xiàng)特定的應(yīng)用,而是面向多種應(yīng)用,可以被多個(gè)用戶、多個(gè)應(yīng)用程序共享。3 .?dāng)?shù)據(jù)庫(kù)應(yīng)用系統(tǒng)
利用數(shù)據(jù)庫(kù)系統(tǒng)資源開發(fā)的面向某一類實(shí)際應(yīng)用的軟件系統(tǒng)。如:學(xué)生管理系統(tǒng)、人事管理系統(tǒng)等。.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,DBMS)
位于用戶與操作系統(tǒng)之間的數(shù)據(jù)管理軟件,為數(shù)據(jù)庫(kù)的建立、使用和維護(hù)而配置的軟件。使用戶能方便地定義數(shù)據(jù)和操縱數(shù)據(jù)庫(kù),并能報(bào)證數(shù)據(jù)的安全性、完整性、多用戶對(duì)數(shù)據(jù)的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復(fù)。.?dāng)?shù)據(jù)庫(kù)系統(tǒng)(DataBase System, DBS)
指引進(jìn)數(shù)據(jù)庫(kù)技術(shù)后的計(jì)算機(jī)系統(tǒng),能實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量相關(guān)數(shù)據(jù)、提供數(shù)據(jù)處理和信息資源共享的便利手段。有 5 部分:硬件系統(tǒng)、數(shù)據(jù)庫(kù)集合、數(shù)據(jù)庫(kù)管理系統(tǒng)和相關(guān)軟件、數(shù)據(jù)庫(kù)管理員(DataBase Administrator , DBA)和用戶。二.?dāng)?shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn) 1 .實(shí)現(xiàn)數(shù)據(jù)共享,減少冗余 2 .采用特定的數(shù)據(jù)模型 3 .具有較高的數(shù)據(jù)獨(dú)立性 4 .有統(tǒng)一的數(shù)據(jù)控制功能 三.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)
支持用戶對(duì)數(shù)據(jù)庫(kù)的基本操作,是數(shù)據(jù)庫(kù)系統(tǒng)的核心軟件。主要目標(biāo)是使數(shù)據(jù)成為 方便用戶使用 的資源,易于為各種用戶所 共享,并增進(jìn)數(shù)據(jù)的 安全性、完整性和可用性?!?功能主要包括: 1.?dāng)?shù)據(jù)定義
定義數(shù)據(jù)庫(kù)的結(jié)構(gòu)。
2.數(shù)據(jù)操縱
更新(插入、修改、刪除)和檢索。
3.數(shù)據(jù)庫(kù)運(yùn)行管理
對(duì)數(shù)據(jù)庫(kù)進(jìn)行 并發(fā)控制、安全性檢查、完整性約束條件的檢查和執(zhí)行 及 數(shù)據(jù)庫(kù)的內(nèi)部維護(hù)(索引、數(shù)據(jù)字典的自動(dòng)維護(hù))等。
4.數(shù)據(jù)組織、存儲(chǔ)和管理
采用統(tǒng)一的組織方式,并提高效率。
5.數(shù)據(jù)庫(kù)的建立和維護(hù)
初始數(shù)據(jù)的輸入與數(shù)據(jù)轉(zhuǎn)存。
數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)與恢復(fù)、數(shù)據(jù)庫(kù)的重組與重構(gòu)、性能的監(jiān)視與分析。
6.數(shù)據(jù)通信接口
提供與其他軟件系統(tǒng)進(jìn)行通信的功能。
● 4 部分組成:
■ 數(shù)據(jù)定義語(yǔ)言及翻譯處理程序
■ 數(shù)據(jù)操縱語(yǔ)言及其編譯(或解釋)程序
■ 數(shù)據(jù)庫(kù)運(yùn)行控制程序
■ 實(shí)用程序
1.1 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
1.1.3 數(shù)據(jù)模型
數(shù)據(jù)模型就是從現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。是數(shù)據(jù)管理系統(tǒng)用來(lái)表示實(shí)體及實(shí)體間聯(lián)系的方法。
一.實(shí)體描述.實(shí)體
客觀存在并相互區(qū)別的事物成為實(shí)體。如:學(xué)生、教師、課程。.實(shí)體的屬性
描述實(shí)體的特性。如學(xué)生實(shí)體用學(xué)號(hào)、姓名、性別等屬性描述。.實(shí)體集和實(shí)體型
屬性值的集合表示一個(gè)實(shí)體,而屬性的集合表示一種實(shí)體的類型,稱為實(shí)體型。同類型的實(shí)體的集合,稱為實(shí)體集。
二.實(shí)體間聯(lián)系及種類
實(shí)體之間的對(duì)應(yīng)關(guān)系稱為聯(lián)系。如:一個(gè)學(xué)生可以選修多門課程,同一門課程可以由多名教師講授。
有三種類型:.一對(duì)一聯(lián)系
如:人事部門的教師表和財(cái)務(wù)部門的工資表之間就存在一對(duì)一聯(lián)系。.一對(duì)多聯(lián)系
如:部門表與教師表之間就存在一對(duì)多的聯(lián)系。.多對(duì)多聯(lián)系
如:學(xué)生表和課程表之間存在多對(duì)多的聯(lián)系。
三.?dāng)?shù)據(jù)模型簡(jiǎn)介
數(shù)據(jù)模型是數(shù)據(jù)庫(kù)管理系統(tǒng)用來(lái)表示實(shí)體間聯(lián)系的方法。
任何一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)都是基于某種數(shù)據(jù)模型的。數(shù)據(jù)管理系統(tǒng)所支持的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型、關(guān)系模型。.層次模型
用樹型結(jié)構(gòu)表示各類實(shí)體以及實(shí)體之間的聯(lián)系。典型代表: IBM 的 IMS。
(1)有且僅有一個(gè)節(jié)點(diǎn)無(wú)雙親,這個(gè)節(jié)點(diǎn)稱為“根節(jié)點(diǎn)”。
(2)其他節(jié)點(diǎn)有且僅有一個(gè)雙親。
特點(diǎn):對(duì)一對(duì)多的層次關(guān)系描述非常自然、直觀、容易理解,但不能直接表示出多對(duì)多的聯(lián)系。.網(wǎng)狀模型
(1)允許一個(gè)以上的節(jié)點(diǎn)無(wú)雙親。
(2)一個(gè)節(jié)點(diǎn)可以有多于一個(gè)的雙親。
典型代表: DBTG 系統(tǒng),也稱 CODASYL 系統(tǒng)。
特點(diǎn)是:能直接表示非樹型結(jié)構(gòu)。.關(guān)系數(shù)據(jù)模型
IBM E.F.Codd 于 1970 首次提出。
用二維表結(jié)構(gòu)來(lái)表示實(shí)體以及實(shí)體間聯(lián)系的模型。
特點(diǎn)是:理論基礎(chǔ)完備、模型簡(jiǎn)單、說(shuō)明性的查詢語(yǔ)言和使用方便。
1.2 關(guān)系數(shù)據(jù)庫(kù)
1.2.1 關(guān)系數(shù)據(jù)模型
一.關(guān)系術(shù)語(yǔ)
.關(guān)系
一個(gè)關(guān)系就是一個(gè)二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名。在 Access 中,一個(gè)關(guān)系存儲(chǔ)為一個(gè)表,具有一個(gè)表名。
對(duì)關(guān)系的描述稱為 關(guān)系模式,一個(gè)關(guān)系模式對(duì)應(yīng)一個(gè)關(guān)系的結(jié)構(gòu)。其格式為:
關(guān)系名(屬性名 1,屬性名 2,…,屬性名 n)
在 Access 中:
表名(字段名 1,字段名 2,…,字段名 n).元組
二維表(關(guān)系)中的每一行。對(duì)應(yīng)在表中為記錄。.屬性
二維表(關(guān)系)中的每一列。對(duì)應(yīng)在表中為字段。.域
屬性的取值范圍。如:性別只能取“男”和“女”。.關(guān)鍵字
唯一地標(biāo)識(shí)一元組的屬性或?qū)傩约稀H纾航處煴碇械木幪?hào)。在 Access 中,主關(guān)鍵字和候選關(guān)鍵字就起唯一標(biāo)識(shí)一個(gè)元組的作用。.外部關(guān)鍵字
如果一個(gè)表的字段不是本表的主關(guān)鍵字,而是另外一個(gè)表的主關(guān)鍵字和候選關(guān)鍵字,這個(gè)字段(屬性)就稱為外關(guān)鍵字。
二.關(guān)系的特點(diǎn).關(guān)系必須規(guī)范化
是指關(guān)系模型中的每一個(gè)關(guān)系模式都必須滿足一定的要求。最基本的要求是每個(gè)屬性必須是不可分割的數(shù)據(jù)單元,即表中不能再包含表。.在同一個(gè)關(guān)系中不能出現(xiàn)相同的屬性名。.關(guān)系中不允許有完全相同的元組,即冗余。4 .在一個(gè)關(guān)系中元組的次序無(wú)關(guān)緊要。5 .在一個(gè)關(guān)系中列的次序無(wú)關(guān)緊要。
1.2 關(guān)系數(shù)據(jù)庫(kù)
1.2.2 關(guān)系運(yùn)算
一.傳統(tǒng)的集合運(yùn)算.并
兩個(gè)結(jié)構(gòu)相同的關(guān)系的并是由屬于這兩個(gè)關(guān)系的元組組成的集合。.差
兩個(gè)結(jié)構(gòu)相同的關(guān)系 R 和 S 的差是由屬于 R 但不屬于 S 的元組組成的集合。.交
兩個(gè)結(jié)構(gòu)相同的關(guān)系 R 和 S 的交是由既屬于 R 又屬于 S 的元組組成的集合。二.專門的關(guān)系運(yùn)算.選擇
從關(guān)系中找出滿足給定條件的元組的操作。.投影
從關(guān)系模式中指定若干屬性組成新的關(guān)系。.聯(lián)接
將兩個(gè)關(guān)系模式拼接成為一個(gè)更寬的關(guān)系模式,生成的新的關(guān)系中包含滿足聯(lián)接條件的元組。.自然聯(lián)接
在聯(lián)接運(yùn)算中,按照字段值對(duì)應(yīng)相等為條件進(jìn)行的聯(lián)接操作。去掉重復(fù)字段。
1.3 數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
1.3.1 數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟
一.設(shè)計(jì)原則 .關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)遵從概念單一化“一事一地”的原則.避免在表之間出現(xiàn)重復(fù)字段 .表中的字段必須是原始數(shù)據(jù)和基本數(shù)據(jù)元素.用外部關(guān)鍵字保證有關(guān)聯(lián)的表之間聯(lián)系
二.設(shè)計(jì)步驟.需求分析
(1)信息需求
(2)處理需求
(3)安全性和完整性需求.確定需求的表
遵從概念單一化“一事一地”的原則,即一個(gè)表描述一個(gè)實(shí)體或?qū)嶓w間的一種聯(lián)系,并將這些信息分成各種基本實(shí)體。.確定所需字段
(1)每個(gè)字段直接和表的實(shí)體相關(guān)
(2)以最小的邏輯單位存儲(chǔ)信息
(3)表中的字段必須是原始數(shù)據(jù)
(4)確定主關(guān)鍵字字段.確定聯(lián)系
對(duì)于一對(duì)多的聯(lián)系,可以將其中“一方”表的主關(guān)鍵字放到“多方”表中作為外關(guān)鍵字?!耙环健庇盟饕P(guān)鍵字,“多方”使用普通索引關(guān)鍵字。
對(duì)于一對(duì)一的聯(lián)系,兩個(gè)表中使用同樣的主關(guān)鍵字字段。
對(duì)于多對(duì)多的聯(lián)系,為了避免數(shù)據(jù)重復(fù),一般建立第三個(gè)表,把多對(duì)多的聯(lián)系分解兩個(gè)一對(duì)多的聯(lián)系。這個(gè)第三個(gè)表可以看成紐帶。紐帶表不一定需要自己的主鍵,如果需要,可以將它所聯(lián)系的兩個(gè)表的主關(guān)鍵字做為組合關(guān)鍵字指定為主關(guān)鍵字。.設(shè)計(jì)求精
檢查可能存在的缺陷和需要改進(jìn)的地方,這些缺陷可能會(huì)使數(shù)據(jù)難以使用和維護(hù)。
(1)是否忘記了字段?
(2)是否存在大量空白字段?
(3)是否包含了同樣字段的表?
(4)表中是否帶有大量不屬于某實(shí)體的字段?
(5)是否在某個(gè)表中重復(fù)輸入同樣的數(shù)據(jù)?
(6)是否為每個(gè)表選擇了合適的主關(guān)鍵字?
(7)是否有字段很多而記錄很少的表,并且許多記錄中的字段值為空?
1.4 SQL 基本命令
SQL(Structure Query Language,結(jié)構(gòu)化查詢語(yǔ)言)是在數(shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用廣泛的數(shù)據(jù)庫(kù)查詢語(yǔ)言,它包括了數(shù)據(jù)定義、查詢、操縱和控制 4 種功能。
SQL 中的兩個(gè)基本概念:
基本表:本身獨(dú)立存在的表。
視圖:從一個(gè)或多個(gè)基本表導(dǎo)出的表。它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中,即數(shù)據(jù)庫(kù)中存放視圖的定義,而不存放視圖對(duì)應(yīng)的數(shù)據(jù)。
1.4.1 SQL 基本語(yǔ)句
最常見(jiàn)的 SQL 語(yǔ)句是 SELECT。
基本格式:
SELECT [ALL/DISTINCT] *|< 字段列表 >
FROM < 表名 > [WHERE < 條件表達(dá)式 >]
[ORDER BY < 列名 > {[ASC|DESC]}]
例:在 Access 中,在教師表中查詢姓名為“王”的教師,并按照姓名升序排列。命令為:
SELECT * FROM 教師 WHERE 姓名 LIKE “ 王 %” ORDER BY 姓名 ASC 1.5 Access 簡(jiǎn)介
Access 是一種關(guān)系型的桌面數(shù)據(jù)庫(kù)管理系統(tǒng),是 Microsoft Office 套件產(chǎn)品之一。
1992 年 11 月推出 Access 1.0,Microsoft 先后推出 2.0,7.0/95,8.0/97,9.0/2000,10.0/2002,直到 Access 2003。
特點(diǎn): .具有方便實(shí)用的強(qiáng)大功能。.可以利用各種圖例快速獲取數(shù)據(jù)。.可以利用報(bào)表設(shè)計(jì)工具,方便生成報(bào)表。.能處理多種數(shù)據(jù)類型。.采用 OLE 技術(shù),能方便創(chuàng)建和編輯多媒體數(shù)據(jù)庫(kù)。.支持 ODBC 標(biāo)準(zhǔn)的 SQL 數(shù)據(jù)庫(kù)的數(shù)據(jù)。.設(shè)計(jì)過(guò)程自動(dòng)化,大大提高了數(shù)據(jù)庫(kù)的工作效率。.具有較好的集成開發(fā)環(huán)境。.提供了斷點(diǎn)設(shè)置、單步執(zhí)行等調(diào)試功能。.與 Internet/Intranet 的集成。.可以將數(shù)據(jù)庫(kù)應(yīng)用程序的建立移進(jìn)用戶環(huán)境,并最終使用戶和應(yīng)用程序開發(fā)者之間的關(guān)系淡化。
數(shù)據(jù)庫(kù)的系統(tǒng)結(jié)構(gòu):
Access 數(shù)據(jù)庫(kù)由數(shù)據(jù)庫(kù)對(duì)象和組兩部分組成,如圖 1-2 所示。其中對(duì)象分為 7 種:表、查詢、窗體、報(bào)表、數(shù)據(jù)訪問(wèn)頁(yè)、宏、模塊。
表是數(shù)據(jù)庫(kù)的核心與基礎(chǔ),存放中數(shù)據(jù)庫(kù)中的全部數(shù)據(jù)。報(bào)表、查詢和窗體都是從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)信息,以實(shí)現(xiàn)用戶的某一特定的需要。
表是用來(lái)存儲(chǔ)數(shù)據(jù)的對(duì)象,是數(shù)據(jù)庫(kù)的核心與基礎(chǔ)。表中的列為字段,行為記錄。
查詢是用來(lái)操作數(shù)據(jù)庫(kù)中的記錄對(duì)象,利用它可以按照一定的條件或準(zhǔn)則從一個(gè)或多個(gè)表中篩選出需要操作的字段,并可以把它們集中起來(lái),形成所謂的動(dòng)態(tài)數(shù)據(jù)集,并顯示在一個(gè)虛擬的數(shù)據(jù)表窗口中。
窗體:數(shù)據(jù)庫(kù)與用戶進(jìn)行交互操作的界面。其數(shù)據(jù)源可以是表或查詢。
報(bào)表:數(shù)據(jù)的輸出方式,可以將數(shù)據(jù)庫(kù)中需要的數(shù)據(jù)提取出來(lái)進(jìn)行分析、整理和計(jì)算,并將數(shù)據(jù)以格式化的方式打印輸出。
數(shù)據(jù)訪問(wèn)頁(yè):是一種特殊的 Web 頁(yè),用戶可以在此 Web 頁(yè)與 Access 數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行聯(lián)接,查看、修改 Access 數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
宏:一系列操作的集合。
模塊:將 Visual Basic for Application 聲明和過(guò)程作為一個(gè)單元進(jìn)行保存的集合。
1.6 啟動(dòng)和關(guān)閉 Access 1.6.1 啟動(dòng) Access
“開始 / 程序 /Microsoft Access”
1.6 啟動(dòng)和關(guān)閉 Access 1.6.2 關(guān)閉 Access 4 種方法:
(1)單擊 Access 右上角的“關(guān)閉”按鈕
(2)選擇“文件”菜單中的“退出”命令
(3)使用 Alt+F4 快捷鍵
(4)使用 Alt+F+X 快捷鍵
一、填空題
1.計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展分 _______________________________________ 等幾個(gè)階段。.?dāng)?shù)據(jù)庫(kù)技術(shù)的主要目的是有效地管理和存儲(chǔ)大量的數(shù)據(jù)資源,包括:_____________,使多個(gè)用戶能夠同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù); ______________,以提高數(shù)據(jù)的一致性和完整性;___________________,從而減少應(yīng)用程序的開發(fā)和維護(hù)代價(jià)。.?dāng)?shù)據(jù)庫(kù)技術(shù)與網(wǎng)絡(luò)技術(shù)的結(jié)合分為 _____________ 與 _____________ 兩大類。.分布式數(shù)據(jù)庫(kù)系統(tǒng)又分為 ____________________ 的分布式數(shù)據(jù)庫(kù)結(jié)構(gòu)和 ______________________ 的分布式數(shù)據(jù)庫(kù)結(jié)構(gòu)兩種。.?dāng)?shù)據(jù)庫(kù)系統(tǒng)的 5 個(gè)組成部分: _________________________________________________。. 實(shí)體之間的對(duì)應(yīng)關(guān)系稱為聯(lián)系,有如下三種類型: _______________________________。.任何一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)都基于某種數(shù)據(jù)模型的。數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型有三種: ___________________________。.兩個(gè)結(jié)構(gòu)相同的關(guān)系 R 和 S 的 _______ 是由屬于 R 但不屬于 S 的元組組成的集合。. SQL(Structure Query Language,結(jié)構(gòu)化查詢語(yǔ)言)是在數(shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用廣泛的數(shù)據(jù)庫(kù)查詢語(yǔ)言,它包括了 _____________________________4 種功能。.Access 數(shù)據(jù)庫(kù)由數(shù)據(jù)庫(kù)對(duì)象和組兩部分組成。其中對(duì)象分為 7 種: ___________________。
二、選擇題 .下列說(shuō)法錯(cuò)誤的是()。
A 人工管理階段程序之間存在大量重復(fù)數(shù)據(jù),數(shù)據(jù)冗余大。
B 文件系統(tǒng)階段程序和數(shù)據(jù)有一定的獨(dú)立性,數(shù)據(jù)文件可以長(zhǎng)期保存。
C 數(shù)據(jù)庫(kù)階段提高了數(shù)據(jù)的共享性,減少了數(shù)據(jù)冗余。
D 上述說(shuō)法都是錯(cuò)誤的。. 從關(guān)系中找出滿足給定條件的元組的操作稱為()。
A .選擇
B .投影
C .聯(lián)接
D .自然聯(lián)接
3.關(guān)閉 Access 可以方法不正確的是()。
A .選擇“文件”菜單中的“退出”命令。
B .使用 Alt+F4 快捷鍵。
C .使用 Alt+F+X 快捷鍵。
D .使用 Ctrl+X 快捷鍵。.?dāng)?shù)據(jù)庫(kù)技術(shù)是從 20 世紀(jì)()年代中期開始發(fā)展的。
A.60
B.70
C.80
D.90 .使用 Access 按用戶的應(yīng)用需求設(shè)計(jì)的結(jié)構(gòu)合理、使用方便、高效的數(shù)據(jù)庫(kù)和配套的應(yīng)用程序系統(tǒng),屬于一種()。
A.數(shù)據(jù)庫(kù)
B.數(shù)據(jù)庫(kù)管理系統(tǒng)
C.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)
D.數(shù)據(jù)模型.二維表由行和列組成,每一行表示關(guān)系的一個(gè)()。
A.屬性
B.字段
C.集合 D.記錄.?dāng)?shù)據(jù)庫(kù)是()。
A.以—定的組織結(jié)構(gòu)保存在輔助存儲(chǔ)器中的數(shù)據(jù)的集合。
B.一些數(shù)據(jù)的集合。
C.輔助存儲(chǔ)器上的一個(gè)文件。
D.磁盤上的一個(gè)數(shù)據(jù)文件。.關(guān)系數(shù)據(jù)庫(kù)是以()為基本結(jié)構(gòu)而形成的數(shù)據(jù)集合。
A.?dāng)?shù)據(jù)表
B.關(guān)系模型
C.?dāng)?shù)據(jù)模型
D.關(guān)系代數(shù) 9 .關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)表()。
A.完全獨(dú)立,相互沒(méi)有關(guān)系。
B.相互聯(lián)系,不能單獨(dú)存在。
C.既相對(duì)獨(dú)立,又相互聯(lián)系。
D.以數(shù)據(jù)表名來(lái)表現(xiàn)其相互間的聯(lián)系。10 .以下敘述中,正確的是()。
A.Access 只能使用菜單或?qū)υ捒騽?chuàng)建數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。
B.Access 不具備程序設(shè)計(jì)能力。
C.Access 只具備了模塊化程序設(shè)計(jì)能力。
D.Access 具有面向?qū)ο蟮某绦蛟O(shè)計(jì)能力,并能創(chuàng)建復(fù)雜的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。
答案 填空題
1.人工管理、文件系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、分布式數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)
2.提高數(shù)據(jù)的共享性、減少數(shù)據(jù)冗余、提高數(shù)據(jù)與程序的獨(dú)立性
3.緊密結(jié)合、松散結(jié)合
4.物理上分布、邏輯上集中;物理上分布、邏輯上分布
5.硬件系統(tǒng)、數(shù)據(jù)庫(kù)集合、數(shù)據(jù)庫(kù)管理系統(tǒng)和相關(guān)軟件、數(shù)據(jù)庫(kù)管理員(DataBase Administrator , DBA)和用戶。
6.一對(duì)一聯(lián)系、一對(duì)多聯(lián)系、多對(duì)多聯(lián)系。
7.層次模型、網(wǎng)狀模型、關(guān)系模型。
8.差
9.?dāng)?shù)據(jù)定義、查詢、操縱和控制
10.表、查詢、窗體、報(bào)表、數(shù)據(jù)訪問(wèn)頁(yè)、宏、模塊。
選擇題
D A D A B D A B C D
第五篇:Access數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
注意事項(xiàng):本手冊(cè)上寫的是題目的出處,但的實(shí)驗(yàn)本上,必須寫上書上原本的題目,否則無(wú)效。并且寫下每題實(shí)現(xiàn)的步驟。
《Access數(shù)據(jù)庫(kù)》實(shí)驗(yàn)報(bào)告指導(dǎo)手冊(cè)掌握選擇查詢、總記查詢、在查詢中進(jìn)行計(jì)算
實(shí)驗(yàn)一:
一、實(shí)驗(yàn)名稱
數(shù)據(jù)庫(kù)與表的操作
二、實(shí)驗(yàn)?zāi)康恼莆諗?shù)據(jù)庫(kù)的創(chuàng)建、表結(jié)構(gòu)的創(chuàng)建和輸入數(shù)據(jù) 的實(shí)現(xiàn)。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上94頁(yè)的例3.1題。上機(jī)二:書上101頁(yè)的例3.4題。上機(jī)三:書上105頁(yè)的例3.6題。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上34頁(yè)的例 2.2題。上機(jī)二:書上42頁(yè)的例2.6題。上機(jī)三:書上44頁(yè)的例2.7題。上機(jī)四:書上49頁(yè)的例2.9題。上機(jī)五:書上52頁(yè)的例2.10題。實(shí)驗(yàn)二:
一、實(shí)驗(yàn)名稱
設(shè)置字段的屬性與創(chuàng)建表之間的關(guān)系
二、實(shí)驗(yàn)?zāi)康恼莆兆侄螌傩缘脑O(shè)置與創(chuàng)建表之間的關(guān)系。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上55頁(yè)的例2.11題。上機(jī)二:書上57頁(yè)的例2.13題。上機(jī)三:書上58頁(yè)的例2.14題。上機(jī)四:書上60頁(yè)的例2.15題。上機(jī)五:書上63頁(yè)的例2.16題。實(shí)驗(yàn)三:
一、實(shí)驗(yàn)名稱維護(hù)表的操作
二、實(shí)驗(yàn)?zāi)康恼莆沾蜷_表、修改表的結(jié)構(gòu)、編輯表的數(shù)據(jù)和調(diào)整表的外觀等操作。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上66頁(yè)的例2.18題。上機(jī)二:書上71頁(yè)的例2.20題。上機(jī)三:書上73頁(yè)的例2.21題。上機(jī)四:書上74頁(yè)的例2.22題。上機(jī)五:書上76頁(yè)的例2.23題。實(shí)現(xiàn)四:
一、實(shí)驗(yàn)名稱創(chuàng)建選擇查詢
二、實(shí)驗(yàn)?zāi)康纳蠙C(jī)四:書上107頁(yè)的例3.8題。上機(jī)五:書上109頁(yè)的例3.9題。實(shí)驗(yàn)五:
一、實(shí)驗(yàn)名稱
創(chuàng)建交叉表查詢、參數(shù)查詢
二、實(shí)驗(yàn)?zāi)康恼莆战徊姹聿樵?、參?shù)查詢的實(shí)現(xiàn)。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上113頁(yè)的例3.11題。上機(jī)二:書上116頁(yè)的例3.12題。上機(jī)三:書上118頁(yè)的例3.13題。上機(jī)四:書上119頁(yè)的例3.14題。實(shí)驗(yàn)六:
一、實(shí)驗(yàn)名稱創(chuàng)建操作查詢
二、實(shí)驗(yàn)?zāi)康恼莆丈杀聿樵儭h除查詢、更新查詢和追加查詢的實(shí)現(xiàn)。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上121頁(yè)的例3.15題。上機(jī)二:書上122頁(yè)的例3.16題。上機(jī)三:書上124頁(yè)的例3.17題。上機(jī)四:書上125頁(yè)的例3.18題。實(shí)驗(yàn)七:
一、實(shí)驗(yàn)名稱
利用向?qū)?chuàng)建窗體
二、實(shí)驗(yàn)?zāi)康恼莆绽孟驅(qū)?chuàng)建窗體的實(shí)現(xiàn)。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上144頁(yè)的例4.2題。上機(jī)二:書上147頁(yè)的例4.3題。上機(jī)三:書上150頁(yè)的例4.5題。上機(jī)四:書上152頁(yè)的例4.6題。實(shí)驗(yàn)八:
一、實(shí)驗(yàn)名稱自定義窗體
二、實(shí)驗(yàn)?zāi)康恼莆粘R?jiàn)控件的使用與自定義窗體的實(shí)現(xiàn)。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上158頁(yè)的例4.7題。上機(jī)二:書上167頁(yè)的例4.8題。上機(jī)三:書上174頁(yè)的例4.9題。上機(jī)四:書上174頁(yè)的例4.10題。上機(jī)五:書上176頁(yè)的例4.11題。實(shí)驗(yàn)九:
一、實(shí)驗(yàn)名稱
編輯報(bào)表
二、實(shí)驗(yàn)?zāi)康恼莆站庉媹?bào)表的操作、報(bào)表的分組操作、增加計(jì)算控件的操作。
三、實(shí)驗(yàn)任務(wù)
上機(jī)一:書上203頁(yè)的例5.7題。
上機(jī)二:書上203頁(yè)的:在報(bào)表中,可以在某一節(jié)中使用分頁(yè)控件符來(lái)標(biāo)志要另起一頁(yè)的位置。
上機(jī)三:書上205頁(yè)的例5.8題。上機(jī)四:書上206頁(yè)的例5.9題。上機(jī)五:書上209頁(yè)的例5.10題。