07 Structured Query Language - Worayoot 2014-01-17آ  Structured Query Language (SQL) 1 Structured Query

  • View
    3

  • Download
    0

Embed Size (px)

Text of 07 Structured Query Language - Worayoot 2014-01-17آ  Structured Query Language (SQL) 1 Structured...

  • Structured Query Language (SQL)

    1

    Structured Query Language (SQL)

    2

    • SQL ที�ใชใ้นระบบฐานขอ้มลูแบบ Relational Database เกดิมาจาก พื1นฐานของ Relational Model อยา่งเชน่ Relational Algebra

    • องคป์ระกอบของภาษา SQL – Data-Definition Language (DDL) : เป็นคําสั�งเพื�อกําหนด

    relation schemas – Interactive data-manipulation language (DML) : เป็นการ

    รวมคําสั�งใน query language ที�มาจากพื1นฐานของ relational algebra และ relational calculus

    – Embedded DML : อยูใ่นรปู library เพื�อตดิตอ่กบัภาษาโปรแกรมอื�นๆ เชน่ C, Pascal, PHP

    – View Definition : คําสั�งเกี�ยวกบัการสรา้ง view – Authorization : คําสั�งเกี�ยวกบัสทิธกิารเขา้ถงึขอ้มลู – Integrity : คําสั�งเกี�ยวกบัการกําหนดความถกูตอ้งของขอ้มลู – Transaction Control : คําสั�งเกี�ยวกบัการเริ�มตน้และสิ1นสดุของ

    transaction เชน่ lock

    MySQL

    • MySQL เป็นโปรแกรมระบบฐานขอ้มลูแบบ Relational Database System

    • เป็น open source และสามารถ download มาใชไ้ด ้ Free

    • สามารถทาํงานไดก้บัระบบปฎบิตักิารสาํคญัๆ ไดห้มด เชน่ Windows, Linux, Mac OS

    • Website: Website: Website: Website: http://www.mysql.com

    3

    phpMyAdmin

    4

    • เมื�อตดิตั �งโปรแกรม AppServ สามารถใช้งาน phpMyAdmin เพื�อจดัการกบั MySQL โดยเข้าไปที� 127.0.0.1/phpmyadmin

  • การใช ้MySQL ผา่นทาง terminal

    5

    • ใน Windows ใหก้ด control panel -> run -> พมิพ์ cmd

    • เมืMอได ้terminal ใหพ้มิพ์ mysql –u root –p – หมายถงึเรียกใชง้านโปรแกรม mysql โดยจะเขา้สูร่ะบบฐานขอ้มลู

    แบบ user (-u) ทีMชืMอ root และ –p หมายถงึ เป็น account ทีMม ี password ป้องกนัไวอ้ยู่

    • เมืMอโปรแกรมถาม password ใหใ้ส ่password ของ root ทีMต ัVง เอาไว้

    6

    การใช ้MySQL ผา่นทาง terminal

    • ถา้พมิพร์หสัถกูตอ้งจะเขา้สู ่prompt ของโปรแกรม MySQL

    คาํส ัMง MySQL

    • เราสามารถตรวจดรูะบบฐานขอ้มลูทั 1งหมด ที� root สามารถ มองเห็นดว้ยคําสั�ง

    show databases;

    7

    คาํส ัMง MySQL

    • ถา้ตดิตั 1ง AppServ จะมฐีานขอ้มลูเริ�มตน้อยู ่4 ฐานขอ้มลู – Information_schema และ mysql เป็นฐานขอ้มลูที�ใชใ้นการตั 1ง

    คา่ระบบของ MySQL – Phpmyadmin เป็นฐานขอ้มลูที�เก็บคา่ระบบของ PhpMyAdmin – Test เป็นฐานขอ้มลูทดลอง

    • เราสามารถเลอืกการทํางานวา่จะทํางานกบัฐานขอ้มลูตวัไหนดว้ย คําสั�ง

    use ; เชน่

    use phpmyadmin;

    8

  • คาํส ัMง MySQL

    • เราสามารถทราบวา่ระบบฐานขอ้มลูที�เราใชอ้ยูน่ั 1นประกอบไปดว้ย ตาราง อะไรบา้ง โดยการใชค้ําสั�ง

    show tables;

    9

    การดโูครงสรา้งของตารางทีMถกูสรา้งมาแลว้

    • สามารถดโูครงสรา้งของตารางไดโ้ดยใชค้ําสั�ง DESCRIBE หรอื DESC ;

    10

    การสรา้งฐานขอ้มลู

    • เมื�อเราตอ้งการออกแบบฐานขอ้มลูใหม ่เราควรจะสรา้งฐานขอ้มลูกอ่น ดว้ย คําสั�ง

    CREATE database ; เชน่ CREATE database CITLibrary;

    11

    การสรา้งฐานขอ้มลู

    • เมื�อเราตอ้งการลบฐานขอ้มลู สามารถทําไดด้ว้ยคําสั�ง DROP database ;

    เชน่ DROP database CITLibrary;

    12

  • การสรา้งตาราง (Create)

    � Create Table: CREATE TABLE r (A1 D1 , … ,An Dn

    ... )

    � Integrity Constraints: ขอ้กําหนดเกี�ยวกบัขอ้มลู (attribute, รายการ หรอื ตาราง) เชน่ � PRIMARY KEY ( Aj1, Aj2, …, Ajm ) � CHECK ( P )

    Tuple or Attribute Constraints

    Attribute Constraint

    13

    Domain Types ใน SQL

    � char(n) เก็บตวัอักษร n ตวั จองพื1นที�แบบคงที�

    � varchar(n) เก็บตวัอักษร n ตวั จองพื1นที�แบบ dynamic

    � text เก็บขอ้มลูที�อยูใ่นรปูตวัอักษร

    � smallint (2byte) เก็บคา่ตวัเลข -32768 ถงึ 32767 � int (4byte) เก็บคา่ตวัเลข -2147483648 ถงึ 2147483647 � double (8byte) เก็บคา่ไดท้ี�ตวัเลข 15 ตําแหน่งหลงัจดุทศนยิม � float(n) (4byte) เก็บคา่ไดท้ี�ตวัเลข 7 ตําแหน่งหลงัจดุทศนยิม � date YYYY-MM-DD � time HH:MM:SS � datetime YYYY-MM-DD HH:MM:SS � bool คา่ 0 คอื false, คา่ที�ไมใ่ช ่0 คอื true

    14

    ตวัอยา่งการสรา้งตารางพืVนฐาน

    • สรา้งตาราง Employee CREATE TABLE employee (

    ssn INT, fname VARCHAR(20), lname VARCHAR(20), address VARCHAR(50), salary INT, deptno SMALLINT

    )

    � สรา้งตาราง Department CREATE TABLE department (

    deptno SMALLINT, dname VARCHAR(30), mgrssn INT, startdate DATE

    )

    15

    ตวัอยา่งการสรา้งตารางพรอ้มกาํหนดขอ้กาํหนด

    � สรา้งตาราง Employee CREATE TABLE employee (

    ssn INT NOT NULL AUTO_INCREMENT, fname VARCHAR(20) NOT NULL, lname VARCHAR(20) NOT NULL, address VARCHAR(50), salary INT, deptno SMALLINT NOT NULL, PRIMARY KEY (ssn), )

    16

  • ตวัอยา่งการสรา้งตารางพรอ้มกาํหนดขอ้กาํหนด

    � สรา้งตาราง Department CREATE TABLE department (

    deptno SMALLINT, dname VARCHAR(30) NOT NULL, mgrssn INT NOT NULL AUTO_INCREMENT, startdate DATE DEFAULT Sysdate, PRIMARY KEY (deptno), CONSTRAINT dname_uk

    UNIQUE (dname), CONSTRAINT dept_mgr_fk

    FOREIGN KEY (mgrssn) REFERENCES employee(ssn))

    17

    Domain Constraints

    • การกําหนดลกัษณะชนดิของขอ้มลู • ตรวจสอบเมื�อมกีารเพิ�มขอ้มลู • ตวัอยา่งการสรา้ง domain

    – CREATE DOMAIN gender CHAR CONSTRIANT gender_test

    – CHECK (gender IN (‘F’, ‘M’))

    Constraint Name

    Constraint Condition

    18

    การลบและเปลีMยนตาราง (Drop)

    • การลบตาราง -- DROP TABLE r – ลบตาราง Employee ออกจากระบบฐานขอ้มลู

    DROP TABLE employee;

    • การเปลี�ยนตาราง (Alter) -- ALTER TABLE r ADD (a d) – เพิ�ม attribute COMMISSION ในตาราง Employee

    ALTER TABLE EMPLOYEE ADD (commission int)

    – เปลี�ยน attribute fname ในตาราง Employee ใหม้ขีนาดใหญ่ ขึ1น

    ALTER TABLE EMPLOYEE MODIFY (fname varchar(40))

    19

    การเพิMมขอ้มลู (Insert)

    • INSERT INTO table-name VALUES (a1, a2, … ,an) • INSERT INTO table-name(a1-name, a2-name, …, an-

    name) VALUES (a1, a2, …, an)

    • ตวัอยา่ง INSERT INTO employee VALUES (1, ‘Jo