____ SQL _Structured Query Language__1_

Document Sample
____ SQL _Structured Query Language__1_ Powered By Docstoc
					        ภาษา 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] unique ,
             field2 type [(size)] , ……………. ,
             …………...
  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      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
                                                                 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          Department
             John          Marketing
             Mary          Sales
             Peter         Sales
             Andy          Marketing
             Anne          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         MALEE JUICE    RICH FLAVOR
    2         MALEE JUICE    TOO SWEET
    3         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       10       5 OCT
     2001 MATH               NULL
          NULL         COMPUTER     7
          3 JUL 2001   COMPUTER     7
          1 AUG 2001   ENGINEER NULL
          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

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:40
posted:7/26/2012
language:Thai
pages:67