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

## Presentation on theme: "講師：戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師：戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所."— Presentation transcript:

Visual Basic 程式設計 講師：戴志華 國立台灣大學電機工程研究所

SQL ORDER BY: 排序 SELECT au_id, author FROM authors ORDER BY au_id [ASC|DESC]

SQL(cont’d) Order by 之後的欄位可用數字代替 Ex:
Select id, name, score from student order by 3 Order by 1, 3, 2

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

FROM authors WHERE author like ‘a%’
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)

Examples Employee_TBL Id Last_name First_name pager 1 Stephens Tina 2
Plew Linda 3 Glass Brandon 4 Jacob 5 Wallace Mariah 6 Spurgeon Tiffany

Examples (cont’d) Select count(id) from Employee_TBL 6 2
Select count(pager) from Employee_TBL 2 Select count(*) from Employee_TBL Select count(distinct (Last_name)) from Employee_TBL 5

Examples Select count(id) as count1 from student where name like ‘小%’
select max ( chinese ) as maxchinese, min(chinese) as minchinese from student select max(chinese) as maxchiniese, min(chinese) as minchinese from student group by class select max(chinese) as maxchiniese, min(chinese) as minchinese, class from student group by class

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

SQL(cont’d) Having 子句 Select city, AVG(salary) from emp_tbl
Group by city Having AVG(salary) >20000 Where group byHaving order by

SQL(cont’d) 必需同時使用兩個tableJOIN id name dep_id salary 00001 李小輝 A001

SQL(cont’d) SELECT emp.id, dep.position FROM emp, dep WHERE emp.dep_id=dep.dep_id JOIN: (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

SQL(cont’d) 00001 李小輝 10000 A001 台北 A002 高雄 00002 連阿戰 8000 00003 陳阿扁
emp.id emp.name emp.salary emp.dep_id dep.dep_id dep.position 00001 李小輝 10000 A001 台北 A002 高雄 00002 連阿戰 8000 00003 陳阿扁 11000

SQL(cont’d) 若欄位名重覆，可加上表格名做為區分 emp.dep_id, dep.dep_id…… 00001 李小輝 10000
emp.id emp.name emp.salary emp.dep_id dep.dep_id dep.position 00001 李小輝 10000 A001 台北 00002 連阿戰 8000 00003 陳阿扁 11000 A002 高雄

SQL(cont’d) SELECT Titles.title, Publishers.name, Publishers.address FROM Titles, Publishers WHERE Titles.PubId=Publishers.PubId biblio.mdb

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

SQL(cont’d) INSERT INTO Student (id,name,phone)
VALUES (2006,‘alex’,NULL) VALUES (2006,‘alex’,’’)

SQL(cont’d) DELETE:刪除一些資料 UPDATE:更新資料
DELETE FROM Authors WHERE author like ‘A%’ UPDATE:更新資料 UPDATE Authors SET Author=‘Alex’ , count=7 WHERE au_id=20000

SQL(cont’d) http://www.1keydata.com/tw/sql/sql.html

Recordset.MoveFirst Recordset.MoveLast Recordset.MoveNext Recordset.MovePrevious

Recordset.Filter Recordset.Find Recordset.Bookmark