26
Visual Basic 程程程程 程程 程程程 [email protected] 程程程程程程程程程程程程程

Visual Basic 程式設計 講師:戴志華 [email protected] 國立台灣大學電機工程研究所

Embed Size (px)

Citation preview

Page 1: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

Visual Basic 程式設計

講師:戴志華[email protected]國立台灣大學電機工程研究所

Page 2: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

第十五章 資料庫 III

SQL

Page 3: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

3

SQL

ORDER BY: 排序 SELECT au_id, author FROM authors

ORDER BY au_id [ASC|DESC]

Page 4: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

4

SQL(cont’d)

Order by 之後的欄位可用數字代替Ex:

Select id, name, score from student order by 3

Order by 1, 3, 2

Page 5: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 6: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

6

SQL(cont’d)

Aggregate function( 統計用的函數 ) SUM: 計算總和 AVG: 計算平均 MAX: 找出最大值 MIN: 找出最小值 COUNT: 計算記錄數量 Distinct Count: 找出不同的值,再計算數量

Page 7: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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)

Page 8: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 9: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 10: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 11: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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) 有出版幾本書

Page 12: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

12

SQL(cont’d)

Having 子句Select city, AVG(salary) from emp_tbl

Group by city Having AVG(salary) >20000

Where group byHaving order by

Page 13: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

13

SQL(cont’d)

必需同時使用兩個 tableJOIN

計算本書的出版社名字** 先看看這個小例子 **計算每個人部門所在地

id name dep_id salary

00001 李小輝 A001 1000000002 連阿戰 A001 800000003 陳阿扁 A002 11000dep_id position

A001 台北A002 高雄

emp

dep

Page 14: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 15: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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 高雄

Page 16: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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 高雄

Page 17: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

17

SQL(cont’d)

SELECT Titles.title, Publishers.name, Publishers.address FROM Titles, Publishers WHERE Titles.PubId=Publishers.PubId

biblio.mdb

Page 18: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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…. ( 插入另一個表格的資料 )

Page 19: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

19

SQL(cont’d)

INSERT INTO Student (id,name,phone)

VALUES (2006,‘alex’,NULL) INSERT INTO Student

(id,name,phone) VALUES (2006,‘alex’,’’)

Page 20: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

20

SQL(cont’d)

DELETE: 刪除一些資料 DELETE FROM Authors WHERE

author like ‘A%’

UPDATE: 更新資料 UPDATE Authors SET Author=‘Alex’ , count=7 WHERE au_id=20000

Page 21: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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

Page 22: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

第十五章 資料庫 III

Recordset

Page 23: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

23

Recordset.AddNewRecordset.DeleteRecordset.EditRecordset.Update

Page 24: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

24

Recordset.MoveFirstRecordset.MoveLastRecordset.MoveNextRecordset.MovePrevious

Page 25: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

25

Recordset.FilterRecordset.Find Find ( 條件設定式 , 略過資料筆數 , 搜尋方向 , 搜尋起始處 )

adSearchForward, adSearchBackward

Recordset.Bookmark

Page 26: Visual Basic 程式設計 講師:戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

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