Upload
dakota-swallow
View
228
Download
7
Embed Size (px)
Citation preview
Visual Basic 程式設計
講師:戴志華[email protected]國立台灣大學電機工程研究所
第十五章 資料庫 III
SQL
3
SQL
ORDER BY: 排序 SELECT au_id, author FROM authors
ORDER BY au_id [ASC|DESC]
4
SQL(cont’d)
Order by 之後的欄位可用數字代替Ex:
Select id, name, score from student order by 3
Order by 1, 3, 2
5
SQL(cont’d)
Adodc1.visible=falseAdodc1 的屬性對話盒 RecordSource CommandType=1-adCmdText CommandText= select * from authorsPrivate Sub Command1_Click() Adodc1.RecordSource = Text1.Text Adodc1.RefreshEnd Sub
6
SQL(cont’d)
Aggregate function( 統計用的函數 ) SUM: 計算總和 AVG: 計算平均 MAX: 找出最大值 MIN: 找出最小值 COUNT: 計算記錄數量 Distinct Count: 找出不同的值,再計算數量
7
SQL(cont’d)
Aggregate function Example SELECT COUNT (id) as count1 from student SELECT COUNT(author) FROM authors WHERE author like ‘a%’
FROM authors WHERE author like ‘a%’
SELECT COUNT(author)
8
Examples
Id Last_name First_name pager
1 Stephens Tina
2 Plew Linda
3 Glass Brandon 1234567
4 Glass Jacob 7654321
5 Wallace Mariah
6 Spurgeon Tiffany
Employee_TBL
9
Examples (cont’d)
Select count(id) from Employee_TBL6
Select count(pager) from Employee_TBL
2Select count(*) from Employee_TBL
6Select count(distinct (Last_name)) from Employee_TBL
5
10
Examples
Select count(id) as count1 from student where name like ‘ 小 %’select max ( chinese ) as maxchinese, min(chinese) as minchinese from studentselect max(chinese) as maxchiniese, min(chinese) as minchinese from student group by classselect max(chinese) as maxchiniese, min(chinese) as minchinese, class from student group by class
11
SQL(cont’d)
GROUP BY 分組 SELECT SEX, AVG(SCORE) From
student GROUP BY SEX ORDER BY 2 SELECT PubID, COUNT(PubID) From
Titles GROUP BY PubID ORDER BY PubID
計算每個出版社 (PubID) 有出版幾本書
12
SQL(cont’d)
Having 子句Select city, AVG(salary) from emp_tbl
Group by city Having AVG(salary) >20000
Where group byHaving order by
13
SQL(cont’d)
必需同時使用兩個 tableJOIN
計算本書的出版社名字** 先看看這個小例子 **計算每個人部門所在地
id name dep_id salary
00001 李小輝 A001 1000000002 連阿戰 A001 800000003 陳阿扁 A002 11000dep_id position
A001 台北A002 高雄
emp
dep
14
SQL(cont’d)
SELECT emp.id, dep.position FROM emp, dep WHERE emp.dep_id=dep.dep_idJOIN: (inner join) Join 後會產生 3*2=6 筆記錄 經由 where emp.dep_id=dep.dep_id 過濾後,剩
3 筆 Example
Select stduent.id,student.name,class.classname,class.tesacher from student,class where
student.class=class.class
15
SQL(cont’d)emp.id
emp.name
emp.salary
emp.dep_id
dep.dep_id
dep.position
00001
李小輝 10000 A001 A001 台北
00001
李小輝 10000 A001 A002 高雄
00002 連阿戰 8000 A001 A001 台北00002 連阿戰 8000 A001 A002 高雄00003 陳阿扁 11000 A002 A001 台北00003 陳阿扁 11000 A002 A002 高雄
16
SQL(cont’d)
若欄位名重覆,可加上表格名做為區分 emp.dep_id, dep.dep_id……
emp.id emp.name
emp.salary
emp.dep_id
dep.dep_id
dep.position
00001
李小輝 10000 A001 A001 台北
00002 連阿戰 8000 A001 A001 台北00003 陳阿扁 11000 A002 A002 高雄
17
SQL(cont’d)
SELECT Titles.title, Publishers.name, Publishers.address FROM Titles, Publishers WHERE Titles.PubId=Publishers.PubId
biblio.mdb
18
SQL(cont’d)
INSERT: 新增一筆資料 INSERT INTO Authors VALUES
(2000,‘alex’,0) INSERT INTO
Authors(year,name,count) VALUES (2000,‘alex’,0) INSERT INTO Authors select * from Authors_BK where…. ( 插入另一個表格的資料 )
19
SQL(cont’d)
INSERT INTO Student (id,name,phone)
VALUES (2006,‘alex’,NULL) INSERT INTO Student
(id,name,phone) VALUES (2006,‘alex’,’’)
20
SQL(cont’d)
DELETE: 刪除一些資料 DELETE FROM Authors WHERE
author like ‘A%’
UPDATE: 更新資料 UPDATE Authors SET Author=‘Alex’ , count=7 WHERE au_id=20000
21
SQL(cont’d)
http://www.1keydata.com/tw/sql/sql.htmlhttp://www.geocities.com/SiliconValley/Vista/2207/sql1.htmlhttp://www.w3schools.com/sql/default.asp
第十五章 資料庫 III
Recordset
23
Recordset.AddNewRecordset.DeleteRecordset.EditRecordset.Update
24
Recordset.MoveFirstRecordset.MoveLastRecordset.MoveNextRecordset.MovePrevious
25
Recordset.FilterRecordset.Find Find ( 條件設定式 , 略過資料筆數 , 搜尋方向 , 搜尋起始處 )
adSearchForward, adSearchBackward
Recordset.Bookmark
26
Dim bm as Variant xxx.Recordset.MoveFirstxxx.Recordset.Find “Sex = ‘True’”While Not xxx.Recordset.EOF
xxx.Recordset.Find “Sex = ‘True’”, 1,_ adSearchForward, xxx.Recordset.Bookmark
Wend