50
SQLคคคคคคค คคคคคคคคคคค Structure Query Language คคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค (Relational Database Management System) คคคค RDBMS คคคค ANSI (American National Standards Institute) คคคคคคคคคคคคคคคคคคคคคคค คคคคคค คคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคค RDBMS คคคค MS-Access, MS-SQL, Marisa Kuntasup

Slide7 sql

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Slide7 sql

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

Page 2: Slide7 sql

คื�าสั��งต างๆ ข้องภาษา SQL แบ งตามล�กษณะการใช้�งานออกเป็�น 4 กล1 ม ด�งน�.

1.DDL (Data Definition Language) เป็�นกล1 มคื�าสั��งที่��ใช้�สั�าหร�บสัร�างฐานข้�อม"ลหร�อใช้�ก�าหนดโคืรงสัร�างคืว่ามสั�มพั�นธ์(ต างๆ ภาย่ในฐานข้�อม"ล เช้ น

- CREATE TABLE- ALTER TABLE- DROP TABLE- CREATE INDEX- DROP INDEX

Marisa Kuntasup

Page 3: Slide7 sql

2. DML (Data Manipulation Language) เป็�นกล1 มคื�าสั��งที่��พั�ฒนาข้+.นตามแนว่คื�ดข้อง Relational Algebra และ Record Relational Calculus โดย่ป็ระกอบด�ว่ย่คื�าสั��งที่��ใช้�สั�าหร�บ เพั��ม ลบ หร�อเป็ล��ย่นแป็ลงข้�อม"ลในฐานข้�อม"ล เช้ น

- SELECT- UPDATE- DELETE- INSERT INTO

Marisa Kuntasup

Page 4: Slide7 sql

3. DCL (Data Control Language) ใช้�ในการคืว่บคื1มข้�อม"ล การเก�ดภาว่ะพัร�อมก�น หร�อการป็8องก�นการเก�ดเหต1การณ(ที่��ผู้"�ใช้�หลาย่คืนเร�ย่กใช้�ข้�อม"ลเด�ย่ว่ก�น ณ เว่ลาใดเว่ลาหน+�ง เช้ น

- LOCK TABLES- UNLOCK TABLES- CONSTRAINT

4 . RIGHTS ใช้�ในการก�าหนดสั�ที่ธ์�9บ�ญช้�ผู้"�ใช้�งาน เพั��อก�าหนดระด�บช้�.นคืว่ามป็ลอดภ�ย่ในการเข้�าถึ+งต�ว่ฐานข้�อม"ล เช้ น

- GRANT- REVOKE

Marisa Kuntasup

Page 5: Slide7 sql

- สร้�างฐานข้�อมู ล CREATE DATABASE

<database name>;- ลบฐานข้�อมู ล

DROP DATABASE <database name>;

Marisa Kuntasup

Page 6: Slide7 sql

การสัร�างตาราง : 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

Page 7: Slide7 sql

แบบที่�� 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

Page 8: Slide7 sql

CREATE TABLE Employee ( Emp integer NOT NULL, EName char(30), EDept integer,PRIMARY KEY (Emp),FOREIGN KEY (EDept) REFFERENCE Department (Dept) ) ;

Marisa Kuntasup

Page 9: Slide7 sql

เปล��ยนแปลงโคำร้งสร้�างตาร้าง

ALTER TABLE <table_name> Database update (<column_name>

<datatype> (<size>));

หมูายเหต โดย Database update เป"นการ้ก�าหนดการ้เปล��ยนแปลงคำ$าต$างๆ ข้องตาร้างที่��มู�อย $เด&มูได�แก$

- ADD เป"นการ้เพิ่&�มูคำอล�มูน) - MODIFY เป"นการ้แก�ไข้คำ$าในคำอล�มูน) - DROP COLUMN เป"นลบคำอล�มูน)

ลบตาร้าง

DROP TABLE <table_name>;

Marisa Kuntasup

Page 10: Slide7 sql

- 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

Page 11: Slide7 sql

–ด�ช้น�•สร้�างด�ช้น�CREATE INDEX <index name> on <table name>(<column

name>[,<column name>]..);•ลบด�ช้น�DROP INDEX <index name>;

Marisa Kuntasup

Page 12: Slide7 sql

การบ�นที่+ก ป็ร�บป็ร1ง ลบและการเร�ย่กข้�อม"ลอย่ างง าย่

- เพิ่&�มูข้�อมู ลที่�ละแถวINSERT INTO <table name>[(<column1, column2,….>)] values (<value1, value2,…>);

- เพิ่&�มูข้�อมู ลโดยการ้ใช้�คำ�าส��งคำ�นหาข้�อมู ลINSERT INTO <table name>[(<column1, column2,….>)] SELECT <statement>;

Marisa Kuntasup

Page 13: Slide7 sql

– ปร้�บปร้ งแถวข้�อมู ลUPDATE <table name> SET<column1>[, column2, ...)]=<expression|subquery> [WHERE <condition>];

– ลบข้�อมู ลที่�-งแถวDELETE FROM <table name> [WHERE <condition>];

การบ�นที่+ก ป็ร�บป็ร1ง ลบและการเร�ย่กข้�อม"ลอย่ างง าย่

Marisa Kuntasup

Page 14: Slide7 sql

ต�ว่อย่ างคื�าสั��ง INSERT

ex. INSERT INTO product

VALUES (10,book,30, 5 );

product

Marisa Kuntasup

Page 15: Slide7 sql

ต�ว่อย่ างคื�าสั��ง UPDATE

1

6

Marisa Kuntasup

Page 16: Slide7 sql

ต�ว่อย่ างคื�าสั��ง DELETE

Marisa Kuntasup

Page 17: Slide7 sql

การเร�ย่กด"ข้�อม"ลโดย่ใช้�คื�าสั��ง SELECT

การเร�ย่กคื�นข้�อม"ลอย่ างง าย่SELECT 1<column ,

2 ,…>column FROM <table

name>[WHERE <condition>];

Marisa Kuntasup

Page 18: Slide7 sql

การเร�ย่กด"ข้�อม"ลโดย่ใช้�ฟั0งก(ช้�นรว่มเป็�นการจ�ดกล1 มข้�อม"ลโดย่ใช้�คื�าสั��ง GROUP BY SELECT <column1, column2, …> FROM <table name> [WHERE <condition>] [GROUP BY <groupingcolumn>] [HAVING <condition>]

การเร�ย่กด"ข้�อม"ลในร"ป็แบบต างๆ

Marisa Kuntasup

Page 19: Slide7 sql

DISTIN CT

การ้เร้�ยกด ข้�อมู ลโดยไมู$แสดงร้ายการ้ที่��ซ้ำ�-า

FROM ก�าหนดตาร้างที่��ต�องการ้ใช้�เร้�ยกด ข้�อมู ล

WHERE เง��อนไข้ที่��ใช้�ในการ้คำ�นหาข้�อมู ลจากตาร้าง

ORDER BY

ก�าหนดการ้เร้�ยงล�าด�บข้�อมู ล โดยที่��

DESC การ้เร้�ยงล�าด�บจากมูากไปน�อย

ASC การ้เร้�ยงล�าด�บจากน�อยไปมูากGROUP BY

การ้จ�ดกล $มูแถวข้�อมู ลตามูคำอล�มูน)ที่��ร้ะบ

HAVING

เง��อนไข้ที่��ใช้�ก�บ ข้�อมู ลที่��ได�จาก GROUP BY เที่$าน�-น

Marisa Kuntasup

Page 20: Slide7 sql

การเร�ย่กด"ข้�อม"ลจากหลาย่ตาราง เป"นการ้ก�าหนดคำวามูส�มูพิ่�นธ์)ร้ะหว$าง

ตาร้างที่�-งหลาย ซ้ำ1�งสามูาร้ถเช้��อมูต$อข้�อมู ลก�นโดยการ้ใช้�คำ�า

ส��ง WHERE SELECT <columns>

FROM < table1> <table2>[WHERE <condition>]

การเร�ย่กด"ข้�อม"ลในร"ป็แบบต างๆ

Marisa Kuntasup

Page 21: Slide7 sql

Marisa Kuntasup

Page 22: Slide7 sql

Marisa Kuntasup

Page 23: Slide7 sql

Marisa Kuntasup

Page 24: Slide7 sql

Marisa Kuntasup

Page 25: Slide7 sql

Marisa Kuntasup

Page 26: Slide7 sql

ต�ว่อย่ างการเร�ย่กด"ข้�อม"ลจากหลาย่ตาราง

Marisa Kuntasup

Page 27: Slide7 sql

Marisa Kuntasup

Page 28: Slide7 sql

Marisa Kuntasup

Page 29: Slide7 sql

เป"นการ้เร้�ยกด ข้�อมู ลด�วยคำ�าส��ง SELECT ซ้ำ�อน คำ�าส��ง SELECT ในล�กษณะข้อง Nested query ช้ ดคำ�าส��งSELECT ข้�างในจะถ กปร้ะมูวลผลก$อน แล�วส$งผลล�พิ่ธ์)ให�ก�บ คำ�าส��ง SELECT ข้�างนอก ร้ ปแบบ มู�ด�งน�-

SELECT …….

FROM……..

WHERE………

(SELECT ……..

FROM………..

WHERE………. )

การเร�ย่กด"แบบซึ่�อนก�น : Subqueries หร�อ Nested query

Marisa Kuntasup

Page 30: Slide7 sql

ต�วอย$าง ต�องการ้หาร้ายช้��อพิ่น�กงานที่��อย $แผนกเด�ยวก�บ Andy

NameDepartmentJohnM MMMMMMMM M MMM

Sales MMMMMSales

MMMM Marketing Anne

Marketing

Employee

Marisa Kuntasup

Page 31: Slide7 sql

Subqueries ข้องคื�าสั��งด�านบน คื�อ ‘Maketing’

Marisa Kuntasup

Page 32: Slide7 sql

การเร�ย่งล�าด�บข้�อม"ล ORDER BY

Marisa Kuntasup

Page 33: Slide7 sql

การใช้� GROUP BY เป"นการ้จ�ดกล $มูแถว ข้�อมู ลตามูคำอล�มูน)ที่��ร้ะบ โดยข้�อมู ลที่��เหมู�อนก�นจะ

ถ กจ�ดให�อย $ในกล $มูเด�ยวก�น

Marisa Kuntasup

Page 34: Slide7 sql

ต�ว่อย่ าง GROUP BY

ผู้ลที่��ได�

Marisa Kuntasup

Page 35: Slide7 sql

Grouping and Aggregates

EmployeeSELECT Gender, AVG(AGE) AS AAGEFROM EmployeeGROUP BY Gender;

ผู้ลที่��ได�

หาคื าเฉล��ย่ข้องอาย่1จ�ดกล1 มตาม ‘Gender’

Marisa Kuntasup

Page 36: Slide7 sql

การใช้� การใช้� HAVINGHAVINGป็ระโย่คื ป็ระโย่คื HAVING HAVING จะใช้�ร ว่มก�บ จะใช้�ร ว่มก�บ

GROUP BY GROUP BY เสัมอ โดย่เสัมอ โดย่HAVING HAVING จะแสัดงข้�อม"ลที่��จะแสัดงข้�อม"ลที่��ผู้ านการจ�ดกล1 มด�ว่ย่ ผู้ านการจ�ดกล1 มด�ว่ย่ GROUP BY GROUP BY เพั�ย่งบางสั ว่นเพั�ย่งบางสั ว่นตามเง��อนไข้ที่��ก�าหนดไว่�ใน ตามเง��อนไข้ที่��ก�าหนดไว่�ใน HAVINGHAVING

Marisa Kuntasup

Page 37: Slide7 sql

– โอเป็อเรเตอร(คืณ�ตศาสัตร( ได�แก plus(+), minus(-), divide(/), multiply(*), modula(%)

– โอเป็อเรเตอร(เป็ร�ย่บเที่�ย่บ จะได�คื ากล�บคื�นมา 3 คื า คื�อ TRUE, FALSE และ UNKNOW (ในกรณ�คื าที่��เป็ร�ย่บเที่�ย่บเป็�น Null)

– โอเป็อเรเตอร(อ�กข้ระ ได�แก LIKE ใช้�ร ว่มก�บ ‘%’ หร�อ ‘_’

– โอเป็อเรเตอร(ตรรกะ ได�แก AND, OR, NOT, IN, BETWEEN…AND

โอเป็อร(เรเตอร( สัามารถึแย่กออกเป็�น 4ป็ระเภที่ ได�แก

Marisa Kuntasup

Page 38: Slide7 sql

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

Page 39: Slide7 sql

ต�ว่ป็ฏิ�บ�ต�การ

การที่�างาน

= เที่$าก�บ<> ไมู$เที่$าก�บ< น�อยกว$า> มูากกว$า

<= น�อยกว$าหร้�อเที่$าก�บ>= มูากกว$าหร้�อเที่$าก�บ

ในภาษา SQL ม�ต�ว่ป็ฏิ�บ�ต�การเป็ร�ย่บเที่�ย่บ (Comparison Operator) อย่" 6 แบบ ด�งน�.

Marisa Kuntasup

Page 40: Slide7 sql

ex. Select pro_id , pro_name

from product where (price >=5 )

and (amount

>=20) ;

ต�ว่อย่ าง Comparison Operator

ผู้ลที่��ได�

Marisa Kuntasup

Page 41: Slide7 sql

ป็ระโย่คืสั ว่นเง��อนไข้• Relation Operator

ปร้ะโยคำเง��อนไข้จะมู�ต�วปฏิ&บ�ต&การ้เช้&งส�มูพิ่�นธ์) (Relation Operator ) ที่��ใช้�ในการ้ก�าหนดเง��อนไข้การ้ที่�างานข้�อมู ล

• Logical Operatorเง��อนไข้ที่��ต�องการ้ใช้�ในการ้ที่�างานก�บข้�อมู ล อาจมู�หลายเง��อนไข้ปร้ะกอบก�น (Compound Condition ) จะต�องใช้�ต�วปฏิ&บ�ต&การ้เช้&งตร้ร้กะ (Logical Operator ) ในการ้ร้วมูเง��อนไข้เข้�าด�วยก�น

Note “การ้ใช้�วงเล7บ เมู��อมู�เง��อนไข้มูากข้1-น อาจต�องใช้�วงเล7บ”เพิ่��อก�าหนดข้อบเข้ตเง��อนไข้ที่��ใช้�คำ�ดเล�อกข้�อมู ล เพิ่��อให�ได�ที่�างานก�บช้ ดข้�อมู ลที่��ต�องการ้และลดคำวามูส�บสนในการ้ตร้วจสอบคำวามูถ กต�อง การ้ที่�างานจะเร้&�มูต�นที่��วงเล7บในส ดก$อน Marisa Kuntasup

Page 42: Slide7 sql

ต�ว่ป็ฏิ�บ�ต�ต�ว่ป็ฏิ�บ�ต�การการ

การที่�างานการที่�างาน

AND และ (ผู้ลล�พัธ์(เง��อนไข้ที่�.งสัองข้�างต�องเป็�นจร�ง)

OR หร�อ (ผู้ลล�พัธ์(เง��อนไข้ข้�างใดข้�างหน+�งต�องเป็�นจร�ง)

IN ข้�อม"ลอย่" ในกล1 มที่��ก�าหนดไว่�BETWE

ENข้�อม"ลอย่" ในช้ ว่งที่��ก�าหนดไว่�

NOT ตรงข้�ามก�บเง��อนไข้ที่��ระบ1ตามหล�งคื�าน�.

LIKE คืล�าย่ (ใช้�ก�บข้�อม"ลแบบต�ว่อ�กษร)

ในภาษา SQL ม�ต�ว่ป็ฏิ�บ�ต�การเช้�งตรรกะ Logical Operator ด�งน�.

Page 43: Slide7 sql

ต�ว่อย่ าง Logical Operator

SELECT pro_id, pro_name,sup_id

FROM productWHERE sup_id NOT

IN (1,2);

Marisa Kuntasup

Page 44: Slide7 sql

Marisa Kuntasup

Page 45: Slide7 sql

SELECT pro_id, pro_name , pro_price

FROM productWHERE pro_price

between 5 and 20

ต�ว่อย่ าง Logical Operator

ผลที่��ได�

Marisa Kuntasup

Page 46: Slide7 sql

SELECT pro_id, pro_name

FROM productWHERE

pro_name like "p*"

ต�ว่อย่ าง Logical Operator

ผลที่��ได�

Marisa Kuntasup

Page 47: Slide7 sql

–ฟั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

Page 48: Slide7 sql

–ฟั0งก(ช้�นต�ว่อ�กข้ระ (Character functions)

– CHR, CONCAT, LOWER, UPPER, REPLACE, SUBSTR ฯลฯ

–ฟั0งก(ช้�นการแป็ลง (Converter functions)

– TO_CHAR, –ฟั0งก(ช้�นอ��นๆ (Miscellaneous functions)

ฟั0งก(ช้�น ม�ที่�.งหมด 6 ป็ระเภที่ (cont.)

Marisa Kuntasup

Page 49: Slide7 sql

ต�วอย$างฟั9งก)ช้�น

Marisa Kuntasup

Page 50: Slide7 sql

ต�วอย$างฟั9งก)ช้�น

Marisa Kuntasup