slide7 sql
DESCRIPTION
TRANSCRIPT
SQLคื�ออะไรมาจากคื�าว่ า Structure Query Language
เป็�นภาษามาตรฐานที่��ใช้�ในการต�ดต อก�บระบบฐานข้�อม"ลเช้�งสั�มพั�นธ์( (Relational Database Management System) หร�อ RDBMS ซึ่+�ง ANSI (American National Standards Institute) ได�ป็ระกาศออกมาอย่ างเป็�นที่างการ
ด�งน�.น ผู้"�ที่��ที่�างานเก��ย่ว่ก�บระบบฐานข้�อม"ลในป็0จจ1บ�นจ�าเป็�นต�องร"� เน��องจากระบบฐานข้�อม"ลที่��ม�อย่" ในป็0จจ1บ�นเก�อบที่�.งหมดเป็�นระบบฐานข้�อม"ลแบบ RDBMS เช้ น MS-Access, MS-SQL, MySQL, Oracle เป็�นต�น
Marisa Kuntasup
คื�าสั��งต างๆ ข้องภาษา SQL แบ งตามล�กษณะการใช้�งานออกเป็�น 4 กล1 ม ด�งน�.
1.DDL (Data Definition Language) เป็�นกล1 มคื�าสั��งที่��ใช้�สั�าหร�บสัร�างฐานข้�อม"ลหร�อใช้�ก�าหนดโคืรงสัร�างคืว่ามสั�มพั�นธ์(ต างๆ ภาย่ในฐานข้�อม"ล เช้ น
- CREATE TABLE- ALTER TABLE- DROP TABLE- CREATE INDEX- DROP INDEX
Marisa Kuntasup
2. DML (Data Manipulation Language) เป็�นกล1 มคื�าสั��งที่��พั�ฒนาข้+.นตามแนว่คื�ดข้อง Relational Algebra และ Record Relational Calculus โดย่ป็ระกอบด�ว่ย่คื�าสั��งที่��ใช้�สั�าหร�บ เพั��ม ลบ หร�อเป็ล��ย่นแป็ลงข้�อม"ลในฐานข้�อม"ล เช้ น
- SELECT- UPDATE- DELETE- INSERT INTO
Marisa Kuntasup
3. DCL (Data Control Language) ใช้�ในการคืว่บคื1มข้�อม"ล การเก�ดภาว่ะพัร�อมก�น หร�อการป็8องก�นการเก�ดเหต1การณ(ที่��ผู้"�ใช้�หลาย่คืนเร�ย่กใช้�ข้�อม"ลเด�ย่ว่ก�น ณ เว่ลาใดเว่ลาหน+�ง เช้ น
- LOCK TABLES- UNLOCK TABLES- CONSTRAINT
4 . RIGHTS ใช้�ในการก�าหนดสั�ที่ธ์�9บ�ญช้�ผู้"�ใช้�งาน เพั��อก�าหนดระด�บช้�.นคืว่ามป็ลอดภ�ย่ในการเข้�าถึ+งต�ว่ฐานข้�อม"ล เช้ น
- GRANT- REVOKE
Marisa Kuntasup
- สร้�างฐานข้�อมู ล CREATE DATABASE
<database name>;- ลบฐานข้�อมู ล
DROP DATABASE <database name>;
Marisa Kuntasup
การสัร�างตาราง : CREATE TABLE
คำ�าส��งที่��ใช้� คำ�อ CREATE TABLE มู�ร้ ปแบบ คำ�อ
CREATE TABLE <table_name> ( <column1> <datatype> (<size>) [NOT NULL / NULL] , <column2> <datatype> (<size>) [NOT NULL / NULL] , …………...CONSTRAINT <table_name> PRIMARY KEY (<pkcolumn1, pkcolumn2> , ...>) FOREIGN KEY (<refcolumn1, refcolumn2, …>) REFERENCES <foreigntable> (<fkcolumn1, fkcolumn2, ...>) );
Marisa Kuntasup
แบบที่�� 1CREATE TABLE
Student ( ID integer(3)
NOT NULL, FName
char(30), LName
char(30),CONTRAINT
StudentPRIMARY KEY (ID)
) ;
ต�ว่อย่ าง
แบบที่�� 2CREATE TABLE
Student ( ID integer(3)
NOT NULL, FName
char(30), LName
char(30),PRIMARY KEY (ID) ) ;
Marisa Kuntasup
CREATE TABLE Employee ( Emp integer NOT NULL, EName char(30), EDept integer,PRIMARY KEY (Emp),FOREIGN KEY (EDept) REFFERENCE Department (Dept) ) ;
Marisa Kuntasup
เปล��ยนแปลงโคำร้งสร้�างตาร้าง
ALTER TABLE <table_name> Database update (<column_name>
<datatype> (<size>));
หมูายเหต โดย Database update เป"นการ้ก�าหนดการ้เปล��ยนแปลงคำ$าต$างๆ ข้องตาร้างที่��มู�อย $เด&มูได�แก$
- ADD เป"นการ้เพิ่&�มูคำอล�มูน) - MODIFY เป"นการ้แก�ไข้คำ$าในคำอล�มูน) - DROP COLUMN เป"นลบคำอล�มูน)
ลบตาร้าง
DROP TABLE <table_name>;
Marisa Kuntasup
- 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) ;
ต�ว่อย่ าง Alter Table
Marisa Kuntasup
–ด�ช้น�•สร้�างด�ช้น�CREATE INDEX <index name> on <table name>(<column
name>[,<column name>]..);•ลบด�ช้น�DROP INDEX <index name>;
Marisa Kuntasup
การบ�นที่+ก ป็ร�บป็ร1ง ลบและการเร�ย่กข้�อม"ลอย่ างง าย่
- เพิ่&�มูข้�อมู ลที่�ละแถวINSERT INTO <table name>[(<column1, column2,….>)] values (<value1, value2,…>);
- เพิ่&�มูข้�อมู ลโดยการ้ใช้�คำ�าส��งคำ�นหาข้�อมู ลINSERT INTO <table name>[(<column1, column2,….>)] SELECT <statement>;
Marisa Kuntasup
– ปร้�บปร้ งแถวข้�อมู ลUPDATE <table name> SET<column1>[, column2, ...)]=<expression|subquery> [WHERE <condition>];
– ลบข้�อมู ลที่�-งแถวDELETE FROM <table name> [WHERE <condition>];
การบ�นที่+ก ป็ร�บป็ร1ง ลบและการเร�ย่กข้�อม"ลอย่ างง าย่
Marisa Kuntasup
ต�ว่อย่ างคื�าสั��ง INSERT
ex. INSERT INTO product
VALUES (10,book,30, 5 );
product
Marisa Kuntasup
ต�ว่อย่ างคื�าสั��ง UPDATE
1
6
Marisa Kuntasup
ต�ว่อย่ างคื�าสั��ง DELETE
Marisa Kuntasup
การเร�ย่กด"ข้�อม"ลโดย่ใช้�คื�าสั��ง SELECT
การเร�ย่กคื�นข้�อม"ลอย่ างง าย่SELECT 1<column ,
2 ,…>column FROM <table
name>[WHERE <condition>];
Marisa Kuntasup
การเร�ย่กด"ข้�อม"ลโดย่ใช้�ฟั0งก(ช้�นรว่มเป็�นการจ�ดกล1 มข้�อม"ลโดย่ใช้�คื�าสั��ง GROUP BY SELECT <column1, column2, …> FROM <table name> [WHERE <condition>] [GROUP BY <groupingcolumn>] [HAVING <condition>]
การเร�ย่กด"ข้�อม"ลในร"ป็แบบต างๆ
Marisa Kuntasup
DISTIN CT
การ้เร้�ยกด ข้�อมู ลโดยไมู$แสดงร้ายการ้ที่��ซ้ำ�-า
FROM ก�าหนดตาร้างที่��ต�องการ้ใช้�เร้�ยกด ข้�อมู ล
WHERE เง��อนไข้ที่��ใช้�ในการ้คำ�นหาข้�อมู ลจากตาร้าง
ORDER BY
ก�าหนดการ้เร้�ยงล�าด�บข้�อมู ล โดยที่��
DESC การ้เร้�ยงล�าด�บจากมูากไปน�อย
ASC การ้เร้�ยงล�าด�บจากน�อยไปมูากGROUP BY
การ้จ�ดกล $มูแถวข้�อมู ลตามูคำอล�มูน)ที่��ร้ะบ
HAVING
เง��อนไข้ที่��ใช้�ก�บ ข้�อมู ลที่��ได�จาก GROUP BY เที่$าน�-น
Marisa Kuntasup
การเร�ย่กด"ข้�อม"ลจากหลาย่ตาราง เป"นการ้ก�าหนดคำวามูส�มูพิ่�นธ์)ร้ะหว$าง
ตาร้างที่�-งหลาย ซ้ำ1�งสามูาร้ถเช้��อมูต$อข้�อมู ลก�นโดยการ้ใช้�คำ�า
ส��ง WHERE SELECT <columns>
FROM < table1> <table2>[WHERE <condition>]
การเร�ย่กด"ข้�อม"ลในร"ป็แบบต างๆ
Marisa Kuntasup
Marisa Kuntasup
Marisa Kuntasup
Marisa Kuntasup
Marisa Kuntasup
Marisa Kuntasup
ต�ว่อย่ างการเร�ย่กด"ข้�อม"ลจากหลาย่ตาราง
Marisa Kuntasup
Marisa Kuntasup
Marisa Kuntasup
เป"นการ้เร้�ยกด ข้�อมู ลด�วยคำ�าส��ง SELECT ซ้ำ�อน คำ�าส��ง SELECT ในล�กษณะข้อง Nested query ช้ ดคำ�าส��งSELECT ข้�างในจะถ กปร้ะมูวลผลก$อน แล�วส$งผลล�พิ่ธ์)ให�ก�บ คำ�าส��ง SELECT ข้�างนอก ร้ ปแบบ มู�ด�งน�-
SELECT …….
FROM……..
WHERE………
(SELECT ……..
FROM………..
WHERE………. )
การเร�ย่กด"แบบซึ่�อนก�น : Subqueries หร�อ Nested query
Marisa Kuntasup
ต�วอย$าง ต�องการ้หาร้ายช้��อพิ่น�กงานที่��อย $แผนกเด�ยวก�บ Andy
NameDepartmentJohnM MMMMMMMM M MMM
Sales MMMMMSales
MMMM Marketing Anne
Marketing
Employee
Marisa Kuntasup
Subqueries ข้องคื�าสั��งด�านบน คื�อ ‘Maketing’
Marisa Kuntasup
การเร�ย่งล�าด�บข้�อม"ล ORDER BY
Marisa Kuntasup
การใช้� GROUP BY เป"นการ้จ�ดกล $มูแถว ข้�อมู ลตามูคำอล�มูน)ที่��ร้ะบ โดยข้�อมู ลที่��เหมู�อนก�นจะ
ถ กจ�ดให�อย $ในกล $มูเด�ยวก�น
Marisa Kuntasup
ต�ว่อย่ าง GROUP BY
ผู้ลที่��ได�
Marisa Kuntasup
Grouping and Aggregates
EmployeeSELECT Gender, AVG(AGE) AS AAGEFROM EmployeeGROUP BY Gender;
ผู้ลที่��ได�
หาคื าเฉล��ย่ข้องอาย่1จ�ดกล1 มตาม ‘Gender’
Marisa Kuntasup
การใช้� การใช้� HAVINGHAVINGป็ระโย่คื ป็ระโย่คื HAVING HAVING จะใช้�ร ว่มก�บ จะใช้�ร ว่มก�บ
GROUP BY GROUP BY เสัมอ โดย่เสัมอ โดย่HAVING HAVING จะแสัดงข้�อม"ลที่��จะแสัดงข้�อม"ลที่��ผู้ านการจ�ดกล1 มด�ว่ย่ ผู้ านการจ�ดกล1 มด�ว่ย่ GROUP BY GROUP BY เพั�ย่งบางสั ว่นเพั�ย่งบางสั ว่นตามเง��อนไข้ที่��ก�าหนดไว่�ใน ตามเง��อนไข้ที่��ก�าหนดไว่�ใน HAVINGHAVING
Marisa Kuntasup
– โอเป็อเรเตอร(คืณ�ตศาสัตร( ได�แก plus(+), minus(-), divide(/), multiply(*), modula(%)
– โอเป็อเรเตอร(เป็ร�ย่บเที่�ย่บ จะได�คื ากล�บคื�นมา 3 คื า คื�อ TRUE, FALSE และ UNKNOW (ในกรณ�คื าที่��เป็ร�ย่บเที่�ย่บเป็�น Null)
– โอเป็อเรเตอร(อ�กข้ระ ได�แก LIKE ใช้�ร ว่มก�บ ‘%’ หร�อ ‘_’
– โอเป็อเรเตอร(ตรรกะ ได�แก AND, OR, NOT, IN, BETWEEN…AND
โอเป็อร(เรเตอร( สัามารถึแย่กออกเป็�น 4ป็ระเภที่ ได�แก
Marisa Kuntasup
Mathematics Operator เป"น operator ที่��ใช้�ในการ้คำ�านวณ ได�แก$ เคำร้��องหมูาย - +, , * , /
ต�วอย$าง
SELECT ID,FName,LName,Salary*0.05 AS Commision
FROM Employee;ID FNa
meLName
Commision1 John
Smith 6502 Mary Jones
7503 Andy Brown 9004 Jane Wright 10005 John Jones 1050,
Marisa Kuntasup
ต�ว่ป็ฏิ�บ�ต�การ
การที่�างาน
= เที่$าก�บ<> ไมู$เที่$าก�บ< น�อยกว$า> มูากกว$า
<= น�อยกว$าหร้�อเที่$าก�บ>= มูากกว$าหร้�อเที่$าก�บ
ในภาษา SQL ม�ต�ว่ป็ฏิ�บ�ต�การเป็ร�ย่บเที่�ย่บ (Comparison Operator) อย่" 6 แบบ ด�งน�.
Marisa Kuntasup
ex. Select pro_id , pro_name
from product where (price >=5 )
and (amount
>=20) ;
ต�ว่อย่ าง Comparison Operator
ผู้ลที่��ได�
Marisa Kuntasup
ป็ระโย่คืสั ว่นเง��อนไข้• Relation Operator
ปร้ะโยคำเง��อนไข้จะมู�ต�วปฏิ&บ�ต&การ้เช้&งส�มูพิ่�นธ์) (Relation Operator ) ที่��ใช้�ในการ้ก�าหนดเง��อนไข้การ้ที่�างานข้�อมู ล
• Logical Operatorเง��อนไข้ที่��ต�องการ้ใช้�ในการ้ที่�างานก�บข้�อมู ล อาจมู�หลายเง��อนไข้ปร้ะกอบก�น (Compound Condition ) จะต�องใช้�ต�วปฏิ&บ�ต&การ้เช้&งตร้ร้กะ (Logical Operator ) ในการ้ร้วมูเง��อนไข้เข้�าด�วยก�น
Note “การ้ใช้�วงเล7บ เมู��อมู�เง��อนไข้มูากข้1-น อาจต�องใช้�วงเล7บ”เพิ่��อก�าหนดข้อบเข้ตเง��อนไข้ที่��ใช้�คำ�ดเล�อกข้�อมู ล เพิ่��อให�ได�ที่�างานก�บช้ ดข้�อมู ลที่��ต�องการ้และลดคำวามูส�บสนในการ้ตร้วจสอบคำวามูถ กต�อง การ้ที่�างานจะเร้&�มูต�นที่��วงเล7บในส ดก$อน Marisa Kuntasup
ต�ว่ป็ฏิ�บ�ต�ต�ว่ป็ฏิ�บ�ต�การการ
การที่�างานการที่�างาน
AND และ (ผู้ลล�พัธ์(เง��อนไข้ที่�.งสัองข้�างต�องเป็�นจร�ง)
OR หร�อ (ผู้ลล�พัธ์(เง��อนไข้ข้�างใดข้�างหน+�งต�องเป็�นจร�ง)
IN ข้�อม"ลอย่" ในกล1 มที่��ก�าหนดไว่�BETWE
ENข้�อม"ลอย่" ในช้ ว่งที่��ก�าหนดไว่�
NOT ตรงข้�ามก�บเง��อนไข้ที่��ระบ1ตามหล�งคื�าน�.
LIKE คืล�าย่ (ใช้�ก�บข้�อม"ลแบบต�ว่อ�กษร)
ในภาษา SQL ม�ต�ว่ป็ฏิ�บ�ต�การเช้�งตรรกะ Logical Operator ด�งน�.
ต�ว่อย่ าง Logical Operator
SELECT pro_id, pro_name,sup_id
FROM productWHERE sup_id NOT
IN (1,2);
Marisa Kuntasup
Marisa Kuntasup
SELECT pro_id, pro_name , pro_price
FROM productWHERE pro_price
between 5 and 20
ต�ว่อย่ าง Logical Operator
ผลที่��ได�
Marisa Kuntasup
SELECT pro_id, pro_name
FROM productWHERE
pro_name like "p*"
ต�ว่อย่ าง Logical Operator
ผลที่��ได�
Marisa Kuntasup
–ฟั0งก(ช้�นในการรว่ม (Aggregate functions)– COUNT, SUM, AVG, MAX, MIN ฯลฯ–ฟั0งก(ช้�นว่�นและเว่ลา (Date and tune functions)
– ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN ฯลฯ
–ฟั0งก(ช้�นคืณ�ตศาสัตร( (Arithmetic functions)– ABS, EXP, ฟั0งก(ช้�นที่างตร�โกณ, LN, LOG, MOD, SQRT ฯลฯ
ฟั9งก)ช้�น มู�ที่�-งหมูด 6 ปร้ะเภที่ คำ�อ
Marisa Kuntasup
–ฟั0งก(ช้�นต�ว่อ�กข้ระ (Character functions)
– CHR, CONCAT, LOWER, UPPER, REPLACE, SUBSTR ฯลฯ
–ฟั0งก(ช้�นการแป็ลง (Converter functions)
– TO_CHAR, –ฟั0งก(ช้�นอ��นๆ (Miscellaneous functions)
ฟั0งก(ช้�น ม�ที่�.งหมด 6 ป็ระเภที่ (cont.)
Marisa Kuntasup
ต�วอย$างฟั9งก)ช้�น
Marisa Kuntasup
ต�วอย$างฟั9งก)ช้�น
Marisa Kuntasup