ภาษา SQL (Structured Query Language)
SQL (Structured Query Language) SQL (Structured Query Language) เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์ สามารถใช้งานได้กับเครื่องคอมพิวเตอร์หลายระดับ ปัจจุบันมีซอฟต์แวร์ระบบจัดการฐานข้อมูล (DBMS) ที่สนับสนุนการใช้คำสั่ง SQL เช่น ORACLE, DB2, MS-SQL, MS-Access นอกจากนี้ภาษา SQL ถูกนำมาใช้เขียนร่วมกับโปรแกรมภาษาต่างๆ เช่น ภาษา C/C++, VisualBasic และ Java วัตถุประสงค์ของ SQL 1. สร้างฐานข้อมูลและ ตาราง 2. สนับสนุนการจัดการฐานข้อมูล ซึ่งประกอบด้วย การเพิ่ม การปรับปรุง และการลบข้อมูล 3. สนับสนุนการเรียกใช้หรือ ค้นหาข้อมูล
คำสั่ง : CREATE,DROP,ALTER ประเภทของคำสั่งภาษา SQL 1. ภาษานิยามข้อมูล(Data Definition Language : DDL) เป็นคำสั่งที่ใช้ในการสร้างฐานข้อมูล กำหนดโครงสร้างข้อมูลว่ามี Attributeใด ชนิดของข้อมูล รวมทั้งการเปลี่ยนแปลงตาราง และการสร้างดัชนี คำสั่ง : CREATE,DROP,ALTER
2. ภาษาจัดการข้อมูล (Data Manipulation Language :DML) เป็นคำสั่งที่ใช้ในการเรียกใช้ เพิ่ม ลบ และเปลี่ยนแปลงข้อมูลในตาราง คำสั่ง : SELECT,INSERT,UPDATE,DELETE 3. ภาษาควบคุมข้อมูล (Data Control Language : DCL) เป็นคำสั่งที่ใช้ในการกำหนดสิทธิการอนุญาติ หรือ ยกเลิก การเข้าถึงฐานข้อมูล เพื่อป้องกันความปลอดภัยของฐานข้อมูล คำสั่ง : GRANT,REVOKE
ภาษานิยามข้อมูล. (Data Definition Language: DDL) ภาษานิยามข้อมูล (Data Definition Language: DDL) ภาษานิยามข้อมูลประกอบด้วยคำสั่ง ดังนี้ CREATE คำสั่งที่ใช้ในการสร้าง - CREATE TABLE สร้างตาราง - CREATE INDEX สร้างดัชนี - CREATE VIEW สร้างวิว DROP คำสั่งที่ใช้ในการลบ - DROP TABLE ลบตาราง - DROP INDEX ลบดัชนี - DROP VIEW ลบวิว ALTER คำสั่งที่ใช้ในการเปลี่ยนแปลงโครงสร้างตาราง
การสร้างตาราง : CREATE TABLE INSERT into : ใช้สำหรับเพิ่มข้อมูลในตาราง
CREATE TABLE table_name ( field1 type [(size)] NOT NULL Unique, field2 type [(size)] , field 3 (type), …… , PRIMARY KEY (primary1: Field name);
INSERT into : สำหรับเพิ่มข้อมูลในตาราง
การสร้างตาราง : CREATE TABLE คำสั่งที่ใช้ คือ CREATE TABLE รูปแบบ คือ CREATE TABLE table_name ( field1 type [(size)] [NOT NULL] Unique, field2 type [(size)] [, …………... CONSTRAINT name PRIMARY KEY (primary1, primary2 , ...) FOREIGN KEY (ref1, ref2 , ..) REFERENCES foreigntable (foreignfield1 , foreignfield2 , ...) );
char(8) : ตัวเลข(ไม่คำนวณ) ตัวอักษร varchar(25) : ตัวเลข(ไม่คำนวณ) ตัวอักษร Number: ตัวเลข(คำนวณ)
ตัวอย่าง Create table Student ( ID char (4) NOT NULL Unique, FName char(30), Salary number, Primary key(id));
การลบตาราง : DROP TABLE. คำสั่งที่ใช้ในการลบตารางจะใช้คำสั่ง การลบตาราง : DROP TABLE คำสั่งที่ใช้ในการลบตารางจะใช้คำสั่ง DROP TABLE tablename ตัวอย่าง DROP TABLE Employee;
การสร้างและลบดัชนี:CREATE /DROP INDEX. การสร้างดัชนีสำหรับตาราง การสร้างและลบดัชนี:CREATE /DROP INDEX การสร้างดัชนีสำหรับตาราง - เลือก column หรือ กลุ่มของ column จากตารางขึ้นมาเป็นดัชนี เช่น ชื่อนักศึกษา - ในหนึ่งตารางสามารถมีดัชนีได้หลายดัชนี - ช่วยในการค้นหาข้อมูลได้รวดเร็ว
การสร้างและลบดัชนี: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 ;
ตัวอย่าง การสร้างดัชนี โดยใช้ชื่อคนงานเป็นดัชนี CREATE INDEX NAME_IDX ON WORKER (WK_NAME) ตัวอย่าง การสร้างดัชนี โดยใช้รหัสคนงานเป็นดัชนี CREATE INDEX CODE_IDX ON WORKER (WK_ID)
การสร้างวิว : CREATE VIEW CREATE VIEW view-name [column_name1, column_name2,...] AS SELECT attribute1,attribute2,.. FROM table-name WHERE condition การลบวิว ใช้คำสั่ง DROP VIEW view-name
ex. Create view my_view1 as select pro_id , pro_name , pro_price from product where supid = 5 ; ex. DROP VIEW ex. DROP VIEW my_view1
การเปลี่ยนแปลงโครงสร้างตาราง : ALTER TABLE การเปลี่ยนแปลงโครงสร้างตาราง : ALTER TABLE เป็นการเปลี่ยนแปลงโครงสร้างตารางที่สร้างไว้ ดังนี้ 1. ADD เป็นการเพิ่ม column ในตาราง 2. MODIFY เป็นการแก้ไขเปลี่ยนแปลง column 3. DROP เป็นการลบ column คำสั่งที่ใช้ ALTER TABLE tablename [ COMMAND [COLUMN]column_name datatype [CONSTRAINT]]; COMMAND คือ ADD,MODIFY,DROP
Alter Table ADD Attribute name ex. ALTER TABLE Employee ADD Tel CHAR( 10) ; MODIFY Structure MODIFY ( EName CHAR(35) ); DROP Attribute name DROP Tel CHAR( 10) ;
ภาษาจัดการข้อมูล. (Data Manipulation Language:DML) ภาษาจัดการข้อมูล (Data Manipulation Language:DML) ภาษาจัดการข้อมูลประกอบด้วยคำสั่ง ดังนี้ SELECT ใช้เรียกดูข้อมูลในฐานข้อมูล INSERT ใช้สำหรับเพิ่มข้อมูลในตาราง UPDATE ใช้สำหรับปรับปรุงข้อมูลในตาราง DELETE ใช้สำหรับลบข้อมูลจากตาราง
คำสั่ง SELECT. เป็นคำสั่งที่ใช้สำหรับเรียกดูข้อมูลจากตารางในฐานข้อมูล คำสั่ง SELECT เป็นคำสั่งที่ใช้สำหรับเรียกดูข้อมูลจากตารางในฐานข้อมูล มีรูปแบบอยู่หลายรูปแบบ สามารถเรียกดูข้อมูลโดยมีเงื่อนไขประกอบ รวมทั้งเรียกดูข้อมูลได้จากหลายตาราง รูปแบบของคำสั่งประกอบด้วย 3 ส่วนหลัก คือ SELECT…..FROM…..[WHERE…]
DISTINCT การเรียกดูข้อมูลโดยไม่แสดงรายการที่ซ้ำ. FROM DISTINCT การเรียกดูข้อมูลโดยไม่แสดงรายการที่ซ้ำ FROM กำหนดตารางที่ต้องการใช้เรียกดูข้อมูล WHERE เงื่อนไขที่ใช้ในการค้นหาข้อมูลจากตาราง ORDER BY กำหนดการเรียงลำดับข้อมูล โดยที่ DESC การเรียงลำดับจากมากไปน้อย ASC การเรียงลำดับจากน้อยไปมาก GROUP BY การจัดกลุ่มแถวข้อมูลตามคอลัมน์ที่ระบุ HAVING เงื่อนไขที่ใช้กับ ข้อมูลที่ได้จาก GROUP BY เท่านั้น
การเรียกดูข้อมูลทุก column. โดยมีเงื่อนไข. SELECT การเรียกดูข้อมูลทุก column โดยมีเงื่อนไข SELECT * FROM < table> WHERE <condition> การเรียกดูข้อมูลบาง column SELECT <column> FROM < table> การเรียกดูจากหลายตาราง SELECT * FROM < table1> <table2>
Mathematics Operator เป็น operator ที่ใช้ในการคำนวณ ได้แก่ เครื่องหมาย +, -, *, / ตัวอย่าง SELECT ID,FName,LName,Salary*0.05 AS Commision FROM Employee; ID FName LName Commision 1 John Smith 650 2 Mary Jones 750 3 Andy Brown 900 4 Jane Wright 1,000 5 John Jones 1,050
WHERE Condition Mathematics Operator + , - , * , / ex. Select pro_name , pro_price * amount as sum from product ;
Comparison Operator เป็น Operator ที่ใช้ในการเปรียบเทียบ โดยใช้เครื่องหมาย ดังนี้ = เท่ากับ < น้อยกว่า > มากกว่า <= น้อยกว่าหรือเท่ากับ >= มากกว่าหรือเท่ากับ <> ไม่เท่ากับ
WHERE Condition Comparison Operator = , > , < , >= ,< = ,<> ex. Select pro_id , pro_name from product where (price >=5 ) and (amount >=20) ;
Logical Operator in, between , like, not SELECT pro_id, pro_name,sup_id FROM product WHERE sup_id not in ( 1,2);
WHERE Condition SELECT pro_id, pro_name , pro_price FROM product WHERE pro_price between 5 and 20
WHERE Condition SELECT pro_id, pro_name FROM product WHERE pro_name like "p*"
การเรียกดูข้อมูลจากหลายตาราง
การเรียกดูแบบซ้อนกัน : Subqueries หรือ Nested query การเรียกดูแบบซ้อนกัน : Subqueries หรือ Nested query เป็นการเรียกดูข้อมูลด้วยคำสั่ง SELECT ซ้อน คำสั่ง SELECT ในลักษณะของ Nested query ชุดคำสั่ง SELECT ข้างในจะถูกประมวลผลก่อน แล้วส่งผลลัพธ์ให้กับ คำสั่ง SELECT ข้างนอก รูปแบบ มีดังนี้ SELECT ……. FROM…….. WHERE……… (SELECT …….. FROM……….. WHERE………. )
ตัวอย่าง ต้องการหารายชื่อพนักงานที่อยู่แผนกเดียวกับ Andy Employee Name Department John Marketing Mary Sales Peter Sales Andy Marketing Anne Marketing
การใช้ Aggregate Function การใช้ Aggregate Function เป็นการใช้ Function ทางสถิติเพื่อช่วยในการคำนวณ ประกอบด้วย Function ต่างๆ ดังนี้ COUNT เป็นการนับจำนวนแถวข้อมูล SUM เป็นการหาผลรวม AVG เป็นการหาค่าเฉลี่ย MIN เป็นการหาค่าต่ำสุด MAX เป็นการหาค่าสูงสุด
การเรียงลำดับข้อมูล
การใช้ GROUP BY เป็นการจัดกลุ่มแถวข้อมูลตามคอลัมน์ที่ระบุ โดยข้อมูลที่เหมือนกันจะถูกจัดให้อยู่ในกลุ่มเดียวกัน
การใช้ HAVING ประโยค HAVING จะใช้ร่วมกับ GROUP BY เสมอ โดยHAVING จะแสดงข้อมูลที่ผ่านการจัดกลุ่มด้วย GROUP BY เพียงบางส่วนตามเงื่อนไขที่กำหนดไว้ใน HAVING
การใช้คำสั่ง 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
INNER JOIN. SELECT TASTER_RESULT. TASTERID, MYPRODUCT. PNAME, 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 MALEE JUICE RICH FLAVOR 2 MALEE JUICE TOO SWEET 3 BALL ICE CREAM SMOOTH TASTS
OUTER JOIN เป็นการแสดงผลการรวมข้อมูลจาก 2 ตาราง ทุก record แม้ว่าจะมีบาง record ที่ไม่มีค่าของAttribute หรือ column ตรงกัน มี 2 แบบ คือ 1. RIGHT JOIN เป็นการให้ตารางทางขวามือของคำสั่ง JOIN เป็นตัวตั้งในการเลือกข้อมูลจากตารางทางซ้าย กรณีที่ไม่มีข้อมูลตรงกัน ให้ใส่ค่า NULL ในตาราง มีรูปแบบ คือ SELECT …… FROM table1 RIGHT JOIN table2 ON table1.column = table2.column
SELECT BOOK. NAME, BORROWING. CUSID,. BORROWING. DATE-IN SELECT BOOK.NAME, BORROWING.CUSID, BORROWING.DATE-IN FROM BORROWING RIGHT JOIN BOOK ON BORROWING.BID = BOOK.ID ผลลัพธ์ คือ BNAME CUDID DATE-IN ENGLISH 10 5 OCT 2001 MATH NULL NULL COMPUTER 7 3 JUL 2001 COMPUTER 7 1 AUG 2001 ENGINEER NULL NULL THAI NULL NULL
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
INSERT INTO table-name VALUE (var1 , var2 , ….) ex. Insert into product value (10,book,30, 5 );
คำสั่ง UPDATE. เป็นคำสั่งปรับปรุงข้อมูลในตาราง. UPDATE table-name คำสั่ง UPDATE เป็นคำสั่งปรับปรุงข้อมูลในตาราง UPDATE table-name SET column-name1=value1[,column-name2=value2,...] [WHERE condition]; คำสั่ง DELETE เป็นคำสั่งลบข้อมูลแถวข้อมูลในตาราง DELETE table-name [WHERE condition];
ภาษาควบคุมข้อมูล (Data Control Language : DCL) ภาษาควบคุมข้อมูล (Data Control Language : DCL) เป็นการควบคุมความปลอดภัยของข้อมูลในฐานข้อมูล เนื่องจากมีผู้ใช้งานหลายคนสามารถเข้าถึงข้อมูลได้ ผู้บริหารฐานข้อมูล(DBA) จะเป็นผู้กำหนดสิทธิการใช้งานให้กับผู้ใช้ในแต่ละระดับ เพื่อป้องกันมิให้ผู้ไม่มีสิทธิเข้าถึงข้อมูลจัดการกับข้อมูลในฐานข้อมูลได้ ประกอบด้วยคำสั่ง ดังนี้ GRANT เป็นการสิทธิให้แก่ผู้ใช้งาน REVOKE เป็นการยกเลิกสิทธิ
คำสั่ง 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> คือ กลุ่มผู้ใช้ ที่ถูกให้สิทธิในการจัดการข้อมูล
ตัวอย่าง1 การให้สิทธิกับวิชัยและพิสมัยในการเรียกดูข้อมูลจากตารางคนงาน ตัวอย่าง1 การให้สิทธิกับวิชัยและพิสมัยในการเรียกดูข้อมูลจากตารางคนงาน (WORKER) GRANT SELECT ON WORKER TO WICHAI,PISAMAI; ตัวอย่าง 2 การให้สิทธิกับผู้ใช้ทุกคนในการเรียกดูข้อมูลจากตาราง GRANT SELECT ON BRANCH TO PUBLIC; ตัวอย่าง 3 การให้สิทธิทุกอย่างในการจัดการข้อมูลในตาราง WORKER แก่วันเพ็ญ GRANT ALL ON WORKER TO WANPEN;
ตัวอย่าง 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;
คำสั่ง 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 ;
กรณีตัวอย่างที่ 4 ซึ่งมีการ GRANT สิทธิเป็นทอดๆ เมื่อมีการ REVOKE การยกเลิกสิทธินี้จะมีการยกเลิกเป็นทอดๆเช่นกัน REVOKE SELECT ON WORKER FROM SOMSAK เมื่อสมศักดิ์ถูกยกเลิกสิทธิ วิสันก็หมดสิทธิจากการเรียกดูข้อมูลในตารางคนงานไปด้วยเช่นกัน
The end