970 likes | 1.2k Views
Chapter 10 : ภาษาทางด้านฐานข้อมูลคำสั่ง SQL ( SQL Command). 4122205Z ระบบฐานข้อมูลและการออกแบบ อ.ชาณิภา ซ่อนกลิ่น. แนะนำภาษา SQL. Query Language หรือเอสคิวแอล ( SQL) หรือซีควอล ( SE-QUEL) เป็นภาษาที่พัฒนาขึ้นมาโดยบริษัท IBM
E N D
Chapter 10 : ภาษาทางด้านฐานข้อมูลคำสั่ง SQL (SQL Command) 4122205Z ระบบฐานข้อมูลและการออกแบบ อ.ชาณิภา ซ่อนกลิ่น
แนะนำภาษา SQL • Query Language หรือเอสคิวแอล (SQL) หรือซีควอล (SE-QUEL) เป็นภาษาที่พัฒนาขึ้นมาโดยบริษัท IBM • เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์ สามารถใช้งานได้กับเครื่องคอมพิวเตอร์หลายระดับ • ภาษา SQL (Standard Query Language) เป็นส่วนหนึ่งของระบบฐานข้อมูลแบบรีเลชั่นเนล(Relational Database) ที่ได้รับความนิยมมากเพราะง่ายต่อความเข้าใจ และอยู่ในรูปภาษาอังกฤษ • ปัจจุบันมีซอฟต์แวร์ระบบจัดการฐานข้อมูล (DBMS) ที่สนับสนุนการใช้คำสั่ง SQL เช่น MySQL, ORACLE, DB2,SQL Sever, MS-Access
ส่วนประกอบของระบบจัดการฐานข้อมูลส่วนประกอบของระบบจัดการฐานข้อมูล DBMS SQL (Structure Query Language) พจนานุกรมข้อมูล (Data Dictionary) โปรแกรมอำนวยความสะดวก (General Utilities) โปรแกรมช่วยสร้างโปรแกรมประยุกต์ (Application Generators) โปรแกรมช่วยสร้างรายงาน (Report Generators)
วัตถุประสงค์ของ SQL 1. สร้างฐานข้อมูลและตาราง 2. สนับสนุนการจัดการฐานข้อมูล ซึ่งประกอบด้วย การเพิ่ม การปรับปรุงและการลบข้อมูล 3. สนับสนุนการเรียกใช้หรือสืบค้นข้อมูล
ประเภทของคำสั่งในภาษา SQL 1. DDL (Data Definition Language) เป็นชุดคำสั่งที่ใช้ในการนิยาม กำหนด หรือการสร้างข้อมูลบนฐานข้อมูล ได้แก่ คำสั่ง CREATE TABLE เป็นต้น 2. DML (Data Manipulation Language) เป็นชุดคำสั่งที่ใช้ในการประมวลผลหรือจัดการกับข้อมูลในฐานข้อมูล ได้แก่ คำสั่ง SELECT, INSERT , UPDATE เป็นต้น 3. DCL (Data Control Language) เป็นคำสั่งที่ใช้ในการควบคุมสิทธิ์ของผู้ใช้ในการใช้ข้อมูล รวมทั้งส่วนที่ใช้ควบคุมการใช้ฐานข้อมูลจากผู้ใช้หลายๆคนพร้อมกัน
รูปแสดงประเภทของคำสั่งในภาษา SQL ภาษา SQL (Standard Query Language)
1.ภาษานิยามข้อมูล (Data Definition Language) • CREATEใช้สร้างตาราง • ALTERใช้แก้ไข/เปลี่ยนแปลงตาราง • DROP ใช้สำหรับลบตาราง เป็นกลุ่มคำสั่งที่ใช้กระทำกับโครงสร้างของฐานข้อมูล
CREATE TABLE การสร้างตาราง รูปแบบ >> CREATE TABLE ชื่อตาราง ( ชื่อคอลัมน์1 ประเภทข้อมูล Constraint, ชื่อคอลัมน์2 ประเภทข้อมูล Constraint, PRIMARY KEY (ชื่อคอลัมน์) , FOREIGN KEY (ชื่อคอลัมน์ ) REFERENCES ชื่อตาราง, );
CREATE TABLE การสร้างตาราง ชื่อตาราง EMPLOYEE ตัวอย่าง >> Constraint ชนิดข้อมูล • CREATE TABLE EMPLOYEE( • ID CHAR(5) NOT NULL , • NAME VARCHAR(35) NOT NULL , • ADDRESS VARCHAR(15) NOT NULL , • PHONE CHAR(8) NOT NULL , • EMAIL CHAR(1) NOT NULL , • PRIMARY KEY (ID) • ); ให้ ID เป็น PK
CREATE TABLE การสร้างตาราง ชื่อตาราง PRODUCT ตัวอย่าง >> Constraint ชนิดข้อมูล • CREATE TABLE PRODUCT ( • P_CODE VARCHAR(10) NOT NULL , • P_DESCRIPT VARCHAR(35) NOT NULL , • P_INDATE DATE NOT NULL , • P_ONHAND SMALLINT NOT NULL , • P_MIN SMALLINT NOT NULL , • P_PRICE NUMBER NOT NULL , • P_DISCOUNT NUMBER NOT NULL , • ID CHAR(5) , • PRIMARY KEY (P_CODE) , • FOREIGN KEY (ID) REFERENCES EMPLOYEE(ID) • ); ให้ ID เป็น FK
ALTER TABLE การแก้ไข/เปลี่ยนแปลงตาราง รูปแบบ >> ALTER TABLE ชื่อตาราง คำสั่งเปลี่ยนแปลงตาราง ชื่อคอลัมน์ ประเภทข้อมูล ; คำสั่งการเปลี่ยนแปลง ได้แก่ 1. ADD เพิ่มคอลัมน์ 2. MODIFYแก้ไขคอลัมน์ในตาราง 3. DROP ลบคอลัมน์
ALTER TABLE การแก้ไข/เปลี่ยนแปลงตาราง ตัวอย่างADD เพิ่มคอลัมน์ โจทย์ >>เพิ่มคอลัมน์ที่เป็นรหัสแผนก(IDdepartment) ในตาราง employee เพื่อบอกว่าพนักงานสังกัดอยู่แผนกใด SQL >> ALTER TABLE employeeADD IDdepartment char(6) ;
ALTER TABLE การแก้ไข/เปลี่ยนแปลงตาราง ตัวอย่างMODIFY แก้ไขคอลัมน์ในตาราง โจทย์ >>เปลี่ยนขนาดของข้อมูลในคอลัมน์ IDdeparment ในตาราง employee จากขนาด 6 ตัวอักษร เป็นขนาด 5 ตัวอักษร SQL >> ALTER TABLE employeeMODIFY (IDdepartment char(5)) ;
ALTER TABLE การแก้ไข/เปลี่ยนแปลงตาราง ตัวอย่างDROP ลบคอลัมน์ โจทย์ >>ลบคอลัมน์ที่เป็นรหัสแผนก(IDdepartment) ในตาราง employee SQL >> ALTER TABLE employeeDROP IDdepartment ;
DROP TABLE การลบตาราง รูปแบบ >> DROP TABLE ชื่อตาราง; ตัวอย่าง โจทย์ >> ต้องการลบตาราง(Table) ORDER ออกจากฐานข้อมูล SQL >> DROP TABLE ORDER;
2. ภาษาจัดการข้อมูล (Data Manipulation Language) • SELECT ใช้เรียกข้อมูลในตารางมาแสดงผล • INSERT ใช้เพิ่มข้อมูลเข้าไปในตาราง • UPDATE ใช้แก้ไขข้อมูลในตาราง • DELETE ใช้ลบข้อมูลในตาราง เป็นกลุ่มคำสั่งที่กระทำกับข้อมูลในฐานข้อมูล
SELECT <การเรียกดูข้อมูล> • การเรียกดูข้อมูลในคอลัมน์ที่ต้องการ รูปแบบ >> SELECT ชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROM ชื่อตาราง ;
SELECT <การเรียกดูข้อมูล> ตัวอย่าง Employees โจทย์ >> ต้องการแสดงชื่อและนามสกุลของพนักงาน SQL >> SELECTFirst_name, Last_nameFROM Employees ; ผลลัพธ์ >>
SELECT <การเรียกดูข้อมูล> • การเรียกดูข้อมูลในทุก ๆ คอลัมน์ รูปแบบ >> SELECT* FROMชื่อตาราง ;
SELECT <การเรียกดูข้อมูล> ตัวอย่าง Employees โจทย์ >> ต้องการแสดงข้อมูลของพนักงาน SQL >> SELECT * FROM Employees ; ผลลัพธ์ >>
SELECT <การเรียกดูข้อมูล> • การเรียกดูข้อมูลเฉพาะบางแถวที่ตรงตามเงื่อนไข รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREเงื่อนไข ; • โดยภายในเงื่อนไขประกอบด้วย • เงื่อนไข => คอลัมน์ที่เป็นเงื่อนไข Operator Value
SELECT <การเรียกดูข้อมูล> ตัวอย่าง Employees โจทย์ >> ตัวอย่าง แสดงชื่อ นามสกุล และที่อยู่ของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงาน ที่อยู่จังหวัดอุตรดิตถ์ SQL >> Address คอลัมน์ที่เป็นเงื่อนไข SELECT First_name, Last_name, Address FROM Employees WHERE Address = ‘อุตรดิตถ์’; อุตรดิตถ์คือ value ผลลัพธ์ >> = คือ operator
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where Operator ที่สามารถใช้กำหนดเงื่อนไขใน where มีดังนี้ • ตัวเปรียบเทียบ (Comparison operators) ได้แก่ เครื่องหมาย =, <, >, <=, >=, <> • ตัวปฏิบัติการทางด้านลอจิก (Logical operators) • AND • OR • NOT • ตัวปฏิบัติการพิเศษ NOT, BETWEEN , IN , LIKE , OR , SOME , IS NULL , IS NOT NULL , EXISTS , DISTINCT เชื่อมต่อเงื่อนไขในกรณีที่มีมากกว่า 1 เงื่อนไข
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where • ตัวเปรียบเทียบ (Comparison operators)
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where • ตัว Logical operators
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where • ตัวปฏิบัติการพิเศษ (Special operators) • BETWEEN…AND…:ตรวจสอบช่วงของค่าใน Attribute • IS NULL: ตรวจสอบว่ามีค่าว่างหรือไม่ • IS NOT NULL: ตรวจสอบว่าไม่มีค่าว่างหรือไม่ • LIKE: ตรวจสอบค่า String ใน Attribute ว่ามีส่วน คล้ายกับที่กำหนดไว้หลัง LIKE หรือไม่ • IN : ตรวจสอบค่าใน Attribute ว่าตรงกันกับที่ กำหนดไว้หลัง IN หรือไม่ • EXISTS : ตรวจสอบว่ามีการ Return ค่าของ Subquery หรือไม่ • DISTINCT : จำกัดค่าให้แสดงผลโดยค่าไม่ซ้ำกัน
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ AND Employees โจทย์ >> ต้องการ แสดงชื่อ นามสกุล ที่อยู่ และเงินเดือนโดยจะแสดงข้อมูลเฉพาะพนักงานที่อยู่จังหวัดอุตรดิตถ์และมีเงินเดือนมากกว่า 5000 บาท จากโจทย์ สิ่งที่ต้องแสดง คือ ชื่อ นามสกุล ที่อยู่ เงินเดือน จากตารางพนักงาน เงื่อนไขพนักงานคนนั้นต้องอยู่จังหวัดอุตรดิตถ์ และมีเงินเดือน มากกว่า 5000 บาท คอลัมน์เงื่อนไขAddress และ Salary
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ AND จากโจทย์จะเห็นว่า มีสองเงื่อนไข และต้องเป็นจริงทั้งสองเงื่อนไข ดังนั้นจึงต้องใช้ AND เชื่อมระหว่าง 2 เงื่อนไขนี้ SQL >> SELECTFirst_name, Last_name, Address, Salary FROM Employees WHERE Address = ‘อุตรดิตถ์’ AND Salary > 5000; Employees จะเห็นว่าผลลัพธ์ที่ได้พนักงานคนนั้นต้องอยู่อุตรดิตถ์และมีเงินเดือนมากกว่า 5000
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ OR Employees โจทย์ >> ต้องการ แสดงชื่อ นามสกุล ที่อยู่ และเงินเดือนโดยจะแสดงข้อมูลเฉพาะพนักงานที่อยู่จังหวัดอุตรดิตถ์หรือมีเงินเดือนมากกว่า 5000 บาท จากโจทย์ สิ่งที่ต้องแสดง คือ ชื่อ นามสกุล ที่อยู่ เงินเดือน จากตารางพนักงาน เงื่อนไขพนักงานคนนั้นต้องอยู่จังหวัดอุตรดิตถ์ หรือมีเงินเดือน มากกว่า 5000 บาท คอลัมน์เงื่อนไขAddress และ Salary
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ OR จากโจทย์จะเห็นว่า มีสองเงื่อนไข แต่โจทย์ใช้คำว่าหรือ แสดงว่ามีเงื่อนไขใดเงื่อนใดหนึ่งเป็นจริง หรือเป็นจริงทั้งสองเงื่อนไขก็ได้ ดังนั้นจึงต้องใช้ OR เชื่อมระหว่าง 2 เงื่อนไขนี้ SQL >> SELECTFirst_name, Last_name, Address, Salary FROM Employees WHERE Address = ‘อุตรดิตถ์’ OR Salary > 5000; Employees จะเห็นว่าผลลัพธ์ที่ได้ สมชายไม่ได้อยู่จังหวัดอุตรดิตถ์ แต่ที่สมชายแสดงในผลลัพธ์ เพราะมีเงินเดือนมากกว่า 5000 สรุป ผลลัพธ์ที่ได้จาก OR เข้าเงื่อนไขใดเงื่อนไขหนึ่งก็เป็นจริงแล้ว
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ BETWEEN…AND… กำหนดเงื่อนไขให้กับ where โดยเลือกช่วงข้อมูลที่สนใจ รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ Between Value1 AND value2 ;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ BETWEEN…AND… Employees โจทย์ >> ต้องการ แสดงชื่อ และเงินเดือนของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงาน ที่มีเงินเดือน 6000 ถึง 15000 SQL >> ผลลัพธ์ >> SELECTFirst_name, Salary FROM Employees WHERE Salary Between 6000 AND 15000;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ Not Between…AND…. • การใช้ Not ร่วมกับ Between….AND… เป็นการระบุเงื่อนไขว่า ข้อมูลต้องไม่อยู่ในช่วงที่กำหนด Employees โจทย์ >> ต้องการ แสดงชื่อ และเงินเดือนของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงาน ที่มีเงินเดือนไม่อยู่ในช่วง 6000 ถึง 15000 SQL >> ผลลัพธ์ >> SELECTFirst_name, Salary FROM Employees WHERE Salary Not Between 6000 AND 15000;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ LIKE เลือกข้อมูลที่ตรงกับความต้องการด้วย LIKE รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ Likepattern; • คือสิ่งที่ต้องต้องการค้นหา • โดย Pattern มีรูปแบบดังนี้ • % หมายถึง ตัวอักษรใด ๆ จำนวนไม่จำกัดตัวอักษร • _ หมายถึง ตัวอักษรใด ๆ จำนวน 1 ตัวอักษร
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ LIKE
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ Not Like การใช้ Not Like คือการกำหนดเงื่อนว่า ข้อความที่เราต้องการค้นหาต้องไม่ใช่ที่เราระบุ ลงไปใน Pattern รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ Not Like pattern; เช่น >> SELECTlast_name FROMEmployees WHERElast_nameNotLike '%ร%'; ผลลัพธ์ที่ได้ คือ last_name ที่แสดงผลจะไม่มีตัว ร ปรากฏอยู่ใน last_name
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IN เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยเลือกเฉพาะค่าที่กำหนด รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ IN(value1,value2,...);
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IN Employees โจทย์ >> ต้องการ แสดงรหัส และชื่อของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงานที่มีรหัส 001 ,002,004 SQL >> ผลลัพธ์ >> SELECTEmp_ID, First_name FROM Employees WHEREEmp_IDIN('001', '002','004');
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ Not IN Employees โจทย์ >> ต้องการ แสดงรหัส และชื่อของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงานที่ไม่มีรหัส 001 ,002,004 SQL >> ผลลัพธ์ >> SELECTEmp_ID, First_name FROM Employees WHEREEmp_IDNot IN ('001', '002','004');
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IS NULL เป็นการระบุเงื่อนไขว่าคอลัมน์ที่ต้องการต้องมีค่าเป็น NULL รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ IS NULL;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IS NULL Employees โจทย์ >> ตัวอย่าง แสดงชื่อและที่อยู่ของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงานที่ไม่ได้ระบุที่อยู่ SQL >> ผลลัพธ์ >> SELECTFirst_name, Address FROM Employees WHERE Address IS NULL;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IS NOT NULL เป็นการระบุเงื่อนไขว่าคอลัมน์ที่ต้องการต้องไม่มีค่าเป็น NULL รูปแบบ >> SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูลที่ 1, ชื่อคอลัมน์ที่ 2,…,ชื่อคอลัมน์ที่ n FROMชื่อตาราง WHEREชื่อคอลัมน์ IS NOT NULL;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ IS NOT NULL Employees โจทย์ >> ตัวอย่าง แสดงชื่อและที่อยู่ของพนักงาน โดยจะแสดงข้อมูลเฉพาะพนักงานที่ระบุที่อยู่ SQL >> ผลลัพธ์ >> SELECTFirst_name, Address FROM Employees WHERE Address IS NOT NULL;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ DISTINCT - ใช้สำหรับการแสดงผลค่าที่ซ้ำกันเพียง 1 ค่า รูปแบบ >> SELECT DISTINCTชื่อคอลัมน์ที่ต้องการให้แสดงผลค่าซ้ำเพียง 1 ค่า FROMชื่อตาราง;
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ DISTINCT • SELECT V_CODE • FROM PRODUCT; • SELECT DISTINCT V_CODE • FROM PRODUCT; ผลลัพธ์ ผลลัพธ์ หากไม่ใช้DISTINCT ผลลัพธ์จะได้ค่าที่ซ้ำกัน
Operator (ตัวปฏิบัติการ) ที่ใช้ใน Where ตัวอย่างการใช้ DISTINCT SELECT DISTINCT Amphur FROM Personal; Personal ผลลัพธ์
INSERT < การเพิ่มข้อมูลเข้าไปในตาราง > • การเพิ่มข้อมูลลง หรือ การเพิ่มแถว(Row) เข้าไปในตาราง รูปแบบ >> INSERT INTO ชื่อตาราง VALUES (ข้อมูลทุกคอลัมน์); หรือ INSERT INTO ชื่อตาราง (ชื่อทุกคอลัมน์)VALUES (ข้อมูลทุกคอลัมน์);
INSERT < การเพิ่มข้อมูลเข้าไปในตาราง > ตัวอย่าง ป้อนข้อมูลของลูกค้าใหม่ ซึ่งมีรหัส 101 ชื่อ สมปอง อาศัยอยู่ เชียงใหม่ เบอร์โทรศัพท์ 073658758 มีวงเงิน 150,000 บ. และยอดเงินคงเหลือ100,000 บ. โจทย์>> INSERT INTO customer VALUES(‘101’,‘สมปอง’, ‘เชียงใหม่’,‘073658758’, 150000 ,100000 ) ; SQL>>
INSERT < การเพิ่มข้อมูลเข้าไปในตาราง > ตัวอย่าง SQL>> INSERT INTO Orders(ProdID, Product, EmpID) VALUES (999, “Ram”, “02”); Orders Orders
UPDATE <การแก้ไขข้อมูลในตาราง> • การแก้ไขข้อมูลในตาราง รูปแบบ >> UPDATEชื่อตาราง SETชื่อคอลัมน์ =ข้อมูลใหม่ WHEREเงื่อนไข;