microsoft sql serverpaijit.lpru.ac.th/cgi-bin/s5672301/datacentric5.pdf · microsoft sql server [...
TRANSCRIPT
Data Centric Programming 5 / LPRU 1
Microsoft SQL Server
SQL Server ใชสถาปตยกรรมแบบ Client / Server คอมพวเตอรท
เปนไคลเอนตจะมบทบาทและหนาทแตกตางจากคอมพวเตอร ซงท าหนาท
เปนเซรฟเวอรดงน
เซรฟเวอรมบทบาทและหนาทดงน ไคลเอนตจะมบทบาทและหนาทดงน
ประมวลผลการแกไขและขอเรยกด
ขอมล
ด าเนนการอนทเกยวของกบขอมล
บงค บใชขอก าหนดและขอจ าก ด
เกยวกบฐานขอมล
บง ค บ ใ ช ม า ต รก า ร ร กษ าค ว าม
ปลอดภย
น าเสนอขอมลในรปแบบทเขาใจไดงาย
ใชงานไดงาย
จดใหมสวนตดตอกบผใชในลกษณะ
เครองมอ, ขอมล และรายงาน
ท าหนาทสงค ารองขอบรการไปย ง
เซรฟเวอร
Data Centric Programming 5 / LPRU 2
Microsoft SQL Server [ 2008 ]
ในการปฏบตการจะน าเสนอผาน Microsoft SQL Management Studio ( SSMS )
ซงเปน Microsoft SQL Server 2008 การน าไปใชปอนทดสอบควร
เปดโปรแกรม SSMS เชอมตอกบดาตาเบสเซรฟเวอร
Data Centric Programming 5 / LPRU 3
Microsoft SQL Server [ 2008 ]
เขาสระบบจดการฐานขอมล ผาน SSMS Object Explorer แสดงอ อ บ เ จ ก ต ต า ง ๆ ใ นฐานขอมล
Document Window สามารถใชแสดงสงตางๆ ไดหลายอยาง ขนอยกบเลอกใชออบเจกตใด
Data Centric Programming 5 / LPRU 4
Import / Export Data
เ ปนเครองมอทใชในการ
น าเขาขอมลในรปแบบอน
แ ล ะ ส า ม า ร ถ ส ง อ อ ก
ฐานขอมลไปยงของระบบอน
ๆ เชน Access, Oracle
โดยเครองมอนมลกษณะเปน
Wizard ทท างานเปน
ข นตอน ท าใหใชงานไดงาย
Microsoft SQL Server [ 2008 ]
ตนทาง
ปลายทาง
Data Centric Programming 5 / LPRU 5
Microsoft SQL Server [ 2008 ]
เลอกรปแบบการคดลอก เลอกตารางทจะคดลอก
พรอมด าเนนการ ด าเนนการ!!!
Data Centric Programming 5 / LPRU 6
Microsoft SQL Server [ 2008 ]
พนทเขยนควร
1 2
3
4
Data Centric Programming 5 / LPRU 7
Transact-SQL (T-SQL)
ศกษาฐานขอมลตวอยาง
กนกอน !!
Data Centric Programming 5 / LPRU 8
Transact-SQL (T-SQL)
ค าส งในภาษา T-SQL แบงออกเปนสามกลมดงน
ค าส งเพอจดการขอมล Data Manipulation Language (DML)
คอค าส งทใชบอย ไดแก Select, Update, Delete, Insert
ค าส งเพอนยามขอมล (Data Definition Language (DDL)
คอค าส งทใชสราง, แกไข หรอจดการตาราง รวมถงขอก าหนดใน
ฐานขอมล ไดแกค าส งทขนตนดวย Create, Alter, Drop
ค าส งเพอการควบคม (Data Control Language (DCL)
คอค าส งทเกยวของกบการรกษาความปลอดภย เชน ค าส ง Grant,
revoke, deny
Data Centric Programming 5 / LPRU 9
Data Manipulation Language (DML)
SELECT statement: (cont.)
- รปแบบค าส งโดยท วไป (simple queries) ดงน
SELECT [DISTINCT | ALL] { * | [column_expression [AS new_name]][,…] }
FROM table_name [alias] [,…]
[WHERE condition]
[GROUP BY column_list] [HAVING condition]
[ORDER BY column_list]
โดยท
FROM ระบ database tables ทตองการใช
WHERE ระบ เงอนไขในการคดเลอก rows ทตองการ
GROUP BY ระบ กลม rows ทมคาขอมลภายใน column เหมอนกน
HAVING ระบ เงอนไขในการคดเลอกตามการจดกลมของ Group by
ORDER BY ระบ การจดเรยงขอมลตามกลมของ column ทระบ
Data Centric Programming 5 / LPRU 10
Data Manipulation Language (DML)
WHERE Clause
เปนการสบคน rows ตามเงอนไขทก าหนดขน โดยมพนฐานของเงอนไขตามมาตรฐาน
ISO 5 สวนคอ
- Comparison การเปรยบเทยบคาขอมลภายใต attribute หนง ๆ โดยใช
เครองหมาย >, <, >=, <= <> เปนตน
- Range การตรวจสอบคาขอมลตามชวงหนง ๆ (range of values)
โดยใช BETWEEN...AND, NOT BETWEEN…AND
- Set membership การตรวจสอบคาขอมลในกลมหนง ๆ (set of values)
โดยใช IN (‘’,…) , NOT IN (‘’,…)
- Pattern match การตรวจสอบ string ตามรปแบบทก าหนด
โดยใช LIKE , NOT LIKE ผานสญลกษณ %, _
- Null การตรวจสอบคาขอมลทเปน null (unknown) value
โดยใช IS NULL, IS NOT NULL
Q
Data Centric Programming 5 / LPRU 11
Data Manipulation Language (DML)
Sorting Results (ORDER BY clause)
- โดยปกต SQL ผลลพธทไดจากการคนหามกอย record ทถกเขาถงปจจบน ดงนน
หากตองการใหผลลพธทไดเรยงล าดบตองใชค าส ง ORDER BY โดยcolumn ท
ตองการใหจดเรยงในรปประโยคค าส ง SELECT ซงสามารถก าหนดรปแบบการ
จดเรยงไดดงน
ASC (Ascending) นอยไปหามาก หรอ
DESC (Descending) มากไปหานอย
Grouping Results (GROUP BY clause)
- ส าหรบการสรปผลทไดจากการคนหา โดยน ารายละเอยด data record ทเหมอน
กนน ามารวมกนใหเหลอเพยง data record เดยว ดวยการใชค าส ง GROUP BY
ในรปประโยคค าส ง SELECT โดยมขอจ ากดตาม ISO Standard ดงน คอ
Item ทเกดจาก SELECT จะตอง Single Valued per Group
ใหความส าคญกบค าส ง WHERE กอนหากใชรวมกน
Q
Data Centric Programming 5 / LPRU 12
Data Manipulation Language (DML)
Subqueries (inner)
การสรางรปแบบคนหาทซบซอนมากยงขนทเรยกวา Nested Query ในลกษณะการ
น า SELECT ซอนใน SELECT เพอด าเนนการหนง ๆ อาท
SELECT sno, fname, lname, position
FROM Staff
WHERE bno = (SELECT bno
FROM branch
WHERE street = ‘16 ถ.เพชรเกษม 83/2’);
INNER SELECT
OUTER SELECT
ANY and ALL
- ใชส าหรบการตรวจสอบขอมลของ column หนง ๆ ตามจ านวน
- โดยหากด าเนนการดวย ALL เงอนไขตองเปนจรงทก ๆ คาขอมลทก าหนดโดย
Subquery และ
- หากด าเนนการดวย ANY เงอนไขสามารถเปนจรงบางสวน (one or more) ท
ปรากฏใน Subquery
Data Centric Programming 5 / LPRU 13
Data Manipulation Language (DML)
Multi-Table Queries
- เปนการคนหาขอมลจาก Table มากกวา 1 table โดยการรวม columns ของ
several tables ดวย Join operation
- SQL join operation เปนการด าเนนการ 2 tables ขนไป ดงนนเพอไมใหเกด
ความสบสนในการอางถง columns ของ table ตาง ๆ จงควรใช Alias ส าหรบระบ
ชอ table name ในค าส ง FROM
EXIST and NOT EXIST
- ออกแบบมาเพอใชเฉพาะ subqueries มคณสมบตเหมอนกบ
For Some / For All
- โดยจะท าการตรวจสอบชดขอมลหลกกบขอมลใน result table ทเปนของ
subqueries วามอย หรอไม
Q
Data Centric Programming 5 / LPRU 14
Data Manipulation Language (DML)
Database Update - SQL จดเปนรปแบบภาษาทสามารถจดการปรบปรงขอมลไดโดยรวม รวมไปถงการสบคน
ขอมลไดตามความตองการ
- การปรบปรงขอมล (Modify) เนอหาภายใน Table ถกจดการได 3 รปแบบคอ
INSERT การเพมชดขอมล (Data record) ใน Table
UPDATE การแกไขเปลยนแปลงขอมล ใน Table
DELETE การลบชดขอมลออกจาก Table
INSERT Statement
INSERT INTO table name [(column_list)]
VALUES (data_value_list)
ขอก าหนด 1. จ านวน items ในแตละ list ตองเหมอนกน
2. ต าแหนงของ data_value_list ตองเปนต าแหนงเดยวกนกบ
column_list หรอล าดบใน Table
3. ชนดขอมลตองเปนชนดเดยวกนกบทก าหนดไว
Data Centric Programming 5 / LPRU 15
Data Manipulation Language (DML)
UPDATE Statement
UPDATE table_name
SET column_name1 = data_value1 [,column_name2 = data_value2…]
[WHERE search_condition]
ขอก าหนด 1. สามารถก าหนด column_name ไดมากกวา 1 แต column_name ตอง
มชอเดยวกบทก าหนดใน table
2. ระบ WHERE ส าหรบก าหนด row ทตองการแกไข หากไมระบ WHERE
หมายถงแกไขทก ๆ row ของ Table
3. Data value ชนดขอมลตองเปนชนดเดยวกนกบ column ทก าหนดไว
DELETE Statement
DELETE FROM Table_name
[WHERE search_condition]
Data Centric Programming 5 / LPRU 16
Data Definition Language (DDL)
ดชน (INDEX)
ดชนคอแฟมขอมลในฮารดดสกซงมขอมลทคดลอกมาจากตารางในฐานขอมลมา
เพยงบางคอลมนและเรยงล าดบแถวขอมลแลว แฟมดชนมขนาดเลกและกนเนอท
นอย จงประมวลผลไดเรว ประโยชนคอท าใหควรรวดเรวขน โดยใชทรพยากรนอยคอ
การประมวลผลของซพย หนวยความจ า และเวลาในการท างาน
CREATE [ Unique ] [ Clustered | NonClusterd ] INDEX index_name
ON <Object> (column_name [ASC | DESC] [,….] )
[ INCLUDE (column_name [,…] ) ]
[ WHERE <filter_predicate> ]
[ WITH ( relational_index_option> [,…] ) ]
[ ON ( partition_schema_name ( column_name)
| filegroup_name | default ) ] ]
DROP INDEX [index_name] ON <Object>
Data Centric Programming 5 / LPRU 17
Data Definition Language (DDL)
ดชน (INDEX)
รายละเอยด Index แตละชนดคอ
1. Clustered Index
: เปนอนเดกซทสามารถก าหนดไดเพยงอนเดยว ส าหรบแตละตารางและขอมลใน
ตารางจะถกเรยงตามอนเดกซน (ใชโครงสราง B-Tree) โดยไมเหมาะส าหรบ
- คอลมนทมการเปลยนแปลงบอย เนองจาก SQL Server จ าเปนตองปรบปรง
B-Tree ใหสอดคลองอยเสมอ ท าใหเสยคาใชจายสง
- คอลมนทมขนาดของขอมลใหญ ๆ เชน Char(100) เปนตน
- คอลมนทมชนดขอมล เชน Text, Images, Bit เปนตน
2. Nonclustered Index
: เปนอนเดกซทก าหนดไดหลาย ๆ อนตอหนงตาราง และโครงสรางของอนเดกน
จะอางถงโครงสรางของ Clustered Index อกทหนง
3. Unique Index : เปนอนเดกซทก าหนดคอลมนทไมสามารถซ ากนได
Data Centric Programming 5 / LPRU 18
Data Definition Language (DDL)
ดชน (INDEX)
Unique :คอการท าดชนโดยใชคอลมนทไมมขอมลซ ากนเลย
Clustered :คอการสราง Cluster Index
Non Clustered :คอการสรางแบบ Non Cluster Index
index_name :คอชอของดชน
ON <Object> :คอชอของตารางทตองการท าดชน
column_name :คอชอคอลมนทตองการท าดชน
WHERE :คอการคดกรองรายการทตองการท าดชน
CREATE UNIQUE CLUSTERED INDEX Inx_TStudent
ON TStudent (Std_id);
CREATE UNIQUE CLUSTERED INDEX Inx_TBookGrade
ON TBookGrade (id_no) I
Data Centric Programming 5 / LPRU 19
Data Definition Language (DDL)
วว (VIEW)
วว คอ ควรทท าหนาทเหมอนตารางเสมอน ซงอาจมาจากหลาย ๆ ตาราง โดย
วตถประสงคของววคอกนผใชออกจากการเขาถงตารางจรงดวยเหตผลดานความ
ปลอดภย และสามารถน าววมาประยกตใชรวมกบดชน เพอเพมประสทธภาพ การควรได
และขอมลจะเปลยนไปหากมการเปลยนแปลงขอมลในตารางทววอางอง และววอาจซอน
กนได นนคอ ววอาจควรขอมลจากววอนไดดวย แตมขอจ ากดคอรบพารามเตอรไมได
CREATE VIEW view_name [( column[,…] ) ]
[ WITH < view_attribute> [,…] ]
AS
Select_Statement
[ WITH CHECK OPTION]
DROP VIEW view_name
Data Centric Programming 5 / LPRU 20
Data Definition Language (DDL)
วว (VIEW)
view_name :คอชอววทเราสรางขน
column :คอต งชอใหกบคอลมนของววใหม ซงมกใชในกรณทคอลมนทเลอก
จากตารางนนถกค านวณคา หรอมการใชงานฟงกช น
view_attribute :คอก าหนดคณสมบตของวว ม 2 แบบ
(1) ENCRYPTION เขารหสค าส งทสรางวว
(2) SCHEMABINDING ก าหนดใหววสรางดชนได
select_statement:คอค าส ง
WITH CHECK OPTION: คออนญาตใหแกไขขอมลผานววได ถาตรงตาม
เงอนไขทก าหนดใน WHERE ของ Select_Statement
CREATE VIEW Report1 WITH ENCRYPTIONON
AS
SELECT * FROM TStudent
WHERE Prog_id like ‘266’
GO
V
Data Centric Programming 5 / LPRU 21
Data Definition Language (DDL)
ขอควรรในการสรางและใชงานวว (VIEW)
1. ตารางเสมอนทสรางขนสามารถมไดไมเกน 1024 คอลมน และถาคอลมนไมมชอ
เพราะเกดจากการประมวลผล ใหก าหนดชอเพออางองดวย
2. SELECT ทใชในการสรางวว หามใช
- ORDER BY เวนแตจะมการใชงาน TOP รวมดวย
- INTO เนองจากววเปนแคตารางเสมอนเทานน
3. ออบเจคทอางถงตองเปน Base Relation
4. ไมสามารถใช AFTER Trigger แตสามารถใช INSTEAD OF Trigger ได
5. การใชวว สามารถก าหนดสทธในการใชงานใหแกผใชแตละคนในระบบฐานขอมลได
6. การแกไขเปลยนแปลงขอมลผานวว ดวยค าส ง INSERT, UPDATE, DELETE จะ
ไมสามารถท าไดเตมทเหมอนตาราง โดยมขอจ ากดและขอควรรดงน
- จะไมสามารถแทรกลงววหรอลบขอมลจากววทสรางจากการควรหลาย ๆ ตาราง
สวนการแกไขจะด าเนนการเฉพาะคอลมนของตารางทเลอกขนมา
- จะไมสามารถเพม/ลบ/แกไขขอมลกบคอลมนทเกดจากการค านวณ และควรทม
การท า UNION, GROUP BY, HAVING, ORDER_BY
Data Centric Programming 5 / LPRU 22
Data Definition Language (DDL)
ทรกเกอร (TRIGGER)
ทรกเกอร คอ ออบเจกตเหมอนกบววหรอตาราง ทรกเกอรคอโคดทจะท างานเองโดย
อตโนมตเมอเกดเหตการณบางอยาง มประโยชนเพราะมนท าหนาทแจงเตอน ปองกน
หรอเปลยนแปลงกระบวนการทเกดขนกบฐานขอมลตามสถานการณทก าหนด โดยม 2
รปแบบ คอ แบบ AFTER (ทรกเกอรทรนหลงจากเหตการณด าเนนไปแลว) และ
INSTEAD OF (ทรกเกอรทรนกอนเกดเหตการณ)
CREATE TRIGGER trigger_name
ON table_name
{ AFTER | INSTEAD OF {INSERT, DELETE , UPDATE }
[ WITH ENCRYPTION]
AS
BEGIN Sql_Statement
END
DROP TRIGGER trigger_name
Data Centric Programming 5 / LPRU 23
Data Definition Language (DDL)
ทรกเกอร (TRIGGER)
CREATE TRIGGER Check1 ON TGrade
AFTER Update
AS
IF UPDATE(tgrade)
PRINT ‘มเกรดถกปรบปรง’
GO
CREATE TRIGGER Check2 ON TStudent
INSTEAD OF DELETE
AS
IF @@Rowcount>1 BEGIN
Raiserror(‘คณไมสามารถลบเกน 1 เรคคอรด’,16,10)
END
GO
Data Centric Programming 5 / LPRU 24
Data Definition Language (DDL)
ขอควรรในการสรางและใชงานทรกเกอร (Trigger)
1. ตารางเสมอนทสรางขนสามารถมไดไมเกน 1024 คอลมน และถาคอลมนไมมชอ
เพราะเกดจากการประมวลผล ใหก าหนดชอเพออางองดวย
2. SELECT ทใชในการสรางวว หามใช
- ORDER BY เวนแตจะมการใชงาน TOP รวมดวย
- INTO เนองจากววเปนแคตารางเสมอนเทานน
3. ออบเจคทอางถงตองเปน Base Relation
4. ไมสามารถใช AFTER Trigger แตสามารถใช INSTEAD OF Trigger ได
5. การใชวว สามารถก าหนดสทธในการใชงานใหแกผใชแตละคนในระบบฐานขอมลได
6. การแกไขเปลยนแปลงขอมลผานวว ดวยค าส ง INSERT, UPDATE, DELETE จะ
ไมสามารถท าไดเตมทเหมอนตาราง โดยมขอจ ากดและขอควรรดงน
- จะไมสามารถแทรกลงววหรอลบขอมลจากววทสรางจากการควรหลาย ๆ ตาราง
สวนการแกไขจะด าเนนการเฉพาะคอลมนของตารางทเลอกขนมา
- จะไมสามารถเพม/ลบ/แกไขขอมลกบคอลมนทเกดจากการค านวณ และควรทม
การท า UNION, GROUP BY, HAVING, ORDER_BY