ภาษา SQL (Structured Query Language)

Download Report

Transcript ภาษา SQL (Structured Query Language)

ภาษา SQL
(Structured Query Language)
1
SQL (Structured Query Language)
เป็ นภาษามาตราฐานบนระบบฐานข้ อมูลเชิงสัมพันธ์ สามารถใช้ งานได้ กบั เครื่องคอมพิวเตอร์
หลายระดับ ปัจจุบันมีซอฟต์แวร์ระบบจัดการฐานข้ อมูล (DBMS) ที่สนับสนุนการใช้ คาสั่ง SQL เช่น
ORACLE, DB2, MS-SQL, MS-Access
นอกจากนี้ภาษา
SQL ถูกนามาใช้ เขียนร่วมกับโปรแกรมภาษาต่างๆ เช่น ภาษา C/C++, VisualBasic และ
Java
วัตถุประสงค์ของ SQL
1.
สร้ างฐานข้ อมูลและ ตาราง
2. สนับสนุนการจัดการฐานข้ อมูล ซึ่งประกอบด้ วย การเพิ่ม
การปรับปรุง และการลบข้ อมูล
3. สนับสนุนการเรียกใช้ หรือ ค้ นหาข้ อมูล
2
ประเภทของคำสังภำษำ
่
SQL
1. ภำษำนิยำมข้อมูล(Data Definition Language :
DDL) เป็ นคาสั่งที่ใช้ ในการสร้ างฐานข้ อมูล กาหนดโครงสร้ างข้ อมูลว่ามี
Attributeใด ชนิดของข้ อมูล รวมทั้งการเปลี่ยนแปลงตาราง และการสร้ างดัชนี
คาสั่ง : CREATE,DROP,ALTER
3
2. ภาษาจัดการข้ อมูล (Data Manipulation
Language :DML) เป็ นคำสั่งที่ใช้ในกำรเรี ยกใช้ เพิ่ม ลบ และ
เปลี่ยนแปลงข้อมูลในตำรำง
คำสั่ง :
SELECT,INSERT,UPDATE,DELETE
3. ภาษาควบคุมข้ อมูล (Data Control Language :
DCL) เป็ นคำสั่งที่ใช้ในกำรกำหนดสิ ทธิ กำรอนุญำติ หรื อ ยกเลิก กำรเข้ำถึง
ฐำนข้อมูล เพื่อป้ องกันควำมปลอดภัยของฐำนข้อมูล
คำสั่ง : GRANT,REVOKE
4
ภำษำนิยำมข้อมูล
(Data Definition Language: DDL)
ภาษานิยามข้ อมูลประกอบด้ วยคาสั่ง ดังนี้
CREATE คำสังที
่ ใ่ ช้ในกำรสร้ำง
- CREATE TABLE สร้ างตาราง
- CREATE INDEX สร้ างดัชนี
- CREATE VIEW สร้ างวิว
DROP คำสังที
่ ใ่ ช้ในกำรลบ
- DROP TABLE
ลบตาราง
- DROP INDEX
ลบดัชนี
- DROP VIEW
ลบวิว
ALTER คำสังที
่ ใ่ ช้ในกำรเปลีย่ นแปลงโครงสร้ำงตำรำง
5
กำรสร้ำงตำรำง : CREATE TABLE
คาสั่งที่ใช้ คือ CREATE TABLE มีรูปแบบ คือ
CREATE TABLE table_name
( field1 type [(size)] [NOT NULL] ,
field2 type [(size)] [NOT NULL] ,
…………...
CONSTRAINT name
PRIMARY KEY (primary1, primary2 , ...)
FOREIGN KEY (ref1, ref2 , ..) REFERENCES
foreigntable (foreignfield1 , foreignfield2 , ...)
);
6
ตัวอย่ำง
Create table Student
( ID integer PRIMARY KEY
NOT NULL,
FName char(30),
LName char(30)
)
7
8
กำรลบตำรำง : DROP TABLE
คาสั่งที่ใช้ ในการลบตารางจะใช้ คาสั่ง
DROP TABLE tablename
ตัวอย่าง
DROP TABLE Employee;
9
กำรสร้ำงและลบดัชนี:CREATE /DROP INDEX
การสร้ างดัชนีสาหรับตาราง
- เลือก column หรือ กลุ่มของ column จากตารางขึ้นมา
เป็ นดัชนี เช่น ชื่อนักศึกษา
- ในหนึ่งตารางสามารถมีดัชนีได้ หลายดัชนี
- ช่วยในการค้ นหาข้ อมูลได้ รวดเร็ว
10
กำรสร้ำงและลบดัชนี:CREATE /DROP INDEX
คาสั่งที่ใช้ ในการสร้ างและลบดัชนี
• CREATE INDEX Index-name
ON table-name(attribute-name1,….)
ex. CREATE INDEX PRO_INDEX
ON PRODUCT(PRODUCT_NAME);
• DROP INDEX Index-name
ex. DROP INDEX PRO_INDEX ;
11
ตัวอย่าง การสร้ างดัชนี โดยใช้ ช่ อื คนงานเป็ นดัชนี
CREATE INDEX NAME_IDX
ON WORKER (WK_NAME)
ตัวอย่าง การสร้ างดัชนี โดยใช้ รหัสคนงานเป็ นดัชนี
CREATE INDEX CODE_IDX
ON WORKER (WK_ID)
12
13
14
กำรสร้ำงวิว : CREATE VIEW
เป็ นการสร้ างตารางสมมติข้ นึ มาให้ กบั ผู้ใช้ งาน โดยการดึงข้ อมูล
บางส่วนมาจากฐานข้ อมูล เพื่อให้ ผ้ ูใช้ งานเรียกข้ อมูลที่ต้องการจากวิวที่
กาหนดให้ เท่านั้น คาสั่งที่ใช้ ในการสร้ างวิว คือ
CREATE VIEW view-name
[column_name1, column_name2,...]
AS SELECT attribute1,attribute2,..
FROM table-name
WHERE condition
การลบวิว ใช้ คาสั่ง
DROP VIEW view-name
15
ex. Create view my_view1
as select pro_id ,
pro_name , pro_price
from product
where supid = 5 ;
ex.
DROP VIEW
16
กำรเปลีย่ นแปลงโครงสร้ำงตำรำง : ALTER TABLE
เป็ นการเปลี่ยนแปลงโครงสร้ างตารางที่สร้ างไว้ ดังนี้
1. ADD เป็ นการเพิ่ม column ในตาราง
2. MODIFY เป็ นการแก้ ไขเปลี่ยนแปลง column
3. DROP เป็ นการลบ column
คาสั่งที่ใช้
ALTER TABLE tablename
[ COMMAND [COLUMN]column_name
datatype [CONSTRAINT]];
COMMAND คือ ADD,MODIFY,DROP
17
Alter Table
•
ADD Attribute name
ex. ALTER TABLE Employee
ADD Tel CHAR( 10) ;
• MODIFY Structure
ex. ALTER TABLE Employee
MODIFY ( EName CHAR(35) );
• DROP Attribute name
ex. ALTER TABLE Employee
DROP Tel CHAR( 10) ;
18
ภำษำจัดกำรข้อมูล
(Data Manipulation Language:DML)
ภาษาจัดการข้ อมูลประกอบด้ วยคาสั่ง ดังนี้
SELECT
ใช้ เรียกดูข้อมูลในฐานข้ อมูล
INSERT
ใช้ สาหรับเพิ่มข้ อมูลในตาราง
UPDATE
ใช้ สาหรับปรับปรุงข้ อมูลในตาราง
DELETE
ใช้ สาหรับลบข้ อมูลจากตาราง
19
คำสัง่ SELECT
เป็ นคาสั่งที่ใช้ สาหรับเรียกดูข้อมูลจากตารางในฐานข้ อมูล
มีรูปแบบอยู่หลายรูปแบบ
สามารถเรียกดูข้อมูลโดยมีเงื่อนไขประกอบ
รวมทั้งเรียกดูข้อมูลได้ จากหลายตาราง
รูปแบบของคาสั่งประกอบด้ วย 3 ส่วนหลัก คือ
SELECT…..FROM…..[WHERE…]
20
21
DISTINCT การเรียกดูข้อมูลโดยไม่แสดงรายการที่ซา้
FROM
กาหนดตารางที่ต้องการใช้ เรียกดูข้อมูล
WHERE เงื่อนไขที่ใช้ ในการค้ นหาข้ อมูลจากตาราง
ORDER BY กาหนดการเรียงลาดับข้ อมูล โดยที่
DESC การเรียงลาดับจากมากไปน้ อย
ASC
การเรียงลาดับจากน้ อยไปมาก
GROUP BY การจัดกลุ่มแถวข้ อมูลตามคอลัมน์ท่รี ะบุ
HAVING
เงื่อนไขที่ใช้ กบั ข้ อมูลที่ได้ จาก
GROUP BY เท่านั้น
22
การเรียกดูข้อมูลทุก column โดยมีเงื่อนไข
SELECT * FROM < table> WHERE <condition>
การเรียกดูข้อมูลบาง column
SELECT <column> FROM < table>
การเรียกดูจากหลายตาราง
SELECT * FROM < table1> <table2>
23
24
25
26
27
28
Mathematics Operator
เป็ น operator ที่ใช้ ในการคานวณ ได้ แก่ เครื่องหมาย +, -,
*, / ตัวอย่าง
SELECT ID,FName,LName,Salary*0.05 AS Commision
FROM Employee;
ID
1
2
3
4
5
FName
John
Mary
Andy
Jane
John
LName
Smith
Jones
Brown
Wright
Jones
Commision
650
750
900
1,000
1,050
29
WHERE Condition

Mathematics Operator
+,-,*,/
ex. Select pro_name ,
pro_price * amount
as sum
from product ;
30
Comparison Operator
เป็ น Operator ที่ใช้ ในการเปรียบเทียบ โดยใช้ เครื่องหมาย ดังนี้
= เท่ากับ
< น้ อยกว่า
> มากกว่า
<= น้ อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
<> ไม่เท่ากับ
31
WHERE Condition

Comparison Operator
> , < , >= ,< = ,<>
=,
ex. Select pro_id ,
pro_name
from product
where
(price >=5 ) and
(amount >=20) ;
32

Logical Operator
in, between , like, not
SELECT pro_id, pro_name,sup_id
FROM product
WHERE sup_id not in ( 1,2);
33
34
WHERE Condition
SELECT pro_id, pro_name , pro_price
FROM product
WHERE pro_price between 5 and 20
35
WHERE Condition
SELECT pro_id, pro_name
FROM product
WHERE pro_name like "p*"
36
กำรเรียกดูขอ้ มูลจำกหลำยตำรำง
37
38
39
กำรเรียกดูแบบซ้อนกัน : Subqueries หรือ Nested query
เป็ นการเรียกดูข้อมูลด้ วยคาสั่ง SELECT ซ้ อน คาสั่ง SELECT
ในลักษณะของ Nested query
ชุดคาสั่ง SELECT ข้ างในจะถูกประมวลผลก่อน แล้ วส่งผลลัพธ์
ให้ กบั คาสั่ง SELECT ข้ างนอก
รูปแบบ มีดังนี้
SELECT …….
FROM……..
WHERE………
(SELECT ……..
FROM………..
WHERE………. )
40
ตัวอย่าง ต้ องการหารายชื่อพนักงานที่อยู่แผนกเดียวกับ Andy
Employee
Name
John
Mary
Peter
Andy
Anne
Department
Marketing
Sales
Sales
Marketing
Marketing
41
42
กำรใช้ Aggregate Function
เป็ นการใช้ Function ทางสถิติเพื่อช่วยในการคานวณ
ประกอบด้ วย Function ต่างๆ ดังนี้
COUNT
เป็ นการนับจานวนแถวข้ อมูล
SUM
เป็ นการหาผลรวม
AVG
เป็ นการหาค่าเฉลี่ย
MIN
เป็ นการหาค่าต่าสุด
MAX
เป็ นการหาค่าสูงสุด
43
44
45
กำรเรียงลำดับข้อมูล
46
กำรใช้ GROUP BY
เป็ นการจัดกลุ่มแถวข้ อมูลตามคอลัมน์ท่รี ะบุ โดยข้ อมูลที่
เหมือนกันจะถูกจัดให้ อยู่ในกลุ่มเดียวกัน
47
48
49
กำรใช้ HAVING
ประโยค HAVING จะใช้ ร่วมกับ GROUP BY เสมอ โดย
HAVING จะแสดงข้ อมูลที่ผ่านการจัดกลุ่มด้ วย GROUP BY เพียง
บางส่วนตามเงื่อนไขที่กาหนดไว้ ใน HAVING
50
กำรใช้คำสัง่ JOIN
เป็ นการนาข้ อมูลจาก 2 ตารางขึ้นไปมารวมกันภายใต้ เงื่อนไขที่
กาหนด มี 2 แบบ คือ
1. INNER JOIN
2. OUTER JOIN
INNER JOIN
เป็ นการนาข้ อมูลจาก 2 ตารางที่มีค่าของAttribute หรือ
column ตรงกัน(match)มารวมกัน มีรูปแบบ คือ
SELECT…..FROM table1
INNER JOIN table2
ON table1.column = table2.column
51
52
INNER JOIN
SELECT TASTER_RESULT.TASTERID, MYPRODUCT.PNAME,
TASTER_RESULT.COMMENT
FROM TASTER_RESULT INNER JOIN MYPRODUCT
ON TASTER_RESULT.PID = MYPRODUCT.PID
ผลลัพธ์ คือ
TASTERID PNAME
COMMENT
1
2
3
MALEE JUICE
RICH FLAVOR
MALEE JUICE
TOO SWEET
BALL ICE CREAM SMOOTH TASTS
53
OUTER JOIN
เป็ นการแสดงผลการรวมข้ อมูลจาก 2 ตาราง ทุก record แม้ ว่า
จะมีบาง record ที่ไม่มีค่าของAttribute หรือ column ตรงกัน
มี 2 แบบ คือ
1. RIGHT JOIN เป็ นการให้ ตารางทางขวามือของคาสั่ง JOIN
เป็ นตัวตั้งในการเลือกข้ อมูลจากตารางทางซ้ าย กรณีท่ไี ม่มีข้อมูลตรงกัน
ให้ ใส่ค่า NULL ในตาราง มีรูปแบบ คือ
SELECT ……
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column
54
55
SELECT BOOK.NAME, BORROWING.CUSID,
BORROWING.DATE-IN
FROM BORROWING
RIGHT JOIN BOOK
ON BORROWING.BID = BOOK.ID
ผลลัพธ์ BNAME
คือ
CUDID
DATE-IN
ENGLISH
2001 MATH
NULL
3 JUL 2001
1 AUG 2001
NULL
10
5 OCT
NULL
COMPUTER
7
COMPUTER
7
ENGINEER NULL
THAI
NULL
56
2. LIFT JOIN เป็ นการให้ ตารางทางซ้ ายมือของคาสั่ง JOIN
เป็ นตัวตั้งในการเลือกข้ อมูลจากตารางทางขวา กรณีท่ไี ม่มีข้อมูลตรงกัน
ให้ ใส่ค่า NULL ในตาราง มีรูปแบบ คือ
SELECT ……
FROM table1
LEFT JOIN table2 ON table1.column = table2.column
SELECT BOOK.NAME, BORROWING.CUSID,
BORROWING.DATE-IN
FROM BOOK
LEFT JOIN BORROWING
ON BORROWING.BID = BOOK.ID
ผลลัพธ์ท่ไี ด้ เช่นเดียวกับ RIGHT JOIN
ตัวอย่าง
57
คาสั่ง INSERT
เป็ นการเพิ่มข้ อมูลในตาราง
INSERT INTO table-name
VALUE (var1 , var2 ,
….)
ex. Insert into product
value (10,book,30, 5 );
58
คำสัง่ UPDATE
เป็ นคาสั่งปรับปรุงข้ อมูลในตาราง
UPDATE table-name
SET column-name1=value1[,column-name2=value2,...]
[WHERE condition];
คำสัง่ DELETE
เป็ นคาสั่งลบข้ อมูลแถวข้ อมูลในตาราง
DELETE table-name
[WHERE condition];
59
60
ภำษำควบคุมข้อมูล (Data Control Language : DCL)
เป็ นการควบคุมความปลอดภัยของข้ อมูลในฐานข้ อมูล เนื่องจากมี
ผู้ใช้ งานหลายคนสามารถเข้ าถึงข้ อมูลได้
ผู้บริหารฐานข้ อมูล(DBA) จะเป็ นผู้กาหนดสิทธิการใช้ งานให้ กบั
ผู้ใช้ ในแต่ละระดับ เพื่อป้ องกันมิให้ผูไ้ ม่มีสิทธิเข้ำถึงข้อมูลจัดกำรกับ
ข้อมูลในฐำนข้อมูลได้
ประกอบด้วยคำสัง่ ดังนี้
GRANT
เป็ นกำรสิทธิให้แก่ผูใ้ ช้งำน
REVOKE เป็ นกำรยกเลิกสิทธิ
61
คำสัง่ GRANT
เป็ นคาสั่งที่ใช้ ในการกาหนดสิทธิให้ แก่ผ้ ูใช้ แต่ละคน ว่าจะให้
ใครมีสทิ ธิในการจัดการข้ อมูลในตารางหรือวิวใดได้ บ้าง
การจัดการข้ อมูลจะหมายถึงการเรียกใช้ (SELECT) การเพิ่ม
(INSERT) การลบ (DELETE) หรือการปรับปรุง (UPDATE) ข้ อมูล
คาสั่ง คือ GRANT <privilege list>
ON table-name or view-name
TO <user list>
โดยที่ <privilege list> คือ สิทธิในการจัดการข้ อมูล เช่น SELECT,
INSERT, DELETE หรือ UPDATE
table or view name คือ ชื่อตารางหรือวิวที่ให้ สทิ ธิการใช้
<user list> คือ กลุ่มผู้ใช้ ที่ถูกให้ สทิ ธิในการจัดการข้ อมูล
62
ตัวอย่าง1 การให้ สทิ ธิกบั วิชัยและพิสมัยในการเรียกดูข้อมูลจากตาราง
คนงาน(WORKER)
GRANT SELECT
ON WORKER TO WICHAI,PISAMAI;
ตัวอย่าง 2 การให้ สทิ ธิกบั ผู้ใช้ ทุกคนในการเรียกดูข้อมูลจาก
ตาราง
GRANT SELECT
ON BRANCH TO PUBLIC;
ตัวอย่าง 3 การให้ สทิ ธิทุกอย่างในการจัดการข้ อมูลในตาราง
WORKER แก่วันเพ็ญ
GRANT ALL
ON WORKER TO WANPEN;
63
ตัวอย่าง 4 การให้ สทิ ธิกบั สมศักดิ์ในการเรียกดูข้อมูลจากตารางคนงาน
(WORKER) โดยสมศักดิ์สามารถให้ สทิ ธิกบั ผู้ใช้ คนอื่นต่อได้ อกี จากคาสั่ง
WITH GRANT OPTION ซึ่งสามารถให้ สทิ ธิต่อกันเป็ นทอดระหว่างผู้ใช้
GRANT SELECT ON WORKER
TO SOMSAK WITH GRANT OPTION;
สมศักดิ์สามารถให้ สทิ ธิการเรียกดูข้อมูลในตารางคนงานแก่วิสนั
GRANT SELECT ON WORKER TO WISAN;
ตัวอย่าง 5 การให้ ผ้ ูจัดการมีสทิ ธิทุกอย่างในตาราง WORKER
GRANT ALL PRIVILEGES
ON WORKER
TO MANAGER WITH GRANT OPTION;
64
คำสัง่ REVOKE
เป็ นการยกเลิกสิทธิใดๆแก่ผ้ ูใช้ ตามที่ได้ มีการให้ สทิ ธิตามคาสั่ง
GRANT มีรูปแบบคาสั่ง คือ
REVOKE <privilege list>
ON table-name or view-name
FROM <user list>
ตัวอย่าง ยกเลิกการให้ สทิ ธิในตัวอย่าง 1-3
REVOKE SELECT ON WORKER FROM WICHAI,PISAMAI;
REVOKE SELECT ON BRANCH FROM PUBLIC;
REVOKE ALL ON WORKER FROM WANPEN ;
65
กรณีตัวอย่างที่ 4 ซึ่งมีการ GRANT สิทธิเป็ นทอดๆ เมื่อมีการ
REVOKE การยกเลิกสิทธิน้ จี ะมีการยกเลิกเป็ นทอดๆเช่นกัน
REVOKE SELECT ON WORKER
FROM SOMSAK
เมื่อสมศักดิ์ถูกยกเลิกสิทธิ วิสนั ก็หมดสิทธิจากการเรียกดูข้อมูล
ในตารางคนงานไปด้ วยเช่นกัน
66
The end
67