Access數(shù)據(jù)庫這些功能如果你掌握了,數(shù)據(jù)從此為你所用
我們先來打開一個“學生成績表4”,如下圖:
然后點擊“開始”選項卡下面的“合計公式”
在數(shù)據(jù)表的最后一行出現(xiàn)了“匯總”字樣:
你可以在匯總一行的每個字段下選擇想要的結(jié)果
對于數(shù)字格式的字段會有7種結(jié)果
而對于文本則只有一個“計數(shù)”結(jié)果:
下面是文本字段:
分別對字段班級1求“計數(shù)”
對英語求“平均分”
對語文求“最高分”
對數(shù)學求“最低分”
得到如下的結(jié)果是有21條數(shù)據(jù)
英語平均分是62.3分
語文最高分是96分
數(shù)學最低分是47分,如下圖:
從2007以后版本的Access數(shù)據(jù)庫開始兼容了Excel的一些基本操作功能
再加上本身的數(shù)據(jù)庫功能,使得它倍受青睞
你如果想在Access數(shù)據(jù)庫中,對表實現(xiàn)一些簡單的“篩選”功能,可以不用寫“查詢語句”,直接用鼠標操作即可
假如你想對下面的學生成績表進行篩選
你需要二班語、數(shù)、外成績及格的人員數(shù)據(jù):
通常在數(shù)據(jù)庫中,你需要寫“查詢語句”來實現(xiàn)上述的任務
創(chuàng)建一個查詢,并寫上語句:
select * from 學生成績表 where 班級='二班 and 英語分數(shù)>=60 and 語文分數(shù)>=60 and 數(shù)學分數(shù)>=60
點擊紅色嘆號運行,結(jié)果如下:
可以看到,二班的學生三門課同時都及格的只有兩名學生
學號分別是17號和21號,你如果不寫查詢語句怎么完成這個操作呢?
其實很簡單,從下面能夠看到,每個字段名字旁邊都有一個黑色的三角號:
點擊黑色小三角:
直接選中二班,點確定:
看到了嗎,數(shù)據(jù)只有二班的了,接著點擊英語分數(shù)旁邊的黑色小三角:
界面有點不一樣了,因為它是數(shù)字格式的字段
你不要一個一個地去選,比較麻煩
直接點擊數(shù)字篩選器,再點擊大于(實際上這是個大于等于):
輸入60即可,然后確定,以此類推,語文和數(shù)據(jù)都這么弄,就得到下面的結(jié)果:
這個不用寫語句,同樣可以實現(xiàn)
所以零基礎的小白學習Access數(shù)據(jù)庫也是相當容易的
你想要對下面的學生成績表,按英語分數(shù)由低到高進行排序:
如果你用查詢語句實現(xiàn),你可以創(chuàng)建一個查詢并寫上語句:
select * from 學生成績表 order by 英語分數(shù)
這里面的order by表示由低到高進行排序:
點擊紅色嘆號運行,結(jié)果如下:
如果你想要由高到低排序怎么辦?
SQL語句這么寫:
select * from 學生成績表 order by 英語分數(shù) desc
只是在原來的基礎上多了一個“desc”,即為由高到低排序:
運行結(jié)果:
你除了寫查詢語句進行排序外,還可以通過簡單的鼠標操作來實現(xiàn)數(shù)據(jù)的排序問題
打開學生成績表,右鍵點擊“英語分數(shù)”字段:
可以看到,有升序和降序兩種選擇
你只需要選擇一種我們想要的排序即可,排序結(jié)果如下(由低到高排序):
這種用鼠標操作的排序是非常簡單的
“l(fā)eft”在Access數(shù)據(jù)庫中表達的含義是“左截取”
也就是從左面開始截取字符,它的用法是:
left(字段名稱,2),表示對某個字段進行左截取2個字符
你要對下面的“學生信息表”中的出生日期精確到月份即可,就可以用到left:
你可以創(chuàng)建一個查詢并寫上語句:
select *,left(出生日期,6) as csrq from 學生信息表
這里面的left(出生日期,6)即為對字段“出生日期”從左面開始取6位
關于“as csrq”表示一個別名,前面的文章已經(jīng)講過:
點擊紅色嘆號運行,結(jié)果如下:
可以看到出生日期精確到月份了
從“出生日期”字段左面取了6位,這只是一個查詢,并沒有生成真正的數(shù)據(jù)表
如果要生成真正的數(shù)據(jù)表,需要這樣:
select *,left(出生日期,6) as csrq into 學生信息表改 from 學生信息表
加一個“into 學生信息表改”即可:
運行結(jié)果:
這時你的數(shù)據(jù)庫中就生成了一個實實在在的表了“學生信息表改”
對于下面的“學生成績表”
你只想要顯示前7行數(shù)據(jù)
在查詢語句中怎么進行控制呢?
你可以創(chuàng)建一個查詢并寫上語句:
select top 7 * from 學生成績表
這里面的top 7就是顯示前7行
*就是顯示所有字段的數(shù)據(jù):
點擊紅色嘆號運行,結(jié)果如下:
假如你只想要顯示班級,學號和英語分數(shù)這幾個字段
應該這么寫:
select top 7 班級,學號,英語分數(shù) from 學生成績表
運行結(jié)果:
下面是學生的入學時間表
為了方便錄入數(shù)據(jù),錄入人員在“入學時間”字段錄入的是文本類型的數(shù)據(jù)
你怎么才能把它轉(zhuǎn)換為真正的日期型呢?
第一步:加一個“入學時間1”字段,類型選擇“日期/時間”型:
可以看到“入學時間1”字段,這個字段的類型就是“日期/時間”型的:
第二步:創(chuàng)建查詢,寫語句:
UPDATE 入學表SET 入學時間1 = CDATE(LEFT(入學時間,4)&'/'&MID(入學時間,5,2)&'/'&RIGHT(入學時間,2))
CDATE函數(shù)就是將文本轉(zhuǎn)換為日期,里面由三部分組成,每個部分用'/'隔開:
1、LEFT(入學時間,4):表示年,用left實現(xiàn),左邊截取4位
2、MID(入學時間,5,2):表示月,用mid實現(xiàn),從每5位開始截取2位
3、RIGHT(入學時間,2):表示日,用right實現(xiàn),右邊截取2位
“&”用于連接每一部分與'/'。
第三步:運行結(jié)果:
可以看到入學時間1字段變成了日期型的
對于下面的“學生成績表7”,里面有一些重復的數(shù)據(jù)
你怎么來查詢不讓它重復呢?
你可以創(chuàng)建一個查詢并寫上語句:
select distinct 班級,學號,語文分數(shù),數(shù)學分數(shù)from 學生成績表7order by 學號
distinct就是顯示唯一的數(shù)據(jù)值,后面接想要的字段名稱即可
order by的作用就是按學號進行升序排序
運行,結(jié)果如下:
除了這種方法,還有一種方法同樣可以實現(xiàn)這種操作
SQL語句改為:
select 班級,學號,語文分數(shù),數(shù)學分數(shù)from 學生成績表7group by 班級,學號,語文分數(shù),數(shù)學分數(shù)order by 學號
運行結(jié)果:
SQL查詢語句中“between and”表示條件的范圍,一般跟在where的后面
下面是“學生成績表”
你想要查詢英語分數(shù)在40分到70分之間的學生:
你可以創(chuàng)建一個查詢并寫上語句:
select * from 學生成績表 where 英語分數(shù) between 40 and 70”
這里面的between…and就表示在哪個區(qū)間:
運行結(jié)果如下:
下面是所有學生成績表:
你想要把所有姓“張”的學生的成績提出來,應該怎么辦?
創(chuàng)建一個“查詢”并寫上語句:
select * from 學生成績表 where 姓名 like '張*'
從查詢語句可以看出“l(fā)ike”可以實現(xiàn)字符匹配
like '張*'字符匹配,“*”代表通配符
你想要提取姓“張”的學生,所以“張”字開頭,后面用“*”代替后面的名字
運行結(jié)果如下:
如果,你想要把所有學生名字中帶“冰”字的學生成績提出來,應該怎么辦?
創(chuàng)建一個“查詢”并寫上語句:
select * from 學生成績表 where 姓名 like '*冰*'
前后都加通配符,表示“冰”字可以在名字中的任何位置
運行結(jié)果如下:
如何用not like 來提取不包含這些字的學生
看下面這個語句:
select * from 學生成績表 where 姓名 not like '張*'
運行結(jié)果如下:
當然,如果想要提名字最后一個字是“玲”字和最后一個字不是“玲”字的學生成績,也很容易
1、【in】的用法
下面是學生成績表:
你只要一班和二班學生成績信息,創(chuàng)建一個查詢
查詢語句為:
select * from 學生成績表 where 班級 in('一班','二班')
【in】的用途就是把班級限制在('一班','二班')這個集合中
下面就是集合限制的查詢語句:
當然,集合里面是可以有多個元素的,也可以加上三班或者四班
運行結(jié)果如下:
顯示的查詢結(jié)果能夠看出,只有“一班”和“二班”的學生成績
那如果在“in”的前面加個“not”表達什么含義呢?看下面的【not in】的用法:
查詢語句:
select * from 學生成績表 where 班級 not in('一班','二班')
語句中多了一個“not”:
運行結(jié)果如下:
2、【null】的用法
從下面的學生成績表中可以看到,有些學生的班級信息漏掉了
你要把這些學生找出來
看這個查詢:
select * from 學生成績表 where 班級 is null
運行結(jié)果:
那么【is not null】就表示不為空:
select * from 學生成績表 where 班級 is not null
運行結(jié)果:
下面是一個“學生成績表”:
想要在學生成績表中提取一班、二班和三班學生的三科成績
這些學生英語不及格,但數(shù)學成績及格
語文分在50-70分之間,并且名字中不能包括“冰”字
創(chuàng)建一個查詢:
select * from 學生成績表 where 班級 in('一班','二班','三班') and 姓名 not like '*冰*' and 英語分數(shù)<60 and 數(shù)學分數(shù)>=60 and (語文分數(shù) between 50 and 70)
這個SQL查詢語句看著有點長,實際上并不復雜:
條件1,班級 in('一班','二班','三班'),這個用到了“in”,表示所在的集合;
條件2,姓名 not like '*冰*',這個用到了“not like”,表示不包含;
條件3,英語分數(shù)<60,這個用到了“<”,表示小于;
條件4,數(shù)學分數(shù)>=60,這個用到了“>=”,表示大于等于;
條件5,語文分數(shù) between 50 and 70,這個用到了“between…and”,表示介于兩個數(shù)之間。
同時滿足這一個條件,最后的查詢結(jié)果是:
有9個學生滿足以上五個條件。
其實,在條件1中,你還可以這樣寫:
條件1,班級 not in('四班',null)
運行的結(jié)果如下,查詢的結(jié)果也是這9個學生:
下面是一個“學生成績表”:
想要在學生成績表中提取一班和三班學生的三科成績
這些學生三門課只要有一門不及格就提出來
并且這些學生只能姓“張”或者姓“劉”
創(chuàng)建一個查詢:
select * from 學生成績表where 班級 in('一班','三班') and (姓名 like '張*' or 姓名 like '劉*') and (英語分數(shù)<60 or 數(shù)學分數(shù)<60 or 語文分數(shù)<60 )
來分析一下:
條件1,班級 in('一班','三班'),這個表示一班和三班的都提出來;
條件2,(姓名like '張*' or 姓名like '劉*'),這個表示姓張的或者姓劉的學生都提出來;
條件3,(英語分數(shù)<60 or 數(shù)學分數(shù)<60 or 語文分數(shù)<60 ),這個表示只要學生有一科沒及格就提出來。
以上的【or】都表示“或者”,最后的查詢結(jié)果是一共有16個學生符合條件:
你只要用括號把大的條件分清,再用or或者and去限制小的條件,基本是不會出錯的。
下面是一個“學生成績表”
已經(jīng)添加了三個字段,都是數(shù)字格式的,用于生成三組不同類型的隨機數(shù)字
還添加了一個自動編號格式的ID字段:
至于如何添加字段,可以翻看以前的文章
然后創(chuàng)建一個查詢,并寫上SQL查詢語句:
update 學生成績表 set 隨機數(shù)1=rnd(id)
以前講過update set的用法,它是對表進行更新操作,也就是修改表
來分析一下隨機數(shù)字是怎么產(chǎn)生的:
隨機數(shù)1=rnd(id) 表示rnd(id)產(chǎn)生一組0-1之間的隨機數(shù)
并放到隨機數(shù)1這個字段
Access數(shù)據(jù)庫很特殊,這里面用到了id字段
它就是一個自動編號字段,運行結(jié)果如下:
那如何產(chǎn)生0-100之間的隨機數(shù)字呢?請看下面的語句:
update 學生成績表 set 隨機數(shù)2=rnd(id)*100
將rnd(id)乘以100,表示0-100之間的隨機數(shù)字,結(jié)果如下:
上面產(chǎn)生的隨機數(shù)都是從0開始的
那么,如何產(chǎn)生兩個固定數(shù)字之間的數(shù)呢?
假如你想要50-100之間的數(shù)呢?
請看下面的語句:
update 學生成績表 set 隨機數(shù)3=rnd(id)*50 50
rnd(id)是0-1之間
rnd(id)*50就表示0-50之間
rnd(id)*50 50就表示50-100之間
運行結(jié)果如下:
下面是一個“學生成績表”
有語、數(shù)、外三科成績:
你想要加一個總分,實現(xiàn)字段的自動計算
第一步:打開表,點擊設計視圖:
增加一個總分字段,數(shù)據(jù)類型選擇“計算”:
在上面的空白處鍵入“[英語分數(shù)] [數(shù)學分數(shù)] [語文分數(shù)]”
所表達的含義是新增加的“總分”字段的內(nèi)容是“語數(shù)外三個字段的和”:
點擊確定后,回到數(shù)據(jù)表視圖下
可以看到多了一個“總分”字段,并且自動計算出了總分:
假使,你對期中的一科成績進行修改,那么總分會自動更新結(jié)果:
可以看到英語分數(shù)修改了,總分跟著就自動計算
有一些VF數(shù)據(jù)表需要導入Access數(shù)據(jù)庫:
你想要把它們導入到Access數(shù)據(jù)庫
第一步:點外部數(shù)據(jù)選項卡下的其他,選擇最后一項dBASE文件:
選擇VF數(shù)據(jù)庫所在的路徑后,雙擊文件即可:
確定后,出現(xiàn)了下面的錯誤信息“外部表不是預期的格式”:
什么原因呢?
這是因為Access數(shù)據(jù)庫并不識別現(xiàn)有的VF數(shù)據(jù)庫格式
只需要把VF數(shù)據(jù)庫另存一下,改一下格式就可以了
首先,我們把VF數(shù)據(jù)表打開,點擊文件,選擇導出:
確定后,出現(xiàn)下面這個界面,將默認的VF3.0格式改成下面的Dbase 格式:
確定后可以看到再次導入VF數(shù)據(jù)時,彈出了下面的界面:
說明你已經(jīng)成功導入了這個表:
第一步,雙擊打開你的數(shù)據(jù)庫:
第二步,點擊“文件”選項卡,選擇“選項”:
選擇選項后,會彈出以下界面:
第三步,對常規(guī)、當前數(shù)據(jù)庫、數(shù)據(jù)表和對象設計器等四項進行設置:
1、常規(guī):
選擇藍色后,點擊確定,可以看到數(shù)據(jù)庫的顏色變啦:
變成藍色了,你也可以選擇黑色:
2、“當前數(shù)據(jù)庫”設置:
選擇選項卡式,你的數(shù)據(jù)表可以很容易的找到:
下面這是重疊式的:
3、“數(shù)據(jù)表”設置:
你可以對數(shù)據(jù)表進行基本的設置
你選擇凸起的效果,字號大一點并加粗:
4、“對象設計器”設置:
你可以對默認的字段類型和字段大小等進行修改
原來是文本的可以設置數(shù)字的
這樣你增加一個字段后,它的類型就自動是數(shù)字的:
1、了解Access數(shù)據(jù)庫
Access是Microsoft公司推出的Office系列辦公自動化軟件的一個組件,是一個小型的數(shù)據(jù)庫管理系統(tǒng)。它廣泛應用于財務、行政、金融、統(tǒng)計、審計和科研項目等眾多領域。
2、創(chuàng)建Access數(shù)據(jù)庫
“開始”→“所有程序”→“Microsoft Office” →“Microsoft Access 2010” →啟動Access 2010:
在右下角,你可以選擇將該數(shù)據(jù)庫保存的路徑及文件名稱:
3、創(chuàng)建“數(shù)據(jù)表”
打開空的數(shù)據(jù)庫→創(chuàng)建→表
創(chuàng)建了名字為表1的表,你可以給它改名字
你可以直接將Excel表里面的數(shù)據(jù)粘貼過來:
粘貼之后給你的表起個名字:
當然了,也可以導入其它格式的數(shù)據(jù)到你這個數(shù)據(jù)庫里面
4、創(chuàng)建“查詢”
創(chuàng)建→查詢設計→單擊右鍵→SQL視圖
可以寫查詢語句了:
5、查詢分類
分兩大類:
一是選擇查詢
二是操作查詢
顯示的圖標都不太一樣,不同圖標表示不同種類的查詢,前面的文章講的很詳細。
6、常用的SQL查詢語句寫法
一是(選擇查詢):
Select * from 學生成績表 where 英語分數(shù)>=60
二是(更新查詢):
update 學生成績表 set 英語分數(shù)=英語分數(shù) 5
三是(生成表查詢):
Select 學號, 數(shù)學分數(shù) into 數(shù)學成績表 from 學生成績表
四是(追加查詢):
Insert into 一班成績 select * from學生成績表
五是(刪除查詢):
delete * from 一班成績 where 班級 = '二班'
7、常用的函數(shù)用法。
Access數(shù)據(jù)庫中一些常用的函數(shù),如:avg()函數(shù)、sum()函數(shù)、count()函數(shù)、max()函數(shù)、min()函數(shù)、left()函數(shù)、cdate()函數(shù)