134
Structured Query Language SQL เรียบเรียงโดย อ.เรวดี พิพัฒน์สูงเนิน

Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

Embed Size (px)

Citation preview

Page 1: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

Structured Query Language

SQLเรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 2: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SQL ภาษา SQL ยอมาจากค าวา Structured Query Language อานออกเสยง

อยางยอวา เอสควแอล , ซเคลว , ซควล

เปนภาษาทใชในการด าเนนการกบขอมลในฐานขอมลเชงสมพนธ (Relational Database)

ภาษา SQL ถกก าหนดมาตรฐานโดย ANSI (American National Standard Institute) และ ISO (International Standard Organization)

มพนฐานทผสมผสานกนระหวาง Relational Algebra และ Relation Calculus

ภาษา SQL จะพบในระบบจดการฐานขอมลเชงสมพนธ(Relational Database Management System: RDBMS) ทไดรบความนยมในปจจบน เชน MS Access , MS SQL Server , Oracle , MySQL , DB2 เปนตน

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 3: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

History of SQL จากเอกสารของ ดร.เอดการ เอฟ. คอดด(Dr. Edgar Frank Codd) แถลง

ตอสาธารณชนในเดอน มถนายน ค.ศ. 1970 ใน นตยสารของเอซเอม (Association for Computing Machinery:ACM) แบบจ าลองของคอดดทวางเอาไว ไดกลายเปนผลงานทยอมรบทวโลกส าหรบระบบการจดการฐานขอมลในปจจบน

ในชวงป ค.ศ. 1970 ณ ศนยพฒนาคอมพวเตอรซานโฮเซของไอบเอม ไดวจยและพฒนาระบบฐานขอมลทเรยกวา ซสเตม อาร ( "System R") ขนตามแบบจ าลองของคอดด และก าหนดภาษาชอวาภาษาสอบถามเชงโครงสรางภาษาองกฤษ หรอ ซเควล (Structured English QUEry Language:SEQUEL) ขนเพอจดการกบขอมล

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 4: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

History of SQL ภาษา SQL พฒนาโดย โดนลด ด. แซมเบอรลน (Donald D.

Chamberlin) และ เรยมอนด เอฟ. บอยซ (Raymond F. Boyce) จาก IBM

ภายหลงถกเปลยนชอมาเปนเอสควแอล(S-Q-L : Structured Query Language) เนองจากชอซเควล (SEQUEL) ซ ากบชอเครองหมายการคาของบรษทผลตเครองบนฮอกเกอร-ซดเดลย (Hawker-Siddeley) ของ สหราชอาณาจกร

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 5: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

RDBMS ทใช SQLซอฟตแวรกรรมสทธ

4th Dimension

Dataphor

Daffodil database

DB2

FileMaker Pro

Informix

InterBase

Matisse

Microsoft Access

Microsoft SQL Server

Microsoft Visual FoxPro

Mimer SQL

Netezza

ซอฟตแวรกรรมสทธ

NonStop SQL

Oracle

Progress 4GL

Sand Analytic Server (ชอเดมวา Nucleus)

SmallSQL

Sybase ASA (ชอเดมวา WatcomSQL)

Sybase

Sybase IQ

Teradata

ThinkSQL

VistaDB

ซอฟตแวรเปด

Cloudscape

Firebird

H2

HSQLDB

Ingres

MaxDB

MonetDB

MySQL

PostgreSQL

SQLite

tdbengine

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 6: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SQL สามารถท าอะไร ? สงทภาษา SQL ท า ไดแกสราง/ลบฐานขอมล

สราง/ลบ/แกไข ตารางส าหรบจดเกบขอมล

สราง/ลบ/แกไข วว(View) ในฐานขอมล

สราง/ลบ/แกไข stored procedure ในฐานขอมล

เพม/ลบ/แกไข รายการขอมลในตารางขอมล

สบคนขอมลจากฐานขอมลตามเงอนไขทตองการ

ก าหนดสทธในการใชงานขอมลในตารางขอมล ,วว และ stored procedure

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 7: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

กลมค าสงของ SQLแบงเปน 3 กลม ไดแก ภาษาการนยามขอมล

(Data Definition Language : DDL) ภาษาปฏบตการของขอมล

(Data Manipulation Language : DML) ภาษาควบคมขอมล

(Data Control Language : DCL)

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 8: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

กลมค าสง DML เปนค าสงทใชในการจดการขอมลในตารางขอมล

ค าสงทอยในกลม DML INSERT INTO : เพมรายการขอมลใหมในตาราง

UPDATE : แกไขรายการขอมลในตาราง

DELETE : ลบรายการขอมลในตาราง

SELECT : เรยกดหรอสบคนขอมลจากตาราง

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 9: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

กลมค าสง DDL เปนค าสงทใชในการก าหนดโครงสรางของฐานขอมล

ค าสงทอยในกลม DDL CREATE DATABASE : สรางฐานขอมลใหม

DROP DATABASE : ลบฐานขอมล

CREATE TABLE : สรางตารางขอมลใหมในฐานขอมล

DROP TABLE : ลบตารางขอมลในฐานขอมล

ALTER TABLE : แกไขโครงสรางตารางขอมล

CREATE INDEX : สรางดชนในตาราง

DROP INDEX : ลบดชนในตาราง

CREATE VIEW : สรางวว

DROP VIEW : ลบวว

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 10: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

กลมค าสง DCL เปนค าสงทใชในการก าหนดสทธการใชงาน

ฐานขอมลใหแกผใช

ค าสงทอยในกลม DCL GRANT : ก าหนดสทธในการใชงานวตถตาง ๆ ใน

ฐานขอมลใหแกผใช

REVOKE : ยกเลกสทธในการใชงานวตถตาง ๆ ในฐานขอมลจากผใช

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 11: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DATA DEFINITION LANGUAGE

DDL

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 12: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE DATABASEค าสง CREATE DATABASE ใชส าหรบสรางฐานขอมลใหม

ในระบบจดการฐานขอมล

รปแบบค าสง

CREATE DATABASE <database_name>;

ตวอยาง

ตองการสรางฐานขอมลชอ University

CREATE DATABASE University;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 13: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DROP DATABASEค าสง DROP DATABASE ใชส าหรบลบฐานขอมลทมอยออก

จากระบบจดการฐานขอมล

รปแบบค าสง

DROP DATABASE <database_name>;

ตวอยาง

ตองการลบฐานขอมลชอ University

DROP DATABASE University;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 14: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLEค าสง CREATE TABLE ใชส าหรบสรางและก าหนด

โครงสรางตารางเพอใชจดเกบขอมลในฐานขอมล

รปแบบค าสงCREATE TABLE table_name( column_name1 data_type ,

column_name2 data_type ,column_name3 data_type ,....

)

*** Data type (ชนดขอมล) ทก าหนดในค าสงขนอยกบระบบจดการฐานขอมลทเลอกใช เชน MS Access , MySQL , Oracle MS SQL Server เปนตน

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 15: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS Access มดงนData type Description Storage

Text ใชส าหรบเกบขอความหรอทงขอความและตวเลข ก าหนดคาไดสงสด 255 ตวอกษร

Memo ใชส าหรบเกบขอความจ านวนมาก สามารถเกบไดมากถง 65,536 ตวอกษรNote: ไมสามารถเรยงล าดบขอมลชนด memo ได

Byte ใชส าหรบเกบตวเลข ตงแต 0 ถง 255 1 byteInteger ใชส าหรบเกบตวเลข ตงแต -32,768 ถง 32,767 2 bytesLong ใชส าหรบเกบตวเลข ตงแต -2,147,483,648 ถง 2,147,483,647 4 bytes

Single ใชส าหรบเกบตวเลขแบบทศนยม 4 bytesDouble ใชส าหรบเกบตวเลขแบบทศนยม 8 bytesCurrency ใชส าหรบเกบขอมลตวเลขทางการเงน จ านวน15 หลก มต าแหนงทศนยม 4 ต าแหนง และม

สญลกษณหนวยการเงน เชน $ , ฿ เปนตนTip: สามารถเลอกสญลกษณทางการเงนแตละประเทศได

8 bytes

AutoNumber ตวเลขทเพมคาใหอตโนมตทละ 1 4 bytes

Date/Time ใชส าหรบขอมลประเภท วนและเวลา 8 bytesYes/No ใชส าหรบขอมลทางตรรกะ เชน Yes/No , True / False หรอ

Note: ไมยอมใหขอมลชนดนเปนคาวาง ตองก าหนดคาเสมอ1 bit

Ole Object ใชส าหรบเกบขอมลประเภท รปภาพ , ไฟลเสยง , วดโอ หรอ วตถชนดไบนาร (BLOB : Binary Large OBjects)

up to 1GB

Hyperlink สามารถลงกไปยงไฟลหรอเวบไซตได Lookup Wizard

สามารถเลอกรายการขอมลไดจาก Drop down list ทก าหนดไวได 4 bytes

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 16: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

Character strings:

Data type Description Storagechar(n) Fixed-length character string. Maximum 8,000 characters nvarchar(n) Variable-length character string. Maximum 8,000 charactersvarchar(max) Variable-length character string. Maximum 1,073,741,824 characters

text Variable-length character string. Maximum 2GB of text data

Unicode strings:Data type Description Storagenchar(n) Fixed-length Unicode data. Maximum 4,000 charactersnvarchar(n) Variable-length Unicode data. Maximum 4,000 charactersnvarchar(max) Variable-length Unicode data. Maximum 536,870,912 characters

ntext Variable-length Unicode data. Maximum 2GB of text data

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 17: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

:

Binary types:Data type Description Storagebit Allows 0, 1, or NULLbinary(n) Fixed-length binary data. Maximum 8,000 bytesvarbinary(n) Variable-length binary data. Maximum 8,000 bytesvarbinary(max) Variable-length binary data. Maximum 2GBimage Variable-length binary data. Maximum 2GB

Number types:Data type Description Storagetinyint Allows whole numbers from 0 to 255 1 bytesmallint Allows whole numbers between -32,768 and 32,767 2 bytesint Allows whole numbers between -2,147,483,648 and 2,147,483,647 4 bytesbigint Allows whole numbers between -9,223,372,036,854,775,808 and

9,223,372,036,854,775,807 8 bytes

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 18: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

Number types:Data type Description Storagedecimal(p,s) Fixed precision and scale numbers. Allows numbers from -10^38 +1 to 10^38

–1.The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0

5-17 bytes

numeric(p,s) Fixed precision and scale numbers. Allows numbers from -10^38 +1 to 10^38 –1.The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0

5-17 bytes

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 19: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

Number types:Data type Description Storagesmallmoney Monetary data from -214,748.3648 to 214,748.3647 4 bytesmoney Monetary data from -922,337,203,685,477.5808 to

922,337,203,685,477.58078 bytes

float(n) Floating precision number data from -1.79E + 308 to 1.79E + 308.The n parameter indicates whether the field should hold 4 or 8 bytes. float(24) holds a 4-byte field and float(53) holds an 8-byte field. Default value of n is 53.

4 or 8 bytes

real Floating precision number data from -3.40E + 38 to 3.40E + 38 4 bytes

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 20: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

Date types:Data type Description Storagedatetime From January 1, 1753 to December 31, 9999 with an accuracy of 3.33

milliseconds8 bytes

datetime2 From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds

6-8 bytes

smalldatetime From January 1, 1900 to June 6, 2079 with an accuracy of 1 minute 4 bytes

date Store a date only. From January 1, 0001 to December 31, 9999 3 bytes

time Store a time only to an accuracy of 100 nanoseconds 3-5 bytes

datetimeoffset The same as datetime2 with the addition of a time zone offset 8-10 bytes

timestamp Stores a unique number that gets updated every time a row gets created or modified. The timestamp value is based upon an internal clock and does not correspond to real time. Each table may have only one timestamp variable

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 21: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)ชนดขอมลของ MS SQL Server มดงน

Other data types:Data type Descriptionsql_variant Stores up to 8,000 bytes of data of various data types, except text, ntext, and

timestampuniqueidentifier Stores a globally unique identifier (GUID)xml Stores XML formatted data. Maximum 2GBcursor Stores a reference to a cursor used for database operationstable Stores a result-set for later processing

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 22: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)

ตวอยาง

CREATE TABLE Persons(

P_Id Number,FirstName Text(25),LastName Text(35), Addr Text(100),City Text(40)

);

CREATE TABLE Persons(

P_Id int,FirstName nVarchar(25),LastName nVarchar(35), Addr nVarchar(100),City nVarchar(40)

);

MS Access MS SQL Server

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 23: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE : CONSTRAINTS Constraints ใชเพอจ ากดชนดและลกษณะของขอมลทจะปอนเขาในตาราง

สามารถก าหนด Constraints ในขณะทสรางตารางใหม(ดวยค าสง CREATE TABLE) หรอก าหนดทหลงการสรางตาราง(ดวยค าสง ALTER TABLE)

Constraints ไดแก NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

DEFAULT

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 24: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : NOT NULL NOT NULL ใชก าหนดใหขอมลในคอลมนไมใหปอนคาวาง (Null value)

หากก าหนดใหคอลมนใดเปน NOT NULL หมายความวาจะไมสามารถเพมรายการขอมล(insert) หรอ แกไข(update) ไดหากปอนคาวางในคอลมนนน ๆ

ตวอยาง

CREATE TABLE Persons(

P_Id Int NOT NULL ,FirstName nVarchar(25) NOT NULL ,LastName nVarchar (35), Addr nVarchar (100),City nVarchar (40)

);

คอลมน p_id และ FirstName หามเปนคา

วาง หากมการเพมรายการขอมลใหมหรอแกไขขอมล

ตองปอนขอมลนเสมอ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 25: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : UNIQUE UNIQUE ใชก าหนดใหขอมลในคอลมนมคาเปนเอกลกษณ(มคาไมซ ากน)

คยหลกของตารางขอมลจะถกก าหนดใหเปน UNIQUE โดยอตโนมต

สามารถก าหนด UNIQUE ใหกบคอลมนตาง ๆ ในตารางไดหลายคอลมน

ตวอยาง ก าหนดใหคอลมน P_Id เปน UNIQUE (มคาไมซ า) ก าหนดตอนสรางตาราง

CREATE TABLE Persons(

P_Id Int NOT NULL UNIQUE,FirstName nVarchar(25) NOT NULL ,LastName nVarchar (35), Addr nVarchar (100),City nVarchar (40)

);

คอลมน P_Id หามเปนคาวาง และเปนเอกลกษณ หากมการเพมรายการขอมลใหมหรอแกไขขอมลตองปอนขอมลนและหามปอนคาซ ากนเสมอ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 26: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : PRIMARY KEY PRIMARY KEY คอคอลมนทมคาเปนเอกลกษณ เพอใชในการระบรายการ

ขอมลแตละรายการในตาราง

PRIMARY KEY ตองหามเปนคาวาง (NOT NULL)

PRIMARY KEY ตองมคาเปนเอกลกษณ (UNIQUE)

ทกตารางตองม PRIMARY KEY และมตารางละหนง PRIMARY KEY เทานน

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 27: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : PRIMARY KEY ตวอยาง ก าหนดใหคอลมน P_Id เปน PRIMARY KEY (ก าหนดตอน

สรางตาราง)

CREATE TABLE Persons(

P_Id Int NOT NULL UNIQUE,FirstName nVarchar(25) NOT NULL ,LastName nVarchar (35), Addr nVarchar (100),City nVarchar (40) ,CONSTRAINT PK_Persons PRIMARY KEY(P_Id)

);

*** ถาไมก าหนด CONSTRAINT name ระบบจะก าหนดใหอตโนมต

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 28: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : PRIMARY KEY กรณมแอททรบวตทเปนคยหลกมากกวา 1 แอททรบวต ตวอยาง ก าหนดใหคอลมน P_Id และคอลมน FirstName เปน

PRIMARY KEY (ก าหนดตอนสรางตาราง)CREATE TABLE Persons(

P_Id Int NOT NULL UNIQUE,FirstName nVarchar(25) NOT NULL ,LastName nVarchar (35), Addr nVarchar (100),City nVarchar (40) ,PRIMARY KEY(P_Id , FirstName)

);

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 29: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : FOREIGN KEY FOREIGN KEY คอคอลมนทใชเชอมโยงขอมลระหวางตาราง

FOREIGN KEY จะเชอมโยงไปยง PRIMARY KEY ของอกตาราง

ตาราง Student มคอลมน fac_id เปน Foreign key เชอมโยงไปยง Primary key ของตาราง Faculty

การปอนขอมลในคอลมน fac_id ของ Student ตองสอดคลองกบคาใน fac_id ของ Faculty

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 30: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)Relation name

Attribute name

Description Data type Size Allow null

Key References

Faculty Fac_id รหสคณะวชา nChar 3 No PK

Fac_name ชอคณะวชา nVarchar 30 Yes

Fac_phone เบอรโทรศพท nVarchar 10 Yes

CREATE TABLE Faculty( Fac_id nChar(3) NOT NULL UNIQUE ,

Fac_name nVarchar(30) ,Fac_phone nVarchar(10),PRIMARY KEY(Fac_id)

);

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 31: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)Relation name

Attribute name

Description Data type Size Allow null

Key References

Students Std_id รหสนกศกษา nChar 11 No PK

Std_Fname ชอนกศกษา nVarchar 25 No

Std_Lname นามสกล nVarchar 30 No

Std_Address ทอย nVarchar 50 Yes

Std_major สาขาวชา nVarchar 20 Yes

Std_gpa เกรดเฉลยสะสม float Yes

Fac_id รหสคณะทนกศกษาสงกด

nChar 3 Yes FK Faculty(Fac_id)

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 32: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE TABLE (ตอ)CREATE TABLE Students( Std_id nChar(11) NOT NULL UNIQUE ,

Std_Fname nVarchar(25) NOT NULL ,Std_Lname nVarchar (35) NOT NULL ,Std_address nVarchar (50),Std_major nVarchar (20),Std_gpa float,Fac_id nChar(3),Constraint PK_Student PRIMARY KEY(Std_id) ,Constraint FK_Students_Faculty FOREIGN KEY(Fac_id) REFERENCES

Faculty(Fac_id));

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 33: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : CHECK CHECK ใชก าหนดขอบเขตคาของขอมลทปอนไดในตาราง

ตวอยาง ก าหนดใหคาในคอลมน Std_gpa ของ ตาราง Students หามมคาต ากวา 0

CREATE TABLE Students( Std_id nChar(11) NOT NULL UNIQUE ,

Std_Fname nVarchar(25) NOT NULL ,Std_Lname nVarchar (35) NOT NULL ,Std_address nVarchar (50),Std_major nVarchar (20),Std_gpa float CHECK(Std_gpa > 0) ,Fac_id nChar(3),

CONSTRAINT PK_Students PRIMARY KEY(Std_id) ,CONSTRAINT FK_Students_Faculty FOREIGN KEY(Fac_id) REFERENCES

Faculty(Fac_id));

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 34: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CONSTRAINTS : DEFAULT DEFAULT ใชก าหนดคาเรมตนของขอมลทปอนไดในตาราง

ตวอยาง ก าหนดใหคาในคอลมน Std_major ของ ตาราง Students มคาเรมตน IT (ในกรณทไมปอนขอมลในแอททรบวตนจะก าหนดคาเปน IT อตโนมต)

CREATE TABLE Students( Std_id nChar(11) NOT NULL UNIQUE ,

Std_Fname nVarchar(25) NOT NULL ,Std_Lname nVarchar (35) NOT NULL ,Std_address nVarchar (50),Std_major nVarchar (20) DEFAULT(‘IT’),Std_gpa float CHECK(Std_gpa > 0) ,Fac_id nChar(3),CONSTRAINT PK_Students PRIMARY KEY(Std_id) ,CONSTRAINT FK_Students_Faculty FOREIGN KEY(Fac_id) REFERENCES

Faculty(Fac_id));

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 35: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DROP TABLEค าสง DROP TABLE ใชส าหรบลบตารางขอมลออกจาก

ฐานขอมล

รปแบบค าสง

DROP TABLE <table_name>;

ตวอยาง

ตองการลบตารางขอมลชอ Students

DROP TABLE Students;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 36: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLEค าสง ALTER TABLE ใชส าหรบแกไขโครงสรางของ

ตารางขอมล ซงการแกไขโครงสรางไดแก Add : เพมคอลมน

Modify : แกไขคอลมน

Drop : ลบคอลมน

รปแบบค าสง

ALTER TABLE <table_name>

ADD / MODIFY / DROP <เงอนไขคอลมน>;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 37: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (เพมคอลมน)

เพมคอลมนในตาราง Students ชอ Std_email ชนดขอมล Varchar ขนาด 50 ตวอกษร

ALTER TABLE Students

ADD Std_email Varchar(50);

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 38: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (แกไขคอลมน)

แกไขคอลมนชอ Std_email ในตาราง Students โดย แกไขขนาดเขตขอมลจาก Varchar(50) เปน Vrachar(60)

ALTER TABLE StudentsMODIFY Std_email Varchar(60) ;

ANSI Syntax

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 39: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (แกไขคอลมน) ตอ

แกไขคอลมนชอ Std_email ในตาราง Students โดย แกไขขนาดเขตขอมลจาก Varchar(50) เปน Vrachar(60)

*** MS SQL Server ใช ALTER COLUMN แทน Modify

ALTER TABLE StudentsALTER COLUMN Std_email Varchar(60) ;

MS SQL Server Syntax

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 40: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (ลบคอลมน)

ลบคอลมนชอ Std_email ออกจากตาราง Students

ALTER TABLE StudentsDROP Std_email ;

ANSI Syntax

ALTER TABLE StudentsDROP COLUMN Std_emai ;

MS SQL Server Syntax

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 41: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

การเพม Constraint ใหกบตารางในกรณทตอนสรางตารางขอมลดวยค าสง CREATE TABLE

อาจจะไมไดก าหนด Constraint บางอยางลงไป สามารถมาก าหนด Constraint เพมใหกบตารางได ดวยค าสง ALTER TABLE

หรอในกรณทตองการยกเลก Constraint บางอยางกสามารถแกไขไดดวยค าสง ALTER TABLE เชนกน

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 42: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (เพม Primary key Constraint)

ในกรณทตอนสรางตารางไมไดก าหนดคยหลกใหกบตารางสามารถก าหนดทหลงไดดงน

วธท 1 แกไขดวยค าสง Alter table และ Add Primary key เลย โดยระบบจะสราง Constraint name ใหอตโนมต

ALTER TABLE Students

ADD Primary Key(Std_id) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 43: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

วธท 2 ก าหนด Constraint name เอง

ALTER TABLE Students

ADD Constraint PK_Student Primary Key(Std_id) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 44: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (เพม Foreign Key Constraint)

ในกรณทตอนสรางตารางไมไดก าหนดคยนอกใหกบตารางสามารถก าหนดทหลงไดดงน

ALTER TABLE Students

ADD Constraint FK_Student_Faculty Foreign Key(Fac_id) References Faculty(Fac_id) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 45: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ALTER TABLE (ตอ)

ตวอยาง (ลบ Constraint)

ในกรณทตองการลบ Constraint ออกจากตาราง สามารถก าหนดไดดวยค าสง Alter Table ดงน

- ตองการลบ Foreign key ทใชเชอมโยงระหวางตาราง Students และ Faculty ออก โดย Foreign key ก าหนดภายใต Constraint ชอ FK_Student_Faculty ท าไดดงน

ALTER TABLE Students

DROP FK_Student_Faculty ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 46: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE INDEX ค าสง CREATE INDEX ใชส าหรบสรางอนเดกซใหกบ

ตารางขอมล

การก าหนดอนเดกซ คอ การก าหนดหนาทใหคอลมนใด ๆ ในตาราง ชวยในการคนหาขอมลไดรวดเรวและมประสทธภาพขน

ผใชจะมองไมเหนอนเดกซ แตอนเดกซจะชวยใหคนหาหรอเขาถงขอมลไดเรวขน

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 47: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

CREATE INDEX (ตอ)รปแบบค าสง

CREATE INDEX <index_name>

ON <table_name>(<column_name>);

ตวอยาง สรางอนเดกซชอ stdName_index บนตาราง Students โดยใชคอลมน Std_Fname เปนดชน

CREATE INDEX stdName_index

ON Students(Std_Fname) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 48: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DROP INDEXค าสง DROP INDEX ใชส าหรบลบอนเดกซออกจากตารางขอมล

รปแบบค าสง

DROP INDEX <index_name> ;

ตวอยาง ลบอนเดกซชอ stdName_index

DROP INDEX stdName_index ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 49: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DATA MANIPULATION LANGUAGE

DML

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 50: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

INSERT INTOค าสง INSERT INTO ใชส าหรบเพมรายการขอมลใหมเขาในตารางขอมล

รปแบบค าสง

แบบท 1 เพมขอมลโดยไมระบชอแอททรบวต (ตองเพมขอมลทกแอททรบวต โดยตองเรยงล าดบแอททรบวตใหถกล าดบ)

INSERT INTO <table_name>

VALUES(value1 , value2 , value3 ,….) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 51: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

INSERT INTO (ตอ)รปแบบค าสง

แบบท 2 เพมขอมลโดยระบชอแอททรบวต (สามารถเพมขอมลบางแอททรบวตได โดยเพมตามแอททรบวตทระบในค าสง)

INSERT INTO <table_name> (column1,column2 ,column3 ,…)

VALUES(value1 , value2 , value3 ,….) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 52: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

INSERT INTO (ตอ)ตวอยาง เพมขอมลใหมเขาไปในตาราง Students ดงน

แบบท 1 ไมระบชอแอททรบวตINSERT INTO Students

VALUES(‘1234567801’ , ‘Bob’, ‘Norbert’ , ‘USA’ , ‘IT’ , 3 , ‘Sc’);

แบบท 2 ระบชอแอททรบวตINSERT INTO Students(std_id ,std_fname, std_lname , std_gpa)

VALUES(‘1234567821’ , ‘Wiliam’, ‘Pilgrim’ , 2.5);

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3Sc

1234567821 Wiliam Pilgrim 2.5

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 53: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

INSERT INTO (ตอ)ค าสง INSERT INTO หนงชดสามารถเพมขอมลไดทละ 1

รายการ

ส าหรบการเพมขอมลชนดตวอกษรจะอยภายใตเครองหมาย “” (double quote) หรอ ‘’ (single quote)

สวนขอมลทเปนตวเลข ไมตองใส “” หรอ ‘’

การเพมขอมลโดยไมระบชอแอททรบวต จะตองก าหนดล าดบของขอมลใหตรงกบโครงสรางของตาราง เพราะอาจมผลตอชนดขอมลของแตละแอททรบวต

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 54: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATEค าสง UPDATE ใชส าหรบแกไขรายการขอมลทมอยแลวในตารางขอมลใหมคาเปนคาใหม

รปแบบค าสงUPDATE <table_name>

SET column_name1 = value , column_name2 = value, …

[WHERE เงอนไขในกรณตองการแกไขบางแถว]

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 55: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATE (ตอ)ตวอยาง แกไขรายการขอมลตอไปน

UPDATE Students

SET std_fname = ‘Tomas’ , std_major = ‘FIN’ , fac_id=‘Msc’

WHERE std_id = ‘1234567821’

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3Sc

1234567821 Wiliam Pilgrim AUS CS 2.5Sc

1234567822 Luke Brazzi USA PHY 3.5Sc

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3Sc

1234567821 Tomas Pilgrim AUS FIN 2.5MSc

1234567822 Luke Brazzi USA PHY 3.5Sc

ผลลพธ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 56: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATE (ตอ)ตวอยาง แกไขขอมลหมเรยนทเปดสอนในป 2010 เทอม WINTER ใหเปน

เทอม SPRINGUPDATE Offering

SET OffTerm = ‘SPRING’

WHERE OffYear = 2010 AND OffTerm = ‘WINTER’ ;offering

offerno courseno offterm offyear offroom offtime ins_id offday

1111 IS010 SUMMER 2010 532 10:30:00 AM 87654 MW

1234 IS010 FALL 2009 532 10:30:00 AM 65432 MW

2222 IS320 SUMMER 2009 931 1:00:00 PM 87654 TTH

3333 IS330 SPRING 2010 522 8:30:00 AM 65432 MW

4321 IS330 FALL 2009 522 10:00:00 AM 65432 TTH

4444 IS330 WINTER 2010 532 10:00:00 AM 54321 TTH

5555 EC220 WINTER 2009 523 8:30:00 AM 98765 MW

5678 FIN01 WINTER 2010 532 10:30:00 AM 76543 MW

5679 FIN01 SPRING 2010 931 3:30:00 PM 45678 TTH

6666 IS233 WINTER 2010 1601 10:30:00 AM 65432 TTH

7777 ED330 SPRING 2010 539 1:00:00 PM 98765 MW

8888 IS010 SUMMER 2010 333 1:00:00 PM 45678 MW

9876 IS320 SPRING 2010 324 1:00:00 PM 45678 TTH

offering

offerno courseno offterm offyear offroom offtime ins_id offday

1111 IS010 SUMMER 2010 532 10:30:00 AM 87654 MW

1234 IS010 FALL 2009 532 10:30:00 AM 65432 MW

2222 IS320 SUMMER 2009 931 1:00:00 PM 87654 TTH

3333 IS330 SPRING 2010 522 8:30:00 AM 65432 MW

4321 IS330 FALL 2009 522 10:00:00 AM 65432 TTH

4444 IS330 SPRING 2010 532 10:00:00 AM 54321 TTH

5555 EC220 WINTER 2009 523 8:30:00 AM 98765 MW

5678 FIN01 SPRING 2010 532 10:30:00 AM 76543 MW

5679 FIN01 SPRING 2010 931 3:30:00 PM 45678 TTH

6666 IS233 SPRING 2010 1601 10:30:00 AM 65432 TTH

7777 ED330 SPRING 2010 539 1:00:00 PM 98765 MW

8888 IS010 SUMMER 2010 333 1:00:00 PM 45678 MW

9876 IS320 SPRING 2010 324 1:00:00 PM 45678 TTH

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 57: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATE (ตอ)ตวอยาง ปรบเงนเดอนใหอาจารยทมต าแหนงศาสตราจารย(PROF) เพมอก

คนละ 10%UPDATE Instructor

SET ins_salary = ins_salary + (ins_salary*0.10)

WHERE ins_rank = ‘PROF’;

instructor

ins_fname ins_lname fac_id ins_rank ins_salary ins_hiredate

Julia Mills Ed ASSC 37000 1/4/1997

Victoria Emmanuel Msc PROF 40000 10/3/1996

Leonard Fibon Sc ASSC 35000 1/4/1993

Nicky Macon En PROF 45000 1/4/1995

Cristopher Colan Sc ASST 30000 1/4/1994

Leonard Vince Msc ASST 25000 1/4/1995

instructor

ins_fname ins_lname fac_id ins_rank ins_salary ins_hiredate

Julia Mills Ed ASSC 37000 1/4/1997

Victoria Emmanuel Msc PROF 44000 10/3/1996

Leonard Fibon Sc ASSC 35000 1/4/1993

Nicky Macon En PROF 49500 1/4/1995

Cristopher Colan Sc ASST 30000 1/4/1994

Leonard Vince Msc ASST 25000 1/4/1995

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 58: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATE (ตอ)ขอควรระวง ส าหรบการใชค าสง UPDATE

หากตองการแกไขขอมลบางรายการในตารางขอมลตองระบเงอนไขของรายการทตองการแกไขในประโยค WHERE

เพราะหากไมระบเงอนไขในประโยค WHERE จะหมายถงแกไขขอมลทกรายการตามทระบในประโยค SET

เชน UPDATE Students

SET std_address = ‘USA’ , std_major = ‘IT’ ;

*** จะท าใหทกรายการในแอททรบวต std_address มคาเปน USA และ std_major มคาเปน IT

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 59: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

UPDATE (ตอ)ขอควรระวงUPDATE Students

SET std_address = ‘USA’ , std_major = ‘IT’ ;

student

std_id std_fname std_lnamestd_address

std_major

std_gpa

fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567821 Wiliam Pilgrim AUS CS 2.5 Sc

1234567822 Luke Brazzi USA PHY 3.5 Sc

1234567840 Homer Wells AUS CS 2.5 Sc

2345678910 Candy Kendall NZ FIN 2.75 Msc

2345678920 Roberto Morales AUS FIN 3.25 Msc

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

4567890133 Cristopher Colan USA MUS 2.75 En

5678901235 Wally Kendall NZ GSc 3.5 Ed

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

student

std_id std_fname std_lnamestd_address

std_major

std_gpa

fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567821 Wiliam Pilgrim USA IT 2.5 Sc

1234567822 Luke Brazzi USA IT 3.5 Sc

1234567840 Homer Wells USA IT 2.5 Sc

2345678910 Candy Kendall USA IT 2.75 Msc

2345678920 Roberto Morales USA IT 3.25 Msc

2345789015 Tess Dodge USA IT 3.75 Msc

4567890122 Joe Estrada USA IT 3.25 En

4567890133 Cristopher Colan USA IT 2.75 En

5678901235 Wally Kendall USA IT 3.5 Ed

5678901240 Mariah Dodge USA IT 2.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 60: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DELETE FROMค าสง DELETE FROM ใชส าหรบลบรายการขอมลออกจาก

ตารางขอมล

รปแบบค าสงDELETE FROM <table_name>

[WHERE เงอนไขในกรณตองการลบบางแถว]

ขอควรระวง

- หากไมระบเงอนไขในการเลอกแถวขอมลทจะลบในประโยค WHERE จะหมายถง ลบแถวขอมลทกรายการ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 61: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

DELETE FROM (ตอ)ตวอยาง ลบขอมลการลงทะเบยนในหมเรยนรหส 1234DELETE FROM Enrollment

WHERE offerNo = 1234 ;

ตวอยาง ลบขอมลหมเรยนทเปดสอนในป 2010 เทอม SPRING

DELETE FROM Offering

WHERE offYear = 2010 AND offTerm = ‘SPRING’ ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 62: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY Query หมายถง การสบคนขอมลในตารางขอมล ตามเงอนไขท

ก าหนด ดวยค าสง SELECT

รปแบบค าสง

SELECT <ชอคอลมนทตองการใหแสดง, … , … หรอ * เพอแสดงทกคอลมน >

FROM <ชอตารางทตองการสบคนขอมล, … , …>

[WHERE เงอนไขในการแสดงรายการขอมล]

[GROUP BY ชอคอลมนทใชในการจดกลมขอมล , … , …]

[HAVING เงอนไขในการจดกลมขอมลเพอแสดงผล]

[ORDER BY ชอคอลมนทใชในการเรยงล าดบขอมล (ASC || DESC)]

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 63: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (สบคนขอมลทกแถว-ทกคอลมน) ตวอยาง 1 จงแสดงขอมลนกศกษาจากตาราง Students ทก

รายการSELECT *

FROM Students ;

--จะไดผลลพธคอขอมลในตาราง Students ทกแถว ทกคอลมน--std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567821 Wiliam Pilgrim AUS CS 2.5 Sc

1234567822 Luke Brazzi USA PHY 3.5 Sc

1234567840 Homer Wells AUS CS 2.5 Sc

2345678910 Candy Kendall NZ FIN 2.75 Msc

2345678920 Roberto Morales AUS FIN 3.25 Msc

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

4567890133 Cristopher Colan USA MUS 2.75 En

5678901235 Wally Kendall NZ GSc 3.5 Ed

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

เครองหมาย * หมายถง แสดงทกคอลมน

หลงประโยค FROM ไมม WHERE หมายถงแสดงทกแถว

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 64: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (แสดงขอมลทกแถว-บางคอลมน) ตวอยาง 2 จงแสดงขอมลรหสนกศกษา , ชอ , นามสกล และ

สาขาวชา ของทกคนSELECT std_id , std_fname , std_lname , std_major

FROM Students ;

ผลลพธstd_id std_fname std_lname std_major

1234567801 Bob Norbert IT

1234567821 Wiliam Pilgrim CS

1234567822 Luke Brazzi PHY

1234567840 Homer Wells CS

2345678910 Candy Kendall FIN

2345678920 Roberto Morales FIN

2345789015 Tess Dodge ECON

4567890122 Joe Estrada Art

4567890133 Cristopher Colan MUS

5678901235 Wally Kendall GSc

5678901240 Mariah Dodge Gsc

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 65: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (แสดงขอมลบางแถว-ทกคอลมน) ตวอยาง 3 จงแสดงขอมลนกศกษา ทสงกดคณะรหส Sc

SELECT *

FROM Students

WHERE Fac_id = ‘Sc’ ;

ผลลพธstd_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3Sc

1234567821 Wiliam Pilgrim AUS CS 2.5Sc

1234567822 Luke Brazzi USA PHY 3.5Sc

1234567840 Homer Wells AUS CS 2.5Sc

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 66: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (แสดงขอมลบางแถว-บางคอลมน) ตวอยาง 4 จงแสดงขอมลรหสนกศกษา , ชอ , นามสกล และเกรด

เฉลย เฉพาะนกศกษาทมเกรดเฉลยมากกวาหรอเทากบ 3.0SELECT std_id , std_fname , std_lname

FROM Students

WHERE std_gpa >= 3.0 ;

ผลลพธstd_id std_fname std_lname std_gpa

1234567801 Bob Norbert 3

1234567822 Luke Brazzi 3.5

2345678920 Roberto Morales 3.25

2345789015 Tess Dodge 3.75

4567890122 Joe Estrada 3.25

5678901235 Wally Kendall 3.5

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 67: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (SELECT DISTINCT) ค าสง SELECT DISTINCT ใชส าหรบขจดรายการขอมลทซ ากน

โดยจะแสดงแถวขอมลทซ ากนเพยงรายการเดยว

ตวอยาง 5 จงแสดงวามขอมลต าแหนงวชาใดบางทอาจารยไดรบ

SELECT ins_rankFROM Instructor;

ins_rank

ASSC

PROF

ASSC

PROF

ASST

ASST

SELECT DISTINCT ins_rankFROM Instructor;

ins_rank

ASSC

PROF

ASST

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 68: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ประโยค WHERE) ประโยค WHERE ใชในการกรองแถวขอมลในการแสดงผลทสอดคลองกบ

เงอนไขทก าหนด

รปแบบSELECT <column_name ,… | *>

FROM <table_name ,..>

WHERE column_name operator value

โดย Column_name คอ แอททรบวตทใชเปนเงอนไข

Operator คอ ตวด าเนนการตาง ๆ เชน = , <> , > , < , >= , <= , LIKE , BETWEEN , IN

Value คอ คาทน ามาใชเปรยบเทยบ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 69: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ประโยค WHERE) ตอ ตวด าเนนการเปรยบเทยบ ไดแก= , <> (บางทใช != ) , > , >= , < , <= ,

ตวด าเนนการทางตรรกะ ไดแกAND , OR , NOT

ล าดบการประมวลผลจากกอน ไป หลง ไดแก NOT --> AND --> OR

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 70: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator AND) ตวด าเนนการ AND ทใชเชอมเงอนไข ตองใหผลลพธทเปนจรงทกเงอนไข

จงจะแสดงรายการขอมลนน

ตวอยาง 5 จงแสดงขอมลนกศกษาทอยประเทศแคนาดา(CAN) และ ไดเกรดเฉลยมากกวา 3.00

SELECT *

FROM Students

WHERE std_address = ‘CAN’ AND std_gpa > 3.0 ;std_id std_fname std_lname std_address std_major std_gpa fac_id

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 71: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator AND) ตวอยาง 6 จงแสดงขอมลรหสนกศกษา ชอ นามสกล และเกรดเฉลย ของ

นกศกษาทไดเกรดตงแต 3.0 ถง 3.5

SELECT std_id , std_fname , std_lname , std_gpa

FROM Students

WHERE std_gpa >= 3.0 AND std_gpa <= 3.5 ;

** ตวด าเนนการ AND ทใชเชอมเงอนไข ตองใหผลลพธทเปนจรงทกเงอนไขจงจะแสดงรายการขอมลนน**

std_id std_fname std_lname std_gpa

1234567801 Bob Norbert 3.0

1234567822 Luke Brazzi 3.5

2345678920 Roberto Morales 3.25

2345789015 Tess Dodge 3.75

4567890122 Joe Estrada 3.25

5678901235 Wally Kendall 3.5

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 72: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator OR) ตวด าเนนการ OR ทใชเชอมเงอนไข จะแสดงรายการขอมลทสอดคลองเมอ

เงอนไขใดเงอนไขหนงเปนจรง หรอทกเงอนไขเปนจรง ถาเงอนไขเปนเทจทกกรณจะไมแสดงขอมล

ตวอยาง 7 จงแสดงขอมลนกศกษา ทสงกดคณะรหส Sc หรอ นกศกษาทอยประเทศ USA

SELECT *

FROM Students

WHERE fac_id = ‘Sc’ OR std_address = ‘USA’ ;std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567821 Wiliam Pilgrim AUS CS 2.5 Sc

1234567822 Luke Brazzi USA PHY 3.5 Sc

1234567840 Homer Wells AUS CS 2.5 Sc

4567890133 Cristopher Colan USA MUS 2.75 En

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 73: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator OR) ตวอยาง 8 จงแสดงขอมลนกศกษา ทสงกดคณะรหส Sc หรอ EdSELECT *

FROM Students

WHERE fac_id = ‘Sc’ OR fac_id = ‘Ed’ ;

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567821 Wiliam Pilgrim AUS CS 2.5 Sc

1234567822 Luke Brazzi USA PHY 3.5 Sc

1234567840 Homer Wells AUS CS 2.5 Sc

5678901235 Wally Kendall NZ GSc 3.5 Ed

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 74: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator NOT) ตวด าเนนการ NOT ใชกลบคาใหเปนคาตรงขาม เชน จรงกลบคาเปน เทจ

หรอ เทจกลบคาเปนจรง

ตวอยาง 9 จงแสดงขอมลนกศกษา ทไมสงกดคณะรหส ScSELECT *

FROM Students

WHERE NOT(fac_id = ‘Sc’) ;

std_id std_fname std_lname std_address std_major std_gpa fac_id

2345678910 Candy Kendall NZ FIN 2.75 Msc

2345678920 Roberto Morales AUS FIN 3.25 Msc

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

4567890133 Cristopher Colan USA MUS 2.75 En

5678901235 Wally Kendall NZ GSc 3.5 Ed

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 75: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator NOT) ตวด าเนนการ NOT ใชกลบคาใหเปนคาตรงขาม เชน จรงกลบคาเปน เทจ

หรอ เทจกลบคาเปนจรง

ตวอยาง 9 จงแสดงขอมลนกศกษา ทไมสงกดคณะรหส ScSELECT *

FROM Students

WHERE NOT(fac_id = ‘Sc’) ;

std_id std_fname std_lname std_address std_major std_gpa fac_id

2345678910 Candy Kendall NZ FIN 2.75 Msc

2345678920 Roberto Morales AUS FIN 3.25 Msc

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

4567890133 Cristopher Colan USA MUS 2.75 En

5678901235 Wally Kendall NZ GSc 3.5 Ed

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 76: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator BETWEEN …AND…) ตวด าเนนการ BETWEEN … AND … ใชส าหรบกรองขอมลทชวงขอมล

ระหวางคาสองคา เชน ราคาตงแต 100 จนถง 500 , วนทสงซอตงแต 01/01/2010 ถง 30/06/2010

รปแบบค าสงSELECT <column_name ,… | *>

FROM <table_name ,..>

WHERE column_name BETWEEN ชวงขอมลเรมตน AND ชวงขอมลสดทาย ;

*** ตวด าเนนการ BETWEEN … AND … ใชเปรยบเทยบขอมลทเปน ตวเลข , ขอความ และ วน/เวลา ***

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 77: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator BETWEEN …AND…) ตวอยาง 10 จงแสดงขอมลนกศกษา ทไดเกรดตงแต 3.0 ถง 3.5SELECT *

FROM Students

WHERE std_gpa BETWEEN 3.0 AND 3.5;std_id std_fname std_lname std_gpa

1234567801 Bob Norbert 3.0

1234567822 Luke Brazzi 3.5

2345678920 Roberto Morales 3.25

2345789015 Tess Dodge 3.75

4567890122 Joe Estrada 3.25

5678901235 Wally Kendall 3.5

*** ขอสงเกต ค าสง BETWEEN … AND … เหมอนกบ การใชตวด าเนนการ AND ทเปรยบเทยบคาในคอลมนเดยวกน แบบชวง เชน WHERE std_gpa >= 3.0 AND std_gpa <= 3.5

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 78: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator IN ) ตวด าเนนการ IN ใชส าหรบกรองขอมลแบบหลายคาตามรายการทระบใน

ตวด าเนนการ IN

รปแบบค าสงSELECT <column_name ,… | *>

FROM <table_name ,..>

WHERE column_name IN (value1 , value2) ;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 79: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator IN) ตวอยาง 11 จงแสดงขอมลนกศกษา ทอยในประเทศ อเมรกา(USA) หรอ

แคนาดา (CAN)SELECT *

FROM Students

WHERE std_address IN (‘USA’ , ‘CAN’) ;

*** ขอสงเกต ค าสง IN เหมอนกบ การใชตวด าเนนการ OR ทเปรยบเทยบคาในคอลมนเดยวกน เชน WHERE std_address = ‘USA’ OR std_address = ‘CAN’

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3 Sc

1234567822 Luke Brazzi USA PHY 3.5 Sc

2345789015 Tess Dodge CAN ECON 3.75 Msc

4567890122 Joe Estrada CAN Art 3.25 En

4567890133 Cristopher Colan USA MUS 2.75 En

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 80: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator LIKE ) ตวด าเนนการ LIKE ใชส าหรบกรองขอมลทมขอความตามรปแบบทก าหนด

รปแบบค าสงSELECT <column_name ,… | *>

FROM <table_name ,..>

WHERE column_name LIKE รปแบบทคนหา ;

โดย รปแบบทคนหาจะมสญลกษณทเกยวของ ดงนWildcard Description% แทนตวอกษรใด ๆ ตงแต ศนย ตวอกษรขนไป_ แทนตวอกษรใด ๆ หนงตวอกษร[charlist] แทนตวอกษรใดทอยในรายการทก าหนด[^charlist]or[!charlist]

แทนตวอกษรใด ๆ ทไมอยในรายการทก าหนด

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 81: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator LIKE ) ตวอยาง12 จงแสดงขอมลนกศกษาทมชอขนตนดวย ตวอกษร C

SELECT *

FROM Students

WHERE std_fname LIKE ‘C%’;std_id std_fname std_lname std_address std_major std_gpa fac_id

2345678910 Candy Kendall NZ FIN 2.75 Msc

4567890133 Cristopher Colan USA MUS 2.75 En

•ตวอยาง13 จงแสดงขอมลนกศกษาทมชอยาว 5 ตวอกษรSELECT *FROM StudentsWHERE std_fname LIKE ‘_ _ _ _ _’;

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567840 Homer Wells AUS CS 2.5 Sc

2345678910 Candy Kendall NZ FIN 2.75 Msc

5678901235 Wally Kendall NZ GSc 3.5 Ed

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 82: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator LIKE ) ตวอยาง14 จงแสดงขอมลนกศกษาทภายในชอมอกษร er อยภายในชอ

SELECT *

FROM Students

WHERE std_fname LIKE ‘%er%’;

•ตวอยาง15 จงแสดงขอมลชอ , นามสกลของนกศกษาทมชอยาว 5 ตวอกษร โดยขนตนดวยอกษรใด ๆ กไดแตลงทายชอดวยอกษร y หรอนกศกษาทมชอลงทายดวย er

SELECT std_fname , std_lnameFROM StudentsWHERE std_fname LIKE ‘_ _ _ _ y’ OR std_fname LIKE ‘%er’;

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567840 Homer Wells AUS CS 2.5 Sc

2345678920 Roberto Morales AUS FIN 3.25 Msc

4567890133 Cristopher Colan USA MUS 2.75 En

std_fname std_lname

Homer Wells

Candy Kendall

Cristopher Colan

Wally Kendall

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 83: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator LIKE ) ตวอยาง16 จงแสดงขอมลชอ , นามสกลของนกศกษาทภายในนามสกลม

รปแบบ M_r_les

SELECT *

FROM Students

WHERE std_lname LIKE ‘M_r_les’;

•ตวอยาง17 จงแสดงขอมลชอ , นามสกลของนกศกษาทมชอขนตนดวยตวอกษรB หรอ C หรอ H

SELECT std_fname , std_lnameFROM StudentsWHERE std_fname LIKE ‘[BCH]%’ ;

std_fname std_lname

Roberto Morales

std_fname std_lname

Bob Norbert

Homer Wells

Candy Kendall

Cristopher Colan

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 84: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Operator TOP ) ตวด าเนนการ TOP ใชในการก าหนดจ านวนรายการทตองการแสดง

ตวอยาง18 จงแสดงขอมลนกศกษา 3 รายการแรก

SELECT TOP 3 *

FROM Students ;

std_id std_fname std_lname std_address std_major std_gpa fac_id

1234567801 Bob Norbert USA IT 3Sc

1234567821 Wiliam Pilgrim AUS CS 2.5Sc

1234567822 Luke Brazzi USA PHY 3.5Sc

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 85: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Alias) ในการแสดงขอมลทไดจากสบคนสามารถก าหนดชอนามแฝงใหกบคอลมน

หรอ ตาราง ดวยค าสง AS

รปแบบ ก าหนดนามแฝงใหกบแอททรบวต

SELECT <column_name|function> AS Alias

FROM table_name AS Alias ;

ตวอยาง19 ก าหนดนามแฝงใหกบแอททรบวต ชอ และ นามสกล

SELECT std_fname AS ชอ , std_lname AS นามสกล

FROM Students

WHERE std_address = ‘USA’ ;ชอ นามสกล

Bob Norbert

Luke Brazzi

Cristopher Colan

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 86: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (Alias) ตวอยาง20 ก าหนดนามแฝงใหกบตาราง Students และ Enrollment ใน

การแสดงชอนามสกลของนกศกษาทลงทะเบยนเรยนในหมเรยนรหส 1234

SELECT std_fname AS ชอ , std_lname AS นามสกล

FROM Students AS Std INNER JOIN Enrollment AS En

ON Std.std_id = En.std_id

WHERE offerNo= 1234;ชอ นามสกล

Bob Norbert

Wiliam Pilgrim

Luke Brazzi

Homer Wells

Candy Kendall

Roberto Morales

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 87: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ORDER BY) ค าสง ORDER BY ใชส าหรบจดเรยงผลลพธจากการสบคนขอมล

รปแบบ

SELECT <column_name|function>

FROM table_name

[WHERE] condition

ORDER BY column_name [ASC | DESC] ;

โดย

ASC(Ascending) เปนการจดเรยงขอมลจากนอยไปหามาก

DESC (Descending) เปนการจดเรยงขอมลจากมากไปหานอย

*** หากมค าสง ORDER BY แตไมก าหนดชนดการจดเรยงหลง column name จะถอวาเปนการเรยงแบบ ASC

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 88: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ORDER BY) ตวอยาง21 จงแสดงขอมลนกศกษาจดเรยงขอมลจากเกรดเฉลยจากมากไปหา

นอย

SELECT *

FROM Students

ORDER BY std_gpa DESC;std_id std_fname std_lname std_address std_major std_gpa fac_id

2345789015 Tess Dodge CAN ECON 3.75 Msc

5678901235 Wally Kendall NZ GSc 3.5 Ed

1234567822 Luke Brazzi USA PHY 3.5 Sc

4567890122 Joe Estrada CAN Art 3.25 En

2345678920 Roberto Morales AUS FIN 3.25 Msc

1234567801 Bob Norbert USA IT 3 Sc

4567890133 Cristopher Colan USA MUS 2.75 En

2345678910 Candy Kendall NZ FIN 2.75 Msc

5678901240 Mariah Dodge CAN Gsc 2.5 Ed

1234567840 Homer Wells AUS CS 2.5 Sc

1234567821 Wiliam Pilgrim AUS CS 2.5 Sc

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 89: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ORDER BY)

ตวอยาง22 จงแสดงขอมลชอ , นามสกลของนกศกษาจดเรยงขอมลจากชอจาก A - Z

SELECT std_fname , std_lname

FROM Students

ORDER BY std_fname ASC;

std_fname std_lname

Bob Norbert

Candy Kendall

Cristopher Colan

Homer Wells

Joe Estrada

Luke Brazzi

Mariah Dodge

Roberto Morales

Tess Dodge

Wally Kendall

Wiliam Pilgrim

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 90: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (ORDER BY)

ตวอยาง23 จงแสดงขอมลการลงทะเบยนเรยนของนกศกษา จดเรยงตามรหสหมเรยน จากนอยไปหามาก และ เกรดจากมากไปหานอย

SELECT *

FROM Enrollment

ORDER BY OfferNo ASC , EnrGrade DESC;

offerno std_id enrgrade

1234 2345678910 3.8

1234 1234567821 3.5

1234 2345678920 3.4

1234 1234567801 3.3

1234 1234567822 3.2

1234 1234567840 3.1

4321 4567890133 3.5

4321 1234567801 3.5

4321 2345789015 3.4

4321 5678901240 3.2

4321 4567890122 3.1

4321 5678901235 3.1

5555 1234567801 3.2

5555 1234567821 2.7

5678 1234567840 3.4

5678 1234567822 3.3

5678 1234567801 3.2

5678 1234567821 2.8

5678 2345678910 2.6

5679 4567890133 3.8

5679 1234567821 3.7

5679 2345678920 3.3

5679 4567890122 3.1

5679 2345789015 2.9

5679 1234567801 2

6666 2345678910 3.6

6666 1234567821 3.1

7777 2345789015 3.7

7777 5678901235 3.4

7777 4567890122 3.4

9876 4567890122 4

9876 1234567801 3.5

9876 1234567840 3.4

9876 2345678920 3.3

9876 1234567821 3.2

9876 1234567822 3.2

9876 2345678910 2.6

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 91: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชนของภาษา SQLภาษา SQL ตามมาตรฐาน ISO นยามฟงกชนการรวม(Aggregate function)

ไว 5 ฟงกชน ดงน

COUNT : จ านวนขอมลของคอลมนทระบ

MAX : คาขอมลทสงสดของคอลมนทก าหนด

MIN : คาขอมลทต าสดของคอลมนทก าหนด

SUM : คาผลรวมของคอลมนทก าหนด

AVG : คาเฉลยของคอลมนทก าหนด

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 92: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน COUNT ฟงกชน COUNT ใชในการแสดงจ านวนรายการขอมลทสอดคลองกบเงอนไข

รปแบบท 1

SELECT COUNT (Column_name)

FROM table_name ;

**COUNT(Column_name) จะแสดงจ านวนรายการขอมลในคอลมนทระบ ยกเวนขอมลทเปนคาวาง(Null value) จะไมถกนบรวมดวย

รปแบบท 2

SELECT COUNT (*)

FROM table_name ;

**COUNT(*) จะแสดงจ านวนรายการขอมลทงหมดทสอดคลองกบเงอนไข

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 93: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน COUNT ตวอยาง24 จงแสดงจ านวนนกศกษาทงหมด

SELECT COUNT(*) AS All_students

FROM Students ;

ตวอยาง25 จงแสดงจ านวนนกศกษาทสงกดคณะ Sc

SELECT COUNT(*) AS Science_students

FROM Students ;

All_Students

11

Science_Students

4

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 94: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน MAX ฟงกชน MAX ใชในการหาคาสงสดของคอลมนทก าหนด

รปแบบ

SELECT MAX(Column_name)

FROM table_name ;

ตวอยาง26 จงแสดงขอมลคาเงนเดอนทสงสดของอาจารย

SELECT MAX(Ins_salary) AS MAX_of_Salary

FROM Instructor ;MAX_of_Salary

45000

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 95: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน MIN ฟงกชน MIN ใชในการหาคาต าสดของคอลมนทก าหนด

รปแบบ

SELECT MIN(Column_name)

FROM table_name ;

ตวอยาง27 จงแสดงขอมลคาเงนเดอนทนอยทสดของอาจารย

SELECT MIN(Ins_salary) AS MIN_of_Salary

FROM Instructor ;MIN_of_Salary

25000

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 96: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน SUM ฟงกชน SUM ใชในการหาคาผลรวมของคอลมนทเปนตวเลข

รปแบบ

SELECT SUM(Column_name)

FROM table_name ;

ตวอยาง28 จงแสดงขอมลเงนเดอนรวมของอาจารยทกคน

SELECT SUM(Ins_salary) AS Sum_of_Salary

FROM Instructor ;Sum_of_Salary

212000

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 97: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

ฟงกชน AVG ฟงกชน AVG ใชในการหาคาเฉลยของคอลมนทเปนตวเลข

รปแบบ

SELECT AVG (Column_name)

FROM table_name ;

ตวอยาง29 จงแสดงขอมลคาเฉลยเงนเดอนของอาจารยทกคน

SELECT AVG (Ins_salary) AS Average_of_Salary

FROM Instructor ;Average_of_Salary

35333.3333333333

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 98: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (GROUP BY) ค าสง GROUP BY ใชส าหรบจดกลมขอมลตามคอลมนทก าหนด

สวนใหญจะใชค าสง GROUP BY รวมกบการใชฟงกชนการรวม(aggregate function) เชน ตองการแสดงขอมลจากหลาย ๆ คอลมน และมคอลมนทใชฟงกชนการรวมอยภายในค าสง SELECT จะตองจดกลมขอมลตามคอลมนตาง ๆ ทงหมด ยกเวนคอลมนทใชฟงกชนการรวม

รปแบบ

SELECT column_1 , column_2 , aggregate_function(column_3)

FROM table_name

[WHERE] condition

GROUP BY column_1 , column_2;

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 99: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (GROUP BY) ตวอยาง30 จงแสดงรหสคณะและจ านวนนกศกษาทสงกดในแตละคณะ

จดเรยงขอมลตามจ านวนนกศกษาจากมากไปหานอย

SELECT fac_id , COUNT(*) AS Num_of_students

FROM Students

GROUP BY fac_id

ORDER BY COUNT(*) DESC;fac_id Count_Of_students

Sc 4

Msc 3

En 2

Ed 2

ในค าสง GROUP BY จะตองระบคอลมนปกตทกคอลมน ยกเวน คอลมนทมการใชฟงกชนการรวม

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 100: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (GROUP BY) ตวอยาง31 จงแสดงรหสหมเรยน , จ านวนนกศกษาทลงทะเบยนเรยนในแต

ละหมเรยน , เกรดทสงสดในแตละหมเรยน , เกรดทต าสดในแตละหมเรยน จดเรยงขอมลตามจ านวนนกศกษาทลงทะเบยนเรยนจากมากไปหานอย

SELECT offerNo , COUNT(std_id) AS Num_of_students , MAX(Enrgrade) AS Max_grade , MIN(Enrgrade) AS Min_grade

FROM Enrollment

GROUP BY offerNo

ORDER BY COUNT(std_id) DESC ;

offerno Num_of_student Max_grade Min_grade

9876 7 4 2.6

5679 6 3.8 2

4321 6 3.5 3.1

1234 6 3.8 3.1

5678 5 3.4 2.6

7777 3 3.7 3.4

6666 2 3.6 3.1

5555 2 3.2 2.7

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 101: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (GROUP BY) ตวอยาง32 จงแสดงขอมลปการศกษาและเทอม และจ านวนรายวชาทเปด

สอนในแตละปและเทอม

SELECT OffYear , OffTerm , COUNT(*) AS Num_of_Courses

FROM Offering

GROUP BY OffYear , OffTerm ;

offYear offTerm Num_of_Courses

2003 FALL 2

2003 SUMMER 1

2004 SPRING 4

2004 SUMMER 2

2004 WINTER 4

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 102: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (HAVING) ค าสง HAVING ใชรวมกบค าสง GROUP BY เพอจ ากดการแสดงผล

ส าหรบขอมลทจดกลมแลวตามเงอนไขทก าหนดไวในค าสง HAVING

รปแบบ

SELECT column_1 , column_2 , aggregate_function(column_3)

FROM table_name

[WHERE] condition

GROUP BY column_1 , column_2

HAVING aggregate_function(column_3) operator value;

***โดย

operator เชน = , <> , > , >= , < , <= , BETWEEN..AND…, IN เปนตน

value คอ คาทใชเปรยบเทยบ

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 103: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (HAVING) ตวอยาง33 จงแสดงขอมลปการศกษาและเทอม และจ านวนรายวชาทเปด

สอนในแตละปและเทอม (จากตวอยางท 32) แตแสดงเฉพาะเทอมและปทเปดสอนรายวชามากกวา 2 รายวชา

SELECT OffYear , OffTerm , COUNT(*) AS Num_of_Courses

FROM Offering

GROUP BY OffYear , OffTerm

HAVING COUNT(*) > 2 ;offYear offTerm Num_of_Courses

2004 SPRING 4

2004 WINTER 4

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 104: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

QUERY (GROUP BY) ตวอยาง34 จงแสดงรหสหมเรยน , จ านวนนกศกษาทลงทะเบยนเรยนในแต

ละหมเรยนทไดเกรดตงแต 3.0 ขนไป แสดงเฉพาะหมเรยนทมจ านวนผไดเกรดตงแต 3.0 ขนไปจ านวน 5 คนขนไป

SELECT offerNo , COUNT(std_id) AS Num_of_students

FROM Enrollment

WHERE Enrgrade >= 3.0

GROUP BY offerNo

ORDER BY COUNT(std_id) >= 5 ;

offerno Num_of_Students

1234 6

4321 6

9876 6

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 105: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SubQuery หรอ Nested Query Subquery หรอ Nested Query คอการเขยนค าสง SELECT ซอนกน

โดยการน าผลลพธของค าสง SELECT หนงไปใชเปน เงอนไขของอกค าสง SELECT เรยกอกอยางหนงคอ การเขยนค าสง SELECT ซอน SELECT

มกจะใช SubQuery กบการคนหาขอมลทซบซอน

รปแบบ

SELECT column_1 , …., column_n

FROM table_name

WHERE column m operator ( SELECT column_m)

FROM table_name

[WHERE condition] )

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Main query

Subquery

Page 106: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SubQuery หรอ Nested Query ตวอยางการหาคาทเทากบคาทก าหนด

ตวอยาง35 จงแสดงชอ , นามสกลของนกศกษา ทสงกดคณะ Science

SELECT Std_fname , Std_lname

FROM Students

WHERE Fac_id = ( SELECT Fac_id

FROM Faculty

WHERE fac_name = ‘Science’ );

Std_fname Std_lname

Bob Norbert

Wiliam Pilgrim

Luke Brazzi

Homer Wells

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 107: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SubQuery หรอ Nested Query การหาคาทตรงกบคาใดคาหนงตามรายการทก าหนด (ใช IN)

ตวอยาง36 จงแสดงชอ , นามสกลทลงทะเบยนเรยนในหมเรยน รหส 1234

SELECT Std_fname , Std_lname

FROM Students

WHERE Std_id IN ( SELECT Std_id

FROM Enrollment

WHERE OfferNo = 1234 );

Std_fname Std_lname

Bob Norbert

Wiliam Pilgrim

Luke Brazzi

Homer Wells

Candy Kendall

Roberto Morales

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 108: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SubQuery หรอ Nested Query การใช Subquery รวมกบ Aggregate function

ตวอยาง36 จงแสดงชอ , นามสกลของอาจารย และเงนเดอนของอาจารยทมเงนเดอนสงทสด

SELECT Ins_fName , Ins_lname

FROM Instuctor

WHERE Ins_Salary = ( SELECT MAX(Ins_salary FROM Instructor );

Ins_fname Ins_lname Ins_salary

Nicky Macon 45000

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 109: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

SubQuery หรอ Nested Query ขอจ ากดของการใชงาน SubQuery ไมสามารถใชค าสง ORDER BY ใน SubQuery ได เพราะผลลพธใน

SubQuery ถกน าไปใชเปรยบเทยบทงหมดอยแลวจงไมมความจ าเปนทจะตองเรยงล าดบ

ไมสามารถใชคยเวรด INTO ได

คอลมนทมชนดขอมลเปนแบบ ntext, text, และ image ไมสามารถเลอกขนมาได

การใชงาน SUBQUERY รวมกบโอเปอเรเตอรทใชเปรยบเทยบเชน =, >, < จะไมสามารถใชค าสง GROUP BY และ HAVING ไดเวนแตจะมคยเวรด ANY, ALL, SOME

เรยบเรยงโดย อ.เรวด พพฒนสงเนน

Page 110: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง ในบางครงการสบคนขอมลทตองการในฐานขอมล ขอมลทตองการคนหา

อาจจะไมไดอยในตารางเดยวกน เชน ตองการแสดงขอมลชอ-นามสกลของนกศกษาและเกรดทไดรบของนกศกษาทลงทะเบยนเรยนในหมเรยน 1234 ซงขอมลชอและนามสกลของนกศกษามาจากตาราง Students สวนเกรดทไดรบมาจากตาราง Enrollment และเงอนไขรหสหมเรยน 1234 กเปนขอมลทอยในตาราง Enrollment ดงนนจะเหนวาขอมลทตองการใหแสดงดวยกนอยกนคนละตาราง ดงนนจะตองเขยนค าสง SELECT ทดงขอมลจากหลายตารางมาแสดงรวมกน

การดงขอมลจากหลายตารางจะใชตวด าเนนการ JOIN ในการรวมขอมลจากหลายๆ ตารางเชาดวยกน

Page 111: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง จากหวขอ SubQuery จะเหนวาสามารถดงขอมลไดจากหลาย

ตารางเชนเดยวกน แตความแตกตางระหวาง SubQuery และการดงขอมลจากหลายตารางดวยการ Join คอ ถาคอลมนทเปนผลลพธทตองการมาจากหลาย ๆ ตารางควรจะใช JOIN

ในการใชตวด าเนนการ JOIN จะมผลท าใหทค าสง FROM จะมการระบชอตารางแหลงขอมลมากกวา 1 ตาราง

Page 112: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงขอมลหลายๆ ตาราง เขาดวยกนนน แตละตารางควร

จะตองมความสมพนธกน (ม Foreign key เชอมโยงกนกบ Primary key ของอกตาราง)

รปแบบการเชอมโยงตาราง ม 2 รปแบบ ไดแกการเชอมโยงแบบตวด าเนนการ PRODUCT

การเชอโยงโดยใชตวด าเนนการ JOIN

Page 113: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT

รปแบบ

SELECT column_name , … หรอ *

FROM table_name1 , table_name2

WHERE table_name1.foreign_key = table_name2.primary_key ;

***หมายเหต - สมมตให foreign key อยท table_name1 เชอมโยงไปยง primary ของ table_name2

- ในค าสง WHERE ควรจะตองเชอมโยงขอมลโดยใช foreign key เชอมกบprimary key เสมอ ไมเชนนนแลวผลลพธทไดจะเหมอนกบการใชตวด าเนนการ Cartesian Product ***

Page 114: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท37 จงแสดงชอ , นามสกล รหสหมเรยน และเกรดทไดรบเฉพาะคนทได

เกรดตงแต 3.5 ขนไป

SELECT std_fname , std_lname ,

offerNo , enrgrade

FROM Students , Enrollment

WHERE Enrollment.std_id = Students.std_id

AND enrgrade >= 3.5;

FKPK

Page 115: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท37 จงแสดงชอ , นามสกล รหสหมเรยน และเกรดทไดรบเฉพาะคนทได

เกรดตงแต 3.5 ขนไป

ผลลพธstd_fname std_lname offerno enrgrade

Wiliam Pilgrim 1234 3.5

Candy Kendall 1234 3.8

Bob Norbert 4321 3.5

Cristopher Colan 4321 3.5

Wiliam Pilgrim 5679 3.7

Cristopher Colan 5679 3.8

Candy Kendall 6666 3.6

Tess Dodge 7777 3.7

Bob Norbert 9876 3.5

Joe Estrada 9876 4

Page 116: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท38 จงแสดงรหสนกศกษา , ชอ , นามสกล และชอคณะทแตละคนสงกด

SELECT std_id , std_fname , std_lname , fac_name

FROM Students AS S, Faculty AS F

WHERE S.fac_id = F.fac_id ;

FK

PK

std_id std_fname std_lname fac_name

5678901235 Wally Kendall Education

5678901240 Mariah Dodge Education

4567890122 Joe Estrada Engineering

4567890133 Cristopher Colan Engineering

2345678910 Candy Kendall Management Science

2345678920 Roberto Morales Management Science

2345789015 Tess Dodge Management Science

1234567801 Bob Norbert Science

1234567821 Wiliam Pilgrim Science

1234567822 Luke Brazzi Science

1234567840 Homer Wells Science

Page 117: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท39 จงแสดงรหสหมเรยน , รหสวชา , ชอวชา , รหสผสอน , ชอ , นามสกล

ทเปดสอนใน ป 2010 เทอม WINTER

SELECT offerNo , O.courseNo , courseName , O.ins_id , ins_fname , ins_lname

FROM Offering AS O, Course AS C , Instructor AS Ins

WHERE (O.courseNo = C.courseNo ) AND (O.ins_id = Ins.ins_id )

AND (OffYear = 2010) AND (OffTerm = ‘WINTER’) ;

Page 118: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท39 จงแสดงรหสหมเรยน , รหสวชา , ชอวชา , รหสผสอน , ชอ , นามสกล

ทเปดสอนใน ป 2010 เทอม WINTER

SELECT offerNo , O.courseNo , courseName , O.ins_id , ins_fname , ins_lname

FROM Offering AS O, Course AS C , Instructor AS Ins

WHERE (O.courseNo = C.courseNo ) AND (O.ins_id = Ins.ins_id )

AND (OffYear = 2010) AND (OffTerm = ‘WINTER’) ;

offerno courseno coursename ins_id ins_fname ins_lname

4444 IS330 Database System 54321 Victoria Emmanuel

5555 EC220 Micro Economics 98765 Leonard Vince

5678 FIN01 Fundamental of Finance 76543 Nicky Macon

6666 IS233 Business Data Comunication 65432 Leonard Fibon

Page 119: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท40 จงแสดงรหสหมเรยน , รหสวชา , วนทเรยน , หองเรยน , เวลาเรยน ,

ชอและนามสกลผสอน เฉพาะรายวชาท Bob Norbert ลงทะเบยน ในปการศกษา 2010 เทอม WINTER

แหลงขอมล

Page 120: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท40 (ตอ)

SELECT O.offerNo , courseNo , offDay , offRoom , offTime , ins_fname , ins_lname

FROM Offering AS O, Enrollment AS En , Instructor AS Ins , Students AS S

WHERE (S.std_id = En.std_id ) AND (En.offerNo = O.offerNo ) AND (O.ins_id = Ins.ins_id )

AND (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;

offerno courseno offday offroom offtime ins_fname ins_lname

5555 EC220 MW 523 8:30:00 Leonard Vince

5678 FIN01 MW 532 10:30:00 Nicky Macon

Page 121: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท41 จากตวอยางท 40 ตองการเพมชอวชา และจ านวนหนวยกตของวชา

Bob Norbert ลงทะเบยน ในปการศกษา 2010 เทอม WINTER

แหลงขอมล

Page 122: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท41 (ตอ)

SELECT O.offerNo , courseNo , courseName , credit , offDay , offRoom ,

offTime , ins_fname , ins_lname

FROM Offering AS O, Enrollment AS En , Instructor AS Ins ,

Students AS S , Courses AS C

WHERE (S.std_id = En.std_id ) AND (En.offerNo = O.offerNo )

AND (O.ins_id = Ins.ins_id ) AND (O.courseNo = C.courseNo )

AND (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;

Page 123: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงแบบตวด าเนนการ PRODUCT ตวอยางท41 (ตอ)

SELECT O.offerNo , courseNo , courseName , credit , offDay , offRoom ,

offTime , ins_fname , ins_lname

FROM Offering AS O, Enrollment AS En , Instructor AS Ins ,

Students AS S , Courses AS C

WHERE (S.std_id = En.std_id ) AND (En.offerNo = O.offerNo )

AND (O.ins_id = Ins.ins_id ) AND (O.courseNo = C.courseNo )

AND (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;

offerno courseno coursename credit offday offroom offtime ins_fname ins_lname

5555 EC220 Micro Economics 3 MW 523 8:30:00 Leonard Vince

5678 FIN01 Fundamental of Finance 3 MW 532 10:30:00 Nicky Macon

Page 124: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN

รปแบบ

SELECT column_name , … หรอ *

FROM table_name1 operator_JOIN table_name2 ON table_name1.foreign_key =

table_name2.primary_key ;

***หมายเหต - สมมตให foreign key อยท table_name1 เชอมโยงไปยง primary ของ table_name2***

Page 125: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN

ตวด าเนนการ JOIN INNER JOIN สงคาแถวกลบเมอมอยางนอยหนงแถวทตรงกบตารางทงสอง

LEFT JOIN สงคากลบทกแถวของตารางทางดานซายของตวด าเนนการ JOIN แมวาจะไมตรงกบคาในตารางทางดานขวาของตวด าเนนการ

RIGHT JOIN สงคากลบทกแถวของตารางทางดานขวาของตวด าเนนการ JOIN แมวาจะไมตรงกบคาในตารางทางดานซายของตวด าเนนการ

FULL JOIN สงคาแถวกลบเมอมแถวทตรงกบตารางใดตารางหนง

Page 126: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท42 จากตวอยางท 37จงแสดงชอ , นามสกล รหสหมเรยน และเกรดท

ไดรบเฉพาะคนทไดเกรดตงแต 3.5 ขนไป

SELECT std_fname , std_lname ,

offerNo , enrgrade

FROM Students INNER JOIN Enrollment ON

Enrollment.std_id = Students.std_id

WHERE enrgrade >= 3.5;

FKPK

Page 127: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท43 จากตวอยางท 38 จงแสดงรหสนกศกษา , ชอ , นามสกล และชอคณะ

ทแตละคนสงกด

SELECT std_id , std_fname , std_lname , fac_name

FROM Students AS S INNER JOIN Faculty AS F

ON S.fac_id = F.fac_id ;

FK

PK

std_id std_fname std_lname fac_name

5678901235 Wally Kendall Education

5678901240 Mariah Dodge Education

4567890122 Joe Estrada Engineering

4567890133 Cristopher Colan Engineering

2345678910 Candy Kendall Management Science

2345678920 Roberto Morales Management Science

2345789015 Tess Dodge Management Science

1234567801 Bob Norbert Science

1234567821 Wiliam Pilgrim Science

1234567822 Luke Brazzi Science

1234567840 Homer Wells Science

Page 128: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท44 (จากตวอยางท39) จงแสดงรหสหมเรยน , รหสวชา , ชอวชา , รหส

ผสอน , ชอ , นามสกล ทเปดสอนใน ป 2010 เทอม WINTER

SELECT offerNo , O.courseNo , courseName , O.ins_id , ins_fname , ins_lname

FROM Offering AS O INNER JOIN Course AS C ON (O.courseNo = C.courseNo ) INNER JOIN Instructor AS Ins ON (O.ins_id = Ins.ins_id )

WHERE (OffYear = 2010) AND (OffTerm = ‘WINTER’) ;

Page 129: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท44 จงแสดงรหสหมเรยน , รหสวชา , ชอวชา , รหสผสอน , ชอ , นามสกล

ทเปดสอนใน ป 2010 เทอม WINTER

SELECT offerNo , O.courseNo , courseName , O.ins_id , ins_fname , ins_lname

FROM Offering AS O INNER JOIN Course AS C ON (O.courseNo = C.courseNo ) INNER JOIN Instructor AS Ins ON (O.ins_id = Ins.ins_id )

WHERE (OffYear = 2010) AND (OffTerm = ‘WINTER’) ;

offerno courseno coursename ins_id ins_fname ins_lname

4444 IS330 Database System 54321 Victoria Emmanuel

5555 EC220 Micro Economics 98765 Leonard Vince

5678 FIN01 Fundamental of Finance 76543 Nicky Macon

6666 IS233 Business Data Comunication 65432 Leonard Fibon

Page 130: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท45 (จากตวอยางท 40) จงแสดงรหสหมเรยน , รหสวชา , วนทเรยน ,

หองเรยน , เวลาเรยน , ชอและนามสกลผสอน เฉพาะรายวชาท Bob Norbert ลงทะเบยน ในปการศกษา 2010 เทอม WINTER

แหลงขอมล

Page 131: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท45 (ตอ)

SELECT O.offerNo , courseNo , offDay , offRoom , offTime , ins_fname , ins_lname

FROM Offering AS O INNER JOIN Enrollment AS En ON (S.std_id = En.std_id )

INNER JOIN Instructor AS Ins ON (En.offerNo = O.offerNo )

INNER JOIN Students AS S ON (O.ins_id = Ins.ins_id )

WHERE (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;offerno courseno offday offroom offtime ins_fname ins_lname

5555 EC220 MW 523 8:30:00 Leonard Vince

5678 FIN01 MW 532 10:30:00 Nicky Macon

Page 132: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท46 จากตวอยางท 45 ตองการเพมชอวชา และจ านวนหนวยกตของวชา

Bob Norbert ลงทะเบยน ในปการศกษา 2010 เทอม WINTER

แหลงขอมล

Page 133: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท46 (ตอ)

SELECT O.offerNo , courseNo , courseName , credit , offDay , offRoom ,

offTime , ins_fname , ins_lname

FROM Offering AS O INNER JOIN Enrollment AS En ON (S.std_id = En.std_id )

INNER JOIN Instructor AS Ins ON (En.offerNo = O.offerNo )

INNER JOIN Students AS S ON (O.ins_id = Ins.ins_id )

INNER JOIN Courses AS C ON (O.courseNo = C.courseNo )

WHERE (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;

Page 134: Structured Query Language - sci.udru.ac.thsci.udru.ac.th/websci/download/com/rewadee/database/sql_new.pdf · Microsoft Visual FoxPro ... Firebird H2 HSQLDB

การสบคนขอมลจากหลายตาราง การเชอมโยงโดยใชตวด าเนนการ JOIN ตวอยางท46 (ตอ)

SELECT O.offerNo , courseNo , courseName , credit , offDay , offRoom ,

offTime , ins_fname , ins_lname

FROM Offering AS O INNER JOIN Enrollment AS En ON (S.std_id = En.std_id )

INNER JOIN Instructor AS Ins ON (En.offerNo = O.offerNo )

INNER JOIN Students AS S ON (O.ins_id = Ins.ins_id )

INNER JOIN Courses AS C ON (O.courseNo = C.courseNo )

WHERE (std_fname = ‘Bob’) AND (std_lname = ‘Norbert’)

AND (offYear = 2010) AND (offTerm = ‘WINTER’) ;

offerno courseno coursename credit offday offroom offtime ins_fname ins_lname

5555 EC220 Micro Economics 3 MW 523 8:30:00 Leonard Vince

5678 FIN01 Fundamental of Finance 3 MW 532 10:30:00 Nicky Macon