510 likes | 630 Views
วิชา 4122612 เทคโนโลยีสารสนเทศสำหรับงานทะเบียนบุคคลและการจ่ายเงินเดือน ( Information Technology for Personal Record and Payroll ). - ฐานข้อมูล และส่วนติดต่อกับผู้ใช้งาน. คำสั่ง SQL สำหรับนิยามข้อมูล. 1. คำสั่ง Create Table
E N D
วิชา 4122612เทคโนโลยีสารสนเทศสำหรับงานทะเบียนบุคคลและการจ่ายเงินเดือน(Information Technology for Personal Record and Payroll) - ฐานข้อมูล และส่วนติดต่อกับผู้ใช้งาน
คำสั่ง SQL สำหรับนิยามข้อมูล 1. คำสั่ง Create Table ใช้ในการสร้าง Relation โดยการระบุชื่อ Attribute ต่างๆ ขนาดความกว้าง ประเภทของข้อมูล รวมถึงการระบุว่า Attribute ใดเป็น Primary key หรือ Foreign key รูปแบบ CREATE TABLE<TABLE NAME> (<COLUMN NAME><DATA TYPE>[<WIDTH>],… [,PRIMARY KEY DEFINITION] [,FOREIGN KEY DEFINETION]);
คำสั่ง SQL สำหรับนิยามข้อมูล 2. คำสั่ง Alter Table ใช้ในการเพิ่ม Attribute ใน Relation ที่มีอยู่เดิม รูปแบบ ALTER TABLE<TABLE NAME> ADD (<COLUMN NAME><DATA TYPE><WIDTH>,…);
คำสั่ง SQL สำหรับนิยามข้อมูล 3. คำสั่ง Drop Table ใช้ในการลบ Relation รูปแบบ DROP TABLE<TABLE NAME>;
คำสั่ง SQL สำหรับนิยามข้อมูล 4. คำสั่ง CREATE INDEX ใช้ในการสร้าง INDEX รูปแบบ CREATE [UNIQUE] INDEX<INDEX NAME> ON<TABLE NAME><COLUMN NAME>,…); เช่น CREATE INDEX QTYIDX ON ORDER(QTY);
คำสั่ง SQL สำหรับนิยามข้อมูล 5. คำสั่ง DROP INDEX ใช้ในการลบ INDEX รูปแบบ DROP INDEX<INDEX NAME>;
คำสั่ง SQL สำหรับนิยามข้อมูล 6. คำสั่ง CREATE VIEW ใช้ในการสร้าง VIEW รูปแบบ CREATE VIEW <VIEW NAME> AS SELECT Statement; เช่น CREATE VIEW SPVIEW AS SELECT S#,P#,QTY FROM SP WHERE QTY>100;
คำสั่ง SQL สำหรับนิยามข้อมูล 7. คำสั่ง DROP VIEW ใช้ในการลบ VIEW รูปแบบ DROP VIEW<VIEW NAME>;
คำสั่ง SQL สำหรับจัดการข้อมูล 1. คำสั่ง INSERT ใช้ในการใส่ข้อมูล Tuple ลงใน Relation โดยการเพิ่มจะเพิ่มได้ทีละ 1 Tuple ต่อครั้ง รูปแบบ INSERT INTO<TABLE NAME> [<COLUMN LIST>] VALUES (<VALUE LIST>); เช่น INSERT INTO P(PID,PNAME,COLOR,CITY) VALUES(‘P1’,’PEN’,’BLUE’,’ROME’);
คำสั่ง SQL สำหรับจัดการข้อมูล 2. คำสั่ง UPDATE ใช้ในการเปลี่ยนแปลงข้อมูล Tuple ใน Relation รูปแบบ UPDATE <TABLE NAME> SET<COLUMN NAME> = <VALUE> [WHERE <CONDITIONS>]; เช่น UPDATE P WHERE PID = ‘P3’;
คำสั่ง SQL สำหรับจัดการข้อมูล 3. คำสั่ง DELETE ใช้ในการลบข้อมูลในแต่ละ Tuple รูปแบบ DELETE FROM<TABLE NAME> [WHERE <CONDITIONS>]; เช่น DELETE FROM S WHERE SID = ‘S3’;
คำสั่ง SQL สำหรับจัดการข้อมูล 4. คำสั่ง SELECT ใช้ในการเรียกข้อมูลจากฐานข้อมูลตามที่ผู้ใช้ต้องการ รูปแบบ SELECT [* | DISTINCT]<TARGET LIST> FROM <TABLE NAME>[<ALIASES>] [WHERE PREDICATE] [GROUP BY <COLUMN LIST>] [HAVING PREDICATE] [ORDER BY <COLUMN LIST>] [ASC | DESC];
คำสั่ง SQL สำหรับจัดการข้อมูล การเรียกดูข้อมูลแบบไม่มีเงื่อนไข อาจเป็นการดูข้อมูลทั้งตารางหรือบางแอททริบิวต์หรือโดยการให้จัดเรียงข้อมูล เช่น SELECT * FROM SUPPLIER; SELECT PNO,PNAME FROM PRODUCT;
คำสั่ง SQL สำหรับจัดการข้อมูล การเรียกดูข้อมูลแบบมีเงื่อนไข เป็นการระบุชื่อแอททริบิวต์ที่ต้องการระบุเป็นเงื่อนไขและข้อมูลเฉพาะในอนุประโยค WHERE โดยการระบุเงื่อนไขจะนำ operator ต่างๆ เข้ามาใช้ในการแสดงเงื่อนไข มีดังนี้ • ใช้ Logicalและ Boolean Operator Logical Operatorใช้แสดงการเปรียบเทียบค่าของข้อมูล จะแสดงอยู่ระหว่างชื่อคอลัมน์และข้อมูลเฉพาะที่ต้องการแสดงเป็นเงื่อนไข Operator ดังกล่าวประกอบด้วย >, <, = , >=, <=, <> Boolean Operator ใช้สำหรับการเรียกดูข้อมูลที่มีเงื่อนไขมากกว่าหนึ่งเงื่อนไข เช่น AND, OR, NOT
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น SELECT PNAME FROM PRODUCT WHERE QTY > 10; SELECT SNO FROM SUPPLIER WHERE CITY = ‘LONDON’ OR ‘PARIS’;
คำสั่ง SQL สำหรับจัดการข้อมูล • ใช้ Operator ของ SQL BETWEEN…AND… ใช้กำหนดเงื่อนไขของแอททริบิวต์เป็นค่าระหว่าง 2 ค่า โดย Operator นี้จะแสดงต่อจากชื่อแอททริบิวต์ที่ถูกกำหนดให้เป็นเงื่อนไข เช่น SELECT SNO,PNO,QTY FROM SUPPLIER WHERE QTY BETWEEN 300 AND 500;
คำสั่ง SQL สำหรับจัดการข้อมูล • ใช้ Operator ของ SQL IN ใช้กับเงื่อนไขของคอลัมน์ที่ต้องการระบุเงื่อนไขเป็นกลุ่มของข้อมูล โดย Operator นี้จะแสดงต่อจากชื่อแอททริบิวต์ที่ถูกกำหนดให้เป็นเงื่อนไข และกลุ่มของข้อมูลที่เป็นข้อมูลเฉพาะของแอททริบิวต์ที่เป็นเงื่อนไขนี้ จะอยู่ในวงเล็บ() และมี, คั่น
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงรายละเอียดของรหัส ชื่อผู้ผลิต ที่อยู่ลอนดอนและปารีส SELECT SNO,SNAME FROM SUPPLIER WHERE CITY IN (‘LONDON’,’PARIS’);
คำสั่ง SQL สำหรับจัดการข้อมูล • ใช้ Operator ของ SQL LIKE ใช้ในการค้นหาข้อมูลของคอลัมน์ที่เก็บข้อมูลประเภทตัวอักษรเท่านั้น โดยที่ยังไม่ทราบค่าแน่นอนของข้อมูลทั้งหมดที่จะค้นหา หรือรู้เพียงบางตัวอักษรเท่านั้น โดย Operator นี้จะระบุต่อท้ายชื่อแอททริบิวต์ที่ถูกกำหนดให้เป็นเงื่อนไข โดยจะใช้สัญลักษณ์ที่ช่วยในการค้นหาข้อมูลเป็นตัวช่วยในการค้นหาข้อมูลที่เรียกว่า “Wild Card”
คำสั่ง SQL สำหรับจัดการข้อมูล สัญลักษณ์ดังกล่าวประกอบด้วย %, _ โดยข้อมูลบางส่วนที่ใช้ในการค้นหาพร้อมกับสัญลักษณ์ทั้ง 2 นี้ จะต้องมีเครื่องหมาย ‘ ’ กำกับเสมอ % ใช้แทนจำนวนตัวอักษรได้หลายตัว เช่น WHERE ENAME LIKE ‘N%’ _ ใช้แทนตัวอักษรที่ไม่ทราบค่าได้ 1 ตัว เช่น WHERE ENAME LIKE ‘N_ _ _ _ _’
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงรายละเอียดของส่วนประกอบที่ขึ้นต้นด้วยอักษร C SELECT * FROM PRODUCT WHERE PNAME LIKE ‘C%’;
คำสั่ง SQL สำหรับจัดการข้อมูล • การเรียกดูข้อมูลมากกว่า 1 Relation หรือJoin อาจจะเรียกดูข้อมูลแบบมีเงื่อนไขหรือไม่มีเงื่อนไขก็ได้ Equi Join แต่ละ Relation ที่จะเชื่อมโยงกันจะต้องมีแอททริบิวต์ที่อ้างอิงกันได้ โดยเงื่อนไขที่ระบุจะเปรียบเทียบกันโดยใช้เครื่องหมาย =
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงข้อมูลของผู้ผลิตและส่วนประกอบที่อยู่เมืองเดียวกัน SELECT S.*, P.* FROM SUPPLIER S, PRODUCT P WHERE S.CITY = P.CITY;
คำสั่ง SQL สำหรับจัดการข้อมูล Non-Equi Join เป็นการเชื่อมโยงข้อมูล โดยเงื่อนไขที่แสดงไม่ใช่เครื่องหมาย = แต่อาจเป็น >, <, >=, <=, <> หรือ between…and… หรือ in เป็นต้น เช่น ให้แสดงข้อมูลของผู้ผลิตและจำนวนคำสั่งซื้อระหว่าง 200 ถึง 300
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงข้อมูลของผู้ผลิตและจำนวนคำสั่งซื้อระหว่าง 200 ถึง 300 SELECT S.SNO, S.SNAME, O.PNO,O.QTY FROM SUPPLIER S, ORDERS O WHERE QTY BETWEEN 400 AND 500 AND S.SNO = O.SNO;
คำสั่ง SQL สำหรับจัดการข้อมูล Self-Join เป็นการเชื่อมโยงข้อมูลโดยใช้ตารางเดียวกันและตั้งชื่อให้ตารางเป็นชื่ออีกชื่อตารางหนึ่ง ทั้งนี้เพื่อประโยชน์ในการเชื่อมโยงข้อมูล เช่น ให้แสดงรหัสของผู้ขายที่ตั้งอยู่ในเมืองเดียวกัน
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงรหัสของผู้ขายที่ตั้งอยู่ในเมืองเดียวกัน SELECT S1.SNO, S2.SNO FROM SUPPLIER S1, SUPPLIER S2 WHERE S1.CITY = S2.CITY AND S1.SNO < S2.SNO
คำสั่ง SQL สำหรับจัดการข้อมูล Outer-Join เป็นการเชื่อมโยงข้อมูลในลักษณะที่แสดงข้อมูลที่ไม่เป็นไปตามเงื่อนไขที่กำหนดไว้ออกมาด้วย ทั้งนี้เพื่อประโยชน์ในการดูข้อมูลที่ครบถ้วนมากขึ้น ซึ่งระบบจัดการฐานข้อมูลบางชนิดมีคำสั่ง SQL ที่สามารถทำการเชื่อมโยงเพื่อเรียกดูข้อมูลในลักษณะนี้ได้เช่น ORACLE หรือ ACCESS เป็นต้น
คำสั่ง SQL สำหรับจัดการข้อมูล การเรียกข้อมูลโดยใช้ฟังก์ชันที่เกี่ยวกับการรวม (Built-in Functions) เป็นฟังก์ชันที่สามารถประมวลผลกับข้อมูลเป็นชุด(Set)หรือที่เรียกว่า Group function หรือ Aggregate function ฟังก์ชันที่ใช้ใน SQL ประกอบด้วย AVG, MAX, MIN, SUM, COUNT ฟังก์ชันเหล่านี้สามารถใช้ในคำสั่ง SELECT หรืออนุประโยค HAVING
คำสั่ง SQL สำหรับจัดการข้อมูล • AVG AVG[*|DISTINCT] <column name> หรือ AVG[*|DISTINCT] <column expression> • COUNT COUNT[*|DISTINCT] <column name>
คำสั่ง SQL สำหรับจัดการข้อมูล • MAX MAX[*|DISTINCT] <column name> หรือ MAX[*|DISTINCT] <column expression> • MIN MIN[*|DISTINCT] <column name> หรือ MIN[*|DISTINCT] <column expression>
คำสั่ง SQL สำหรับจัดการข้อมูล • SUM SUM[*|DISTINCT] <column name> หรือ SUM[*|DISTINCT] <column expression>
คำสั่ง SQL สำหรับจัดการข้อมูล • GROUP BY การแสดงผลในลักษณะของการจัดกลุ่มข้อมูลยังสามารถใช้ GROUP BY เพื่อสั่งให้จัดกลุ่มตามแอททริบิวต์ที่ต้องการให้จัดกลุ่มเฉพาะลงไป
คำสั่ง SQL สำหรับจัดการข้อมูล • HAVING ในการกำหนดเงื่อนไขในการสืบค้น เราจะระบุในอนุประโยค WHERE เป็นเงื่อนไขง่ายๆ ไม่มีการระบุฟังก์ชันกลุ่มในเงื่อนไขนั้น แต่ถ้าหากเราต้องการให้มีการเปรียบเทียบโดยใช้ฟังก์ชันกลุ่ม เราจะใช้ใน WHERE ไม่ได้ต้องเลี่ยงไปใช้ HAVING แทน
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ต้องการดูแผนกและเงินรวมในแผนกนั้น โดยแสดงเฉพาะแผนกที่มีเงิน รวมมากกว่า 70,000 SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO HAVING SUM(SAL) > 70000;
คำสั่ง SQL สำหรับจัดการข้อมูล การเรียกดูข้อมูลโดยมีคำสั่งสืบค้นย่อย(Subquery) เงื่อนไขในอนุประโยค WHERE สามารถจะใช้คำสั่ง SELECT เป็นคำสั่งสืบค้นย่อย(Subquery) เพื่อเรียกดูข้อมูลได้ ในกรณีที่ผลของข้อมูลเรียกจากข้อคำถามย่อยมีค่ามากกว่า 1 ค่า ในการระบุเงื่อนไขอาจจะใช้ Operator ต่อไปนี้ในการแสดงเงื่อนไข
คำสั่ง SQL สำหรับจัดการข้อมูล 1. ANY ใช้ในการเปรียบเทียบค่าของแอททริบิวต์หนึ่งๆ ว่ามีค่าตรงกับค่าใดค่าหนึ่งของผลลัพธ์แต่ละค่าที่ได้จากคำสั่งสืบค้น ย่อยที่ระบุเป็นเงื่อนไขในอนุประโยค Where หรือไม่ และจะใช้ร่วมกับ Logical Operator เช่น =, >, <, <>
คำสั่ง SQL สำหรับจัดการข้อมูล 2. ALL ใช้ในการเปรียบเทียบค่าของแอททริบิวต์หนึ่งๆ ว่ามีค่าตรงกับทุกค่าของผลลัพธ์ที่ได้จากคำสั่งสืบค้นย่อยและจะใช้ร่วมกับ Logical Operator เช่น =, >, <, <>
คำสั่ง SQL สำหรับจัดการข้อมูล 3. EXISTS ใช้เพื่อให้แสดงว่าใช่(True)หรือไม่ใช่(False) ออกมา หากคำสั่งสืบค้นย่อยในอนุประโยค Where มีค่าตรงกับค่าที่อ่านได้จากคำสั่งสืบค้นย่อยของ SELECT ที่อยู่ด้านนอก ถ้าเป็นจริงก็แสดงข้อมูลออกมา ถ้าไม่จริงก็จะไม่แสดงค่าของข้อมูลนั้นออกมา
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงชื่อผู้ผลิตที่ขายสินค้ารหัส P2 SELECT SNAME FROM S WHERE SID IN (SELECT SID FROM SP WHERE PID = ‘P2’);
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงชื่อผู้ผลิตที่ไม่ได้ขาย P2 SELECT SNAME FROM S WHERE NOT EXISTS (SELECT SID FROM SP WHERE S.SID = SP.SID AND PID = ‘P2’);
คำสั่ง SQL สำหรับจัดการข้อมูล เช่น ให้แสดงรหัสผู้ผลิต รหัสสินค้า และจำนวนสินค้าที่ขายของผู้ผลิตอื่นที่มีจำนวนการขายสูงกว่ารหัสผู้ผลิต S1 SELECT SID, PID, QTY FROM SP WHERE QTY > ALL (SELECT DISTINCT QTY FROM SP WHERE SID = ‘S1’);
คำสั่ง SQL สำหรับจัดการข้อมูล การเรียกดูข้อมูลโดยใช้ Set Operator เราสามารถใช้เครื่องหมายในการคำนวณที่ใช้กับเซต เช่น Union, Intersection, Minus มาช่วยในการประมวลผลข้อมูลที่ได้จากคำสั่งสืบค้นหลายๆ คำสั่งได้ เช่น
คำสั่ง SQL สำหรับจัดการข้อมูล SELECT ENAME, JOB FROM EMP WHERE ENAME LIKE ‘A%’ UNION SELECT ENAME, JOB FROM EMP WHERE JOB LIKE ‘C%’;
ตาราง Personal • ตารางเก็บข้อมูลพนักงาน
ตัวอย่าง • SELECT PersonalID, PersonalCode, FirstName, LastName, TitleName FROM Personal WHERE DeleteFlag = ‘0’ ORDER BY PersonalID
ตัวอย่าง ค้นหาจากชื่อพนักงาน • SELECT PersonalID, PersonalCode, FirstName, LastName, TitleName FROM Personal WHERE DeleteFlag = ‘0’AND FirstName LIKE ‘%พร%’ • ดูข้อมูลเฉพาะ FirstName มีคำว่า “พร” และ DeleteFlag มีค่า = 0
ตัวอย่าง ค้นหาจากนามสกุลพนักงาน • SELECT PersonalID, PersonalCode, FirstName, LastName, TitleName FROM Personal WHERE DeleteFlag = ‘0’AND LastName LIKE ‘%พร%’ • ดูข้อมูลเฉพาะ LastName มีคำว่า “พร” และ DeleteFlag มีค่า = 0
ตัวอย่าง ค้นหาจากรหัสบัตรพนักงาน • SELECT PersonalID, PersonalCode, FirstName, LastName, TitleName FROM Personal WHERE DeleteFlag = ‘0’AND PersonalCode = ‘0001’ • ดูข้อมูลเฉพาะ PersonalCode มีค่าเท่ากับ “0001” และ DeleteFlag มีค่า = 0
ตัวอย่าง ค้นหาจากรหัสพนักงาน • SELECT PersonalID, PersonalCode, FirstName, LastName, TitleName FROM Personal WHERE DeleteFlag = ‘0’AND PersonalID = ‘10’ • ดูข้อมูลเฉพาะ PersonalID มีค่าเท่ากับ “10” และ DeleteFlag มีค่า = 0