590 likes | 724 Views
SQL - Structure Query Language (Part 1) ภาษามาตรฐานสำหรับนิยามข้อมูลและการใช้ข้อมูล. 4122206A ระบบจัดการฐานข้อมูล 3(2-2) อ.ชนิดา คำเพ็ง สาขาวิชาเทคโนโลยีสารสนเทศ. วัตถุประสงค์. สามารถอธิบายแนวคิดและการใช้ SQL ได้ นำ SQL ไปใช้เพื่อให้เกิดประโยชน์ได้. ภาษา SQL.
E N D
SQL - Structure Query Language (Part 1)ภาษามาตรฐานสำหรับนิยามข้อมูลและการใช้ข้อมูล 4122206A ระบบจัดการฐานข้อมูล 3(2-2)อ.ชนิดา คำเพ็งสาขาวิชาเทคโนโลยีสารสนเทศ
วัตถุประสงค์ • สามารถอธิบายแนวคิดและการใช้ SQL ได้ • นำ SQL ไปใช้เพื่อให้เกิดประโยชน์ได้
ภาษา SQL • สามารถสร้างและปฏิบัติการกับฐานข้อมูลเชิงสัมพันธ์โดยเฉพาะ • Structured Query Language • สำหรับใช้กับ Relational Database • อยู่ในรูปแบบของภาษาอังกฤษ
ภาษา SQL • Structured Query Language
ภาษา SQL • สำหรับใช้กับ Relational Database select name from student
ชนิดของข้อมูลที่ใช้ในภาษา SQL • จำนวนเลข (Number) • เลขจำนวนจริง (Number) เก็บเลขที่เป็นจำนวนเต็มหรือเป็นทศนิยม รูปแบบที่ใช้คือNUMBER • เลขจำนวนเต็ม (Integer) รองรับเลขได้ 11 หลัก รูปแบบที่ใช้คือ INTEGERหรือ INT • เลขจำนวนเต็มขนาดเล็ก (Small integer) รองรับเลขได้ 6 หลัก รูปแบบที่ใช้คือ SMALLINT • เลขทศนิยม (Decimal) รูปแบบที่ใช้คือ DECIMAL
ชนิดของข้อมูลที่ใช้ในภาษา SQL • ตัวหนังสือ • ความยาวคงที่ (Fixed-length Character) เก็บข้อมูลได้สูงสุด 255 ตัวอักษรรูปแบบที่ใช้คือ CHAR • ความยาวไม่คงที่ เก็บข้อมูลได้สูงสุด 255 ตัวอักษร (Variable-length Character) รูปแบบที่ใช้คือVARCHAR • ข้อมูลในลักษณะอื่น ๆ • วันที่และเวลา (Date/Time) รูปแบบที่ใช้คือ DATE
ชนิดของข้อมูลใน Microsoft Access • ในโปรแกรม Microsoft Access สามารถใช้ชนิดข้อมูลตามมาตรฐานของ SQL ได้ • หรือสามารถใช้ชนิดข้อมูลของ Microsoft Access ที่ระบุขึ้นเองก็ได้ อาทิเช่น • Text ตัวอักษร • Number ตัวเลข • Date/Time วันที่และเวลา
Operator (ตัวปฏิบัติการ) ที่ใช้ใน SQL • ตัวเปรียบเทียบ (Comparison operators) • ได้แก่เครื่องหมาย =, <, >, <=, >=, <> • ตัวปฏิบัติการทางด้านลอจิก (Logical operators) • AND • OR • NOT
Operator (ตัวปฏิบัติการ) ที่ใช้ใน SQL • ตัวปฏิบัติการพิเศษ (Special operators) • BETWEENตรวจสอบช่วงของค่าใน Attribute • IS NULLตรวจสอบว่ามีค่าว่างหรือไม่ • LIKEตรวจสอบค่า String ใน Attribute ว่ามีส่วนคล้ายกับที่กำหนดไว้หลัง LIKE หรือไม่ • INตรวจสอบค่าใน Attribute ว่าตรงกันกับที่กำหนดไว้หลัง IN หรือไม่ • EXISTSตรวจสอบว่ามีการ Return ค่าของ Subquery หรือไม่ • DISTINCTจำกัดค่าให้แสดงผลโดยค่าไม่ซ้ำกัน
ฟังก์ชันสรุป (Aggregate functions) ที่ใช้ใน SQL • COUNT ใช้สำหรับนับค่า • MIN หาค่าต่ำสุด • MAX หาค่าสูงสุด • SUM หาผลรวม • AVG หาค่าเฉลี่ย
ประเภทของคำสั่งของภาษา SQL 1. ภาษาสำหรับการนิยามข้อมูล (Data Definition Language : DDL) 2. ภาษาสำหรับการจัดการข้อมูล (Data Manipulation Language : DML) 3. ภาษาควบคุม (Data Control Language : DCL)
1. Data Definition Language : DDL • เป็นกลุ่มคำสั่งที่ใช้กระทำกับโครงสร้างของฐานข้อมูล • ตัวอย่างคำสั่ง เช่น • CREATE ใช้สร้างตาราง • ALTER ใช้แก้ไข/เปลี่ยนแปลงตาราง • DROP ใช้สำหรับลบตาราง
คำสั่ง SQL : DDL • CREATE TABLE : สร้างตาราง • รูปแบบการใช้คำสั่ง CREATE TABLE ชื่อตาราง ( ชื่อคอลัมน์1 ประเภทข้อมูลConstraint, ชื่อคอลัมน์2 ประเภทข้อมูลConstraint, PRIMARY KEY (ชื่อคอลัมน์) , FOREIGN KEY (ชื่อคอลัมน์ ) REFERENCES ชื่อตาราง, );
คำสั่ง SQL : DDL ชื่อตาราง • CREATE TABLE • ตัวอย่าง CREATE TABLE EMPLOYEE( ID CHAR(5) NOT NULL , NAME VARCHAR(35) NOT NULL , ADDRESS VARCHAR(15) NOT NULL , PHONE CHAR(8) NOT NULL , E-MAIL CHAR(1) NOT NULL , PRIMARY KEY (ID) ); ชนิดข้อมูล Constraint ให้ ID เป็น PK
คำสั่ง SQL : DDL 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
คำสั่ง SQL : DDL • ALTER TABLE : เปลี่ยนแปลงตาราง • รูปแบบการใช้คำสั่ง ALTER TABLE ชื่อตาราง (คำสั่งการเปลี่ยนแปลงชื่อคอลัมน์ ชนิดข้อมูล); • คำสั่งการเปลี่ยนแปลง เช่น • ADD เพิ่มคอลัมน์ • ALTER เปลี่ยนแปลงชนิดข้อมูล • DROP ลบคอลัมน์
คำสั่ง SQL : DDL • ALTER TABLE : เปลี่ยนแปลงตาราง • ตัวอย่าง • ALTER TABLE PRODUCT ADD SALECODE VARCHAR(10); • ALTER TABLE PRODUCT ALTER Column SALECODE VARCHAR(50); • ALTER TABLE PRODUCT DROP SALECODE;
คำสั่ง SQL : DDL • DROP TABLE : ลบตาราง • รูปแบบการใช้คำสั่ง DROP TABLE ชื่อตาราง; • ตัวอย่าง DROP TABLE PRODUCT; DROP TABLE EMPLOYEE; DROP TABLE PROJECT;
2. Data Manipulation Language : DML • เป็นกลุ่มคำสั่งที่กระทำกับข้อมูลในฐานข้อมูล • ตัวอย่างคำสั่ง เช่น • SELECT ใช้เรียกข้อมูลในตารางมาแสดงผล • INSERT ใช้เพิ่มข้อมูลเข้าไปในตาราง • UPDATE ใช้แก้ไขข้อมูลในตาราง • DELETE ใช้ลบข้อมูลในตาราง
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • รูปแบบการใช้คำสั่ง SELECTชื่อคอลัมน์ที่ต้องการดูข้อมูล FROM ชื่อตาราง WHERE เงื่อนไข; • ตัวอย่าง • ต้องการดูข้อมูลทั้งหมดในตาราง PRODUCT • SELECT * FROM PRODUCT;
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • ตัวอย่าง SELECT Book_name, Author FROM Book WHERE Book_id = '0001';
ตัวอย่าง: SELECT SELECT FirstName, LastName FROM Personal ตัวอย่าง ผลลัพธ์ Personal
แสดงชื่อลูกค้า, ที่อยู่ลูกค้า Select Name, Addr from customer; Name Addr - - - - - - - - - - - - - - - - - โสภา สีคล้ำ กรุงเทพฯ ศิรี สุขพานิช กรุงเทพฯ สมชาย มีสะอาด เชียงใหม่ อมร ศรีวัฒนกุล ลำพูน วรชาติ สีคล้ำ อยุธยา วิมลลักษณ์ โพธิ์ศรี สุโขทัย อนันต์ บุญญานุพงศ์ กรุงเทพฯ . . . . . .
แสดงข้อมูลลูกค้า ที่อยู่กรุงเทพฯ และมีเครดิต มากกว่า 350000 Select * from customer Where Addr = "กรุงเทพฯ" and Credit > 350000; Id Name Addr Tel Credit Curr_Bal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 110 ศิรี สุขพานิช กรุงเทพฯ 2520091 400000 200000 217 อนันต์ บุญญานุพงศ์ กรุงเทพฯ 2517747 900000 200000
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • ตัวอย่าง • ต้องการดูรายชื่อสินค้า (P_Name) วันที่สินค้าเข้ามา (P_DATE) ราคา (P_Price) และผู้ค้าส่ง (V_Code) โดยให้ดูสินค้าเฉพาะสินค้าที่ส่งมาจากผู้ค้าส่งที่มีรหัส V0004 • SELECT P_Name, P_DATE, P_Price, V_CODE FROM PRODUCT WHERE V_CODE = 'V0004';
ตัวอย่าง : WHERE (=) SELECT* FROM Personal WHERE Amphur = “เมือง” ตัวอย่าง ผลลัพธ์ Personal
ตัวอย่าง: WHERE (IN) SELECT* FROM Personal WHERE Amphur IN (“เมือง”, “จุน”) ตัวอย่าง ผลลัพธ์ Personal
ตัวอย่าง: WHERE (LIKE) SELECT* FROM Personal WHERE FirstName LIKE “มา%” ตัวอย่าง ผลลัพธ์ Personal
คำสั่ง SQL : DML • INSERT : เพิ่มแถว (Row) ลงใน Table • รูปแบบการใช้คำสั่ง INSERT INTO ชื่อตารางVALUES (ข้อมูลทุกคอลัมน์) • ตัวอย่าง INSERT INTO VENDOR VALUES ('V0001', 'บริษัทไบรซัน', 'สมัย', '615', '223-3234', 'TN', 'Y'); INSERT INTO PRODUCT VALUES ('P0000001', 'หัวพ่นสี', '03-NOV-2003', 8, 5, 1090.99, 0.00, 'V0011'); INSERT INTO PRODUCT VALUES ('P0000010', 'ค้อน 12 ปอนด์', '03-JAN-2004', 8, 5, 140.40, 0.05, NULL);
ตัวอย่าง: INSERT INSERT INTO Orders(ProdID, Product, EmpID) VALUES (999, “Ram”, “02”) Orders Orders
คำสั่ง SQL : DML • UPDATE : แก้ไขข้อมูลในตาราง • รูปแบบการใช้คำสั่ง UPDATE ชื่อตาราง SET ชื่อคอลัมน์ = ข้อมูลใหม่ WHERE เงื่อนไข;
คำสั่ง SQL : DML • UPDATE : แก้ไขข้อมูลใน Table • ตัวอย่าง • UPDATE PRODUCT SET P_DATE = ’18-JAN-2004’ WHERE P_CODE = ‘P0000007’; • แก้ไขข้อมูลวันที่สินค้าเข้าคลัง (P_DATE) โดยให้แก้ไขเฉพาะสินค้าที่มีรหัสสินค้า (P_CODE) เป็น P0000007 ให้เป็นวันที่สินค้าเข้าคลังเป็น 18-JAN-2004
คำสั่ง SQL : DML • UPDATE : แก้ไขข้อมูลใน Table • ตัวอย่าง • UPDATE Book SET Author = ’สมโชค’ WHERE Book_name = ‘ระบบฐานข้อมูล’; • แก้ไขข้อมูลผู้แต่ง (Author) โดยให้แก้ไขเฉพาะหนังสือที่ชื่อระบบฐานข้อมูล (Book_name) ให้เป็นผู้แต่งชื่อสมโชค
คำสั่ง SQL : DML • UPDATE : แก้ไขข้อมูลใน Table • ตัวอย่าง • UPDATE Book SET Author = ’สมควร’, publisher=‘ดอกหญ้า’ WHERE Book_id = ‘00015’; แก้ไขข้อมูลผู้แต่ง (Author) โดยให้แก้ไขเฉพาะหนังสือที่มีรหัส 00015 (Book_id) ให้เป็นผู้แต่งชื่อสมโชค และสำนักพิมพ์ดอกหญ้า
ตัวอย่าง: UPDATE แบบไม่ระบุแถว UPDATE Employees SETName = “FOX” Employees Employees
ตัวอย่าง: UPDATE แบบระบุแถว (WHERE) UPDATE Employees SETName= “FOX” WHERE EmpID = “04” Employees Employees
คำสั่ง SQL : DML • DELETE : ลบแถว (Row) ออกจากตาราง • รูปแบบการใช้คำสั่ง DELETE FROM ชื่อตาราง WHERE เงื่อนไข; • ตัวอย่าง DELETE FROM PRODUCT WHERE P_CODE = 'P0000016'; DELETE FROM PRODUCT WHERE P_MIN = 5;
ตัวอย่าง: DELETE แบบระบุแถว (WHERE) DELETE FROM Employees WHERE EmpID = “04” Employees Employees
ตัวอย่าง: DELETE แบบไม่ระบุแถว DELETE FROM Employees Employees Employees
Operators ในการเปรียบเทียบ • ตัว Operators ในการเปรียบเทียบ • = เท่ากับ • < น้อยกว่า • <= น้อยกว่าหรือเท่ากับ • > มากกว่า • >= มากกว่าหรือเท่ากับ • <> หรือ != ไม่เท่ากับ
Operators ทางลอจิก • ตัว Logical operators • AND และ • OR หรือ • NOT ตรงกันข้าม, ไม่เท่ากับ
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • ตัวอย่าง แสดงรายละเอียดของหนังสือทุกคอลัมน์ที่ผู้แต่งคือสมชาย และมีราคาต่ำกว่า 300 บาท SELECT * FROM Book WHERE Author = ‘สมชาย‘ and prize < 300 ;
Operators ทางลอจิก • ตัวอย่าง • ต้องการดูรายชื่อสินค้า (P_DESCRIPT) วันที่สินค้าเข้ามา (P_INDATE) ราคาสินค้า (P_PRICE) และรหัสของผู้ค้าส่ง (V_CODE) โดยให้ดูเฉพาะสินค้าที่มีราคาน้อยกว่า 500 และวันที่สินค้าเข้ามาน้อยกว่าวันที่ 15-DEC-2004 • SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE P_PRICE < 500 AND P_INDATE < #15-DEC-2004#;
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • ตัวอย่าง แสดงรายละเอียดของหนังสือทุกคอลัมน์ที่ผู้แต่งคือสมชาย หรือมีราคาตั้งแต่ 300 บาทขึ้นไป SELECT * FROM Book WHERE Author = ‘สมชาย‘ or prize => 300 ;
คำสั่ง SQL : DML • SELECT : เลือกแถว (Row) จาก Table • ตัวอย่าง • ต้องการดูรายชื่อสินค้า (P_Name) วันที่สินค้าเข้ามา (P_DATE) ราคา (P_Price) และผู้ค้าส่ง (V_Code) โดยให้ดูสินค้าเฉพาะสินค้าที่ส่งมาจากผู้ค้าส่งที่ไม่ใช่รหัส V0004 • SELECT P_Name, P_DATE, P_Price, V_CODE FROM PRODUCT WHERE V_CODE <> 'V0004';
Operators ทางลอจิก • ตัวอย่าง • ต้องการดูข้อมูลสินค้าที่ส่งจากผู้ค้าส่งทุกรายยกเว้นV0006 • SELECT * FROM PRODUCT WHERE NOT (V_CODE = 'V0006');
Operators ในการคำนวณ • ตัว Operators ในการคำนวณ • + บวก • - ลบ • * คูณ • / หาร • ^ ยกกำลัง