Structured Query Language (SQL) 357337 – Web Programming and Web Database
Structured Query Language (SQL) SQL ที่ใช้ในระบบฐานข้อมูลแบบ Relational Database เกิดมาจากพื้นฐานของ Relational Model อย่างเช่น Relational Algebra องค์ประกอบของภาษา SQL Data-Definition Language (DDL) : เป็นคำสั่งเพื่อกำหนด relation schemas Interactive data-manipulation language (DML) : เป็นการรวมคำสั่งใน query language ที่มาจากพื้นฐานของ relational algebra และ relational calculus Embedded DML : อยู่ในรูป library เพื่อติดต่อกับภาษาโปรแกรมอื่นๆเช่น C, Pascal, PHP View Definition : คำสั่งเกี่ยวกับการสร้าง view Authorization : คำสั่งเกี่ยวกับสิทธิการเข้าถึงข้อมูล Integrity : คำสั่งเกี่ยวกับการกำหนดความถูกต้องของข้อมูล Transaction Control : คำสั่งเกี่ยวกับการเริ่มต้นและสิ้นสุดของ transaction เช่น lock
MySQL MySQL เป็นโปรแกรมระบบฐานข้อมูลแบบ Relational Database System เป็น open source และสามารถ download มาใช้ได้ Free สามารถทำงานได้กับระบบปฎิบัติการสำคัญๆ ได้หมด เช่น Windows, Linux, Mac OS Website: http://www.mysql.com
phpMyAdmin เมื่อติดตั้งโปรแกรม AppServ สามารถใช้งาน phpMyAdmin เพื่อจัดการกับ MySQL โดยเข้าไปที่ 127.0.0.1/phpmyadmin
การใช้ MySQL ผ่านทาง terminal ใน Windows ให้กด control panel -> run -> พิมพ์ cmd เมื่อได้ terminal ให้พิมพ์ mysql –u root –p หมายถึงเรียกใช้งานโปรแกรม mysql โดยจะเข้าสู่ระบบฐานข้อมูลแบบ user (-u) ที่ชื่อ root และ –p หมายถึง เป็น account ที่มี password ป้องกันไว้อยู่ เมื่อโปรแกรมถาม password ให้ใส่ password ของ root ที่ตั้งเอาไว้
การใช้ MySQL ผ่านทาง terminal ถ้าพิมพ์รหัสถูกต้องจะเข้าสู่ prompt ของโปรแกรม MySQL
คำสั่ง MySQL เราสามารถตรวจดูระบบฐานข้อมูลทั้งหมด ที่ root สามารถมองเห็นด้วยคำสั่ง show databases;
คำสั่ง MySQL ถ้าติดตั้ง AppServ จะมีฐานข้อมูลเริ่มต้นอยู่ 4 ฐานข้อมูล Information_schema และ mysql เป็นฐานข้อมูลที่ใช้ในการตั้งค่าระบบของ MySQL Phpmyadmin เป็นฐานข้อมูลที่เก็บค่าระบบของ PhpMyAdmin Test เป็นฐานข้อมูลทดลอง เราสามารถเลือกการทำงานว่าจะทำงานกับฐานข้อมูลตัวไหนด้วยคำสั่ง use <ชื่อฐานข้อมูล>; เช่น use phpmyadmin;
คำสั่ง MySQL เราสามารถทราบว่าระบบฐานข้อมูลที่เราใช้อยู่นั้นประกอบไปด้วย ตาราง อะไรบ้าง โดยการใช้คำสั่ง show tables;
การดูโครงสร้างของตารางที่ถูกสร้างมาแล้ว สามารถดูโครงสร้างของตารางได้โดยใช้คำสั่ง DESCRIBE <ชื่อตาราง> หรือ DESC <ชื่อตาราง>;
การสร้างฐานข้อมูล เมื่อเราต้องการออกแบบฐานข้อมูลใหม่ เราควรจะสร้างฐานข้อมูลก่อน ด้วยคำสั่ง CREATE database <ชื่อฐานข้อมูล>; เช่น CREATE database CITLibrary;
การสร้างฐานข้อมูล เมื่อเราต้องการลบฐานข้อมูล สามารถทำได้ด้วยคำสั่ง DROP database <ชื่อฐานข้อมูล>; เช่น DROP database CITLibrary;
การสร้างตาราง (Create) Attribute Constraint Create Table: CREATE TABLE r (A1 D1 <NOT NULL, UNIQUE> , … ,An Dn <integrity constraints 1> ... <integrity constraints k>) Integrity Constraints: ข้อกำหนดเกี่ยวกับข้อมูล (attribute, รายการ หรือ ตาราง) เช่น PRIMARY KEY ( Aj1, Aj2, …, Ajm ) CHECK ( P ) Tuple or Attribute Constraints
Domain Types ใน SQL char(n) เก็บตัวอักษร n ตัว จองพื้นที่แบบคงที่ varchar(n) เก็บตัวอักษร n ตัว จองพื้นที่แบบ 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
ตัวอย่างการสร้างตารางพื้นฐาน สร้างตาราง 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 )
ตัวอย่างการสร้างตารางพร้อมกำหนดข้อกำหนด สร้างตาราง 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), )
ตัวอย่างการสร้างตารางพร้อมกำหนดข้อกำหนด สร้างตาราง 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))
Domain Constraints การกำหนดลักษณะชนิดของข้อมูล ตรวจสอบเมื่อมีการเพิ่มข้อมูล ตัวอย่างการสร้าง domain CREATE DOMAIN gender CHAR CONSTRIANT gender_test CHECK (gender IN (‘F’, ‘M’)) Constraint Name Constraint Condition
การลบและเปลี่ยนตาราง (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 ให้มีขนาดใหญ่ขึ้น ALTER TABLE EMPLOYEE MODIFY (fname varchar(40))
การเพิ่มข้อมูล (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, ‘John’, ‘Terry’,’Chelsea, London’, 100000, 2) INSERT INTO employee(fname, lname, ssn, deptno) VALUES (‘John’, ‘Terry’, 1, 2)
การลบข้อมูล (Delete) DELETE FROM r [WHERE <conditions>] ลบรายการของพนักงานทั้งหมด DELETE FROM employee ลบรายการของพนักงาน ที่มีรหัส 001 DELETE FROM employee WHERE SSN = 001
การเปลี่ยนข้อมูล (Update) UPDATE r SET a = value UPDATE r SET a = value WHERE <conditions> เปลี่ยนชื่อและนามสกุลพนักงาน ssn = 1 เป็น Frank Lampard UPDATE employee SET fname=‘Frank’,lname=‘Lampard’ WHERE ssn = 1 เพิ่มเงินเดือนให้กับพนักงานทุกคน 10 % UPDATE employee SET salary = salary*1.1 ลดเงินเดือน 5% ของพนักงานทุกคนใน deptNo = 15 UPDATE employee SET salary = salary*0.95 WHERE dNo = 15
SQL ในการค้นหาข้อมูลด้วย Relational Algebra ส่วนใหญ่จะอยู่ในรูป SELECT A1, A2, … , An FROM R1, R2, … , Rm WHERE P
Relational Algebra -> SQL จาก Relational Schema Person(id, name, age) Relational Algebra เพื่อหารหัส และ ชื่อ ของคนที่มีอายุมากกว่า 20 SQL : SELECT id, name FROM person WHERE age > 20;
Relational Algebra -> SQL ในกรณีที่ Relational Algebra ไม่มีการใช้ project ( ) หมายถึงให้แสดงผลลัพธ์ออกมาทุกฟิลด์ ซึ่งตรงกับเครื่องหมาย “*” ใน SQL Relational Algebra SQL SELECT * FROM person WHERE age > 20
Relational Algebra -> SQL ในกรณีที่ Relational Algebra ไม่มีการใช้ select ( ) หมายถึงไม่มีเงื่อนไขในการกรองผลลัพธ์ ดังนั้นใน SQL สามารถละ WHERE ออกไปได้ Relational Algebra SQL SELECT id,name FROM person
Relational Algebra -> SQL SELECT * FROM <ชื่อตาราง> เช่น SELECT * FROM person
SQL : SELECT คำสั่ง SELECT ใน SQL ตามด้วยฟิลด์ที่จะค้นหา วิธี SELECT มีอยู่ 2 แบบ SELECT ALL (เป็น default ของคำสั่ง SELECT ถ้าไม่ระบุ) SELECT DISTINCT
SQL : SELECT คำสั่ง SELECT สามารถทำการ + , - , * , / กับฟิลด์ที่เลือกแสดง ออกมาได้
SQL : FROM ใช้สำหรับเลือกตารางที่จะค้นหาข้อมูล ถ้าใส่มากกว่า 1 และคั่นด้วยเครื่องหมาย “,” หมายถึงจะทำผลคูณ cartesian ของตารางนั้นๆ
SQL : WHERE ใน Relational Algebra เงื่อนไขของ จะเปลี่ยนจากสัญลักษณ์ทางคณิตศาสตร์ เป็น สัญลักษณ์ที่พิมพ์ได้ทาง keyboard ปกติ Logical Operations (RA SQL) AND OR NOT Arithmetic Operations (SQL) >, <, <=, >=, =, <>
SQL : WHERE หารหัสลูกค้าที่กู้และฝากเงินกับธนาคาร