Chapter 10 : ภาษามาตรฐานสำหรับนิยาม ข้อมูล...

Preview:

DESCRIPTION

Chapter 10 : ภาษามาตรฐานสำหรับนิยาม ข้อมูล และ การใช้ข้อมูล SQL - Structure Query Language. 4121203A ระบบฐานข้อมูล. วัตถุประสงค์. สามารถอธิบายแนวคิดและการใช้ SQL ได้ นำ SQL ไปใช้เพื่อให้เกิดประโยชน์ได้. ภาษา SQL. สามารถสร้างและปฏิบัติการกับฐานข้อมูลเชิงสัมพันธ์โดยเฉพาะ - PowerPoint PPT Presentation

Citation preview

LOGO

1

Chapter 10 : Chapter 10 : ภาษามาตรฐานภาษามาตรฐานสำาหร�บน�ยามข้�อม�ลสำาหร�บน�ยามข้�อม�ล

และการใช้�ข้�อม�ลและการใช้�ข้�อม�ลSQL - Structure Query SQL - Structure Query LaLa

nguagenguage

Chapter 10 : Chapter 10 : ภาษามาตรฐานภาษามาตรฐานสำาหร�บน�ยามข้�อม�ลสำาหร�บน�ยามข้�อม�ล

และการใช้�ข้�อม�ลและการใช้�ข้�อม�ลSQL - Structure Query SQL - Structure Query LaLa

nguagenguage4121203A ระบบฐานข้�อม�ล

วั�ตถุ�ประสำงค์ สามารถอธิ�บายแนวคิ�ดและการใช้�

SQL ได�น�า SQL ไปใช้�เพื่��อให้�เก�ดประโยช้น

ได�

ภาษา SQL

สามารถสร�างและปฏิ�บ#ติ�การก#บฐานข้�อม'ลเช้�งส#มพื่#นธิ โดยเฉพื่าะ

Structured Query Languageส�าห้ร#บใช้�ก#บ Relational Databaseอย')ในร'ปแบบข้องภาษาอ#งกฤษ

ภาษา SQL

•Structured Query Language

ภาษา SQL

ภาษา SQL

ภาษา SQLส�าห้ร#บใช้�ก#บ Relational Database

select name

from student

ประเภทข้องค์าสำ�$งข้องภาษา SQL

1. ภาษาสำาหร�บการน�ยามข้�อม�ล (Data Definition Language : DDL)

2. ภาษาสำาหร�บการจั�ดการข้�อม�ล (Data Manipulation Language : DML

)3. ภาษาค์วับค์�ม (Data Control

Language : DCL)

1. Data Definition Language : DDL

เป'นกล�(มค์าสำ�$งท)$ใช้�กระทาก�บโค์รงสำร�างข้องฐานข้�อม�ล

ต�วัอย(างค์าสำ�$ง เช้(น CREATE ใช้�สำร�างตาราง ALTER ใช้�แก�ไข้/เปล)$ยนแปลงตาราง DROP ใช้�สำาหร�บลบตาราง

ช้น�ดข้องข้�อม�ลท)$ใช้�ในภาษา SQL

จัานวันเลข้ (Number)• เลข้จัานวันจัร�ง (Number) เก,บเลข้ท)$เป'นจัานวันเต,มหร-อเป'นทศน�ยม ร�ปแบบท)$ใช้�ค์-อ NUMBER

• เลข้จัานวันเต,ม (Integer) รองร�บเลข้ได� 11

หล�ก ร�ปแบบท)$ใช้�ค์-อ INTEGER หร-อ INT• เลข้จัานวันเต,มข้นาดเล,ก (Small integer) รองร�บเลข้ได� 6 หล�ก ร�ปแบบท)$ใช้�ค์-อ SMALLINT

• เลข้ทศน�ยม (Decimal) ร�ปแบบท)$ใช้�ค์-อ DECIMAL

ช้น�ดข้องข้�อม�ลท)$ใช้�ในภาษา SQL

ต�วัหน�งสำ-อ• ค์วัามยาวัค์งท)$ (Fixed-length Character) เก,บข้�อม�ลได�สำ�งสำ�ด 255

ต�วัอ�กษร ร�ปแบบท)$ใช้�ค์-อ CHAR• ค์วัามยาวัไม(ค์งท)$ เก,บข้�อม�ลได�สำ�งสำ�ด 255 ต�วัอ�กษร (Variable-length Character) ร�ปแบบท)$ใช้�ค์-อ VARCHAR

ข้�อม�ลในล�กษณะอ-$น ๆ•วั�นท)$และเวัลา (Date/Time) ร�ปแบบท)$ใช้�ค์-อ DATE

ช้น�ดข้องข้�อม�ลใน Microsoft Access

ในโปรแกรม Microsoft Access สำามารถุใช้�ช้น�ดข้�อม�ลตามมาตรฐานข้อง SQL ได�

หร-อสำามารถุใช้�ช้น�ดข้�อม�ลข้อง Microsoft Access ท)$ระบ�ข้12นเองก,ได� อาท�เช้(น Text ต�วัอ�กษร Number ต�วัเลข้ Date/Time วั�นท)$และเวัลา

ช้น�ดข้องข้�อม�ลใน Oracle

ส��งที่.�ก�าห้นดในโคิรงสร�างเที่เบ�ล ได�แก) คิอล#มน ซึ่0�งจะติ�องระบ2ประเภที่ข้�อม'ลที่.�จ#ดเก3บติ#วอ#กษร จ�านวนเลข้ ว#นที่.� ออบเจ3คิติ ห้ร�อไบนาร. (Binary) โดยแบ)งประเภที่ข้องข้�อม'ลได�ด#งติ)อไปน.4

กล�(ม

ประเภทประเภทข้�อม�ล ค์วัามหมายข้องประเภท

ต�วัอ�กษร (Character)

CHAR(n) จ#ดเก3บติ#วอ#กษรห้ร�อติ#วเลข้ที่.�ไม)ได�น�าไปคิ�านวน โดยม.การก�าห้นดคิวามยาวแบบคิงที่.� และจ#ดเก3บติามคิวามยาวที่.�ก�าห้นดไว� และจ#ดเก3บได�ส'งส2ด 2,

000 ไบติ VARCHAR2(n)

จ#ดเก3บติ#วอ#กษรห้ร�อติ#วเลข้ที่.�ไม)ได�น�าไปคิ�านวน โดยคิวามยาวที่.�ก�าห้นดคิวเป5นแบบย�ดห้ย2)น เก3บติามคิวามเป5นจร�ง แติ)ไม)เก�นที่.�ห้นด และจ#ดเก3บได�ส'งส2ด 4000, ไบติ

ช้น�ดข้องข้�อม�ลใน Oracle

กล�(มประเภท

ประเภทข้�อม�ล ค์วัามหมายข้องประเภท

ติ#วเลข้ (Numb

er)

NUMBER(p,s)

จ#ดเก3บติ#วเลข้ที่.�สามารถน�าไปคิ�านวณได� โดยก�าห้นดได�ที่#4งจ�านวนเติ3มและที่ศน�ยม โดยที่.� P คิ�อคิวามยาวที่#4งห้มด (รวมคิวามยาว s ด�วย  ) s คิ�อคิวามยาวข้องที่ศน�ยม เช้)นข้�อม'ลจร�ง

ประเภที่ข้�อม'ล คิ)าที่.�เก3บ

12

38.9

NUMBER 12389.

12

38.9

NUMBER(3) 124

12

38.9

NUMBER(5,2)

12389.

12

38.9

NUMBER(6,-2)

100

00.12

34

NUMBER(4,5)

00123.4

00.12

34

5

NUMBER(4,5)

00123.5

ช้น�ดข้องข้�อม�ลใน Oracle

กล�(มประเภท

ประเภทข้�อม�ล ค์วัามหมายข้องประเภท

วั�นท)$ (Date

)

DATE จ#ดเก3บว#นที่.�และเวลาได�แก� ศติวรรษ ป9 เด�อน ว#น ช้#�วโมง นาที่. และว�นาที่. ซึ่0�งสามารถแสดงผลได�ที่#4งติ#วอ#กษรและ

ติ#วเลข้ โดยใช้�ร)วมก#บ ฟั<งช้#�น TO_CHAR

LARGE OBJEC

T

BLOPจ#ดเก3บแบบไบนาร. ได�แก) ร'ปภาพื่ และเส.ยง โดยสามารถจ#ดเก3บได�ส'งส2ด 4ก�กะไบติ

BFILEจ#ดเก3บแบบไฟัล ไบนาร. (Binary File) ได�แก) ไดเรกที่อร. (Directory) และช้��อไฟัล (Filename)

CLOBจ#ดเก3บแบบติ#วอ#กษรที่.�ม.คิวามยาวมาก ๆ โดยสามารถจ#ดเก3บได�ส'งส2ด 4ก�กะไบติ

ค์าสำ�$ง SQL : DDL CREATE TABLE : สำร�างตาราง

ร�ปแบบการใช้�ค์าสำ�$ง CREATE TABLE ช้-$อตาราง( ช้-$อค์อล�มน 1 ประเภทข้�อม�ล Constraint, ช้-$อค์อล�มน 2 ประเภทข้�อม�ล Constraint, PRIMARY KEY (ช้-$อค์อล�มน ) , FOREIGN KEY (ช้-$อค์อล�มน )

REFERENCES ช้-$อตาราง,);

ค์าสำ�$ง SQL : DDL• CREATE TABLE

– ติ#วอย)าง CREATE TABLE EMPLOYEE (

ID CHAR(5) NOT NULL ,NAME VARCHAR(35) NOT NULL ,ADDRESS VARCHAR(15) NOT NULL ,PHONE CHAR(8) NOT NULL ,E-MAIL CHAR(1) NOT NULL ,PRIMARY KEY (ID)

);

Constraintช้น�ดข้�อม'ล

ช้��อติาราง

ให้� ID เป5น PK

ค์าสำ�$ง SQL : DDLCREATE TABLE PRODUCT (

P_CODE VARCHAR(10) NOT NULL ,P_DESCRIPT VARCHAR(35) NOT NULL ,P_INDATE DATE NOT NULL ,P_ONHAND SMALLINT NOT NULL ,P_MIN SMALLINT NOT NULL ,P_PRICE NUMBER NOT NULL ,P_DISCOUNT NUMBER NOT NULL ,ID CHAR(5) ,PRIMARY KEY (P_CODE) ,FOREIGN KEY (ID) REFERENCES EMPLOYEE(ID)

);

ให้� ID เป5น FK

ค์าสำ�$ง SQL : DDL ALTER TABLE : เปล)$ยนแปลงตาราง

ร�ปแบบการใช้�ค์าสำ�$ง ALTER TABLE ช้-$อตาราง

(ค์าสำ�$งการเปล)$ยนแปลง ช้-$อค์อล�มน ช้น�ดข้�อม�ล);

- ค์าสำ�$งการเปล)$ยนแปลง เช้(น - ADD เพิ่�$มค์อล�มน - ALTER เปล)$ยนแปลงช้น�ดข้�อม�ล- DROP ลบค์อล�มน

ค์าสำ�$ง SQL : DDL ALTER TABLE : เปล)$ยนแปลงตาราง

ต�วัอย(าง•ALTER TABLE PRODUCT ADD SALECODE VARCHAR(10);•ALTER TABLE PRODUCT ALTER Column SALECODE VARCHAR(50);•ALTER TABLE PRODUCT DROP SALECODE;

ค์าสำ�$ง SQL : DDL DROP TABLE : ลบตาราง

ร�ปแบบการใช้�ค์าสำ�$ง DROP TABLE ช้-$อตาราง;

ต�วัอย(างDROP TABLE PRODUCT;DROP TABLE EMPLOYEE;DROP TABLE PROJECT;

2. Data Manipulation

Language : DML เป'นกล�(มค์าสำ�$งท)$กระทาก�บข้�อม�ลในฐานข้�อม�ล

ต�วัอย(างค์าสำ�$ง เช้(น SELECT ใช้�เร)ยกข้�อม�ลในตารางมา

แสำดงผล INSERT ใช้�เพิ่�$มข้�อม�ลเข้�าไปในตาราง UPDATE ใช้�แก�ไข้ข้�อม�ลในตาราง DELETE ใช้�ลบข้�อม�ลในตาราง

ค์าสำ�$ง SQL : DML SELECT <การเร)ยกด�ข้�อม�ล> การเร)ยกด�ข้�อม�ลในค์อล�มน ท)$ต�องการ

•ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1,

ช้-$อค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ nFROM ช้-$อตาราง ;

ค์าสำ�$ง SQL : DML

ต�วัอย(าง แสำดงช้-$อและนามสำก�ลข้องพิ่น�กงาน

SELECT First_name, Last_name FROM Employees ;

Emp_ID

First_name

Last_name

Address

001 สมช้าย ช้าติร. เช้.ยงให้ม)002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

Employees

First_name

Last_name

สมช้าย ช้าติร.สมห้ญิ�ง งามแที่�

ค์าสำ�$ง SQL : DML SELECT <การเร)ยกด�ข้�อม�ล> การเร)ยกด�ข้�อม�ลในท�ก ๆ ค์อล�มน

•ร�ปแบบ

SELECT * FROM ช้-$อตาราง ;

ค์าสำ�$ง SQL : DML

ต�วัอย(าง แสำดงข้�อม�ลท�2งหมดข้องพิ่น�กงาน

SELECT * FROM Employees ;

Emp_ID

First_name

Last_name

Address

001 สมช้าย ช้าติร. เช้.ยงให้ม)002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

Employees

Emp_ID

First_name

Last_name

Address

001 สมช้าย ช้าติร. เช้.ยงให้ม)002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

ค์าสำ�$ง SQL : DML SELECT <การเร)ยกด�ข้�อม�ลเฉพิ่าะบางแถุวัท)$ตรงตามเง-$อนไข้> การเร)ยกด�ข้�อม�ลในค์อล�มน ท)$ต�องการ

•ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อค์อล�มน ท)$ 2,…,ช้-$อ

ค์อล�มน ท)$ nFROM ช้-$อตาราง WHERE เง-$อนไข้ ;

โดยภายในเง-$อนไข้ประกอบด�วัยเง-$อนไข้ => ค์อล�มน ท)$เป'นเง-$อนไข้ Operator Value

ค์าสำ�$ง SQL : DML

ต�วัอย(าง แสำดงช้-$อ นามสำก�ล และท)$อย�(ข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงาน ท)$อย�(จั�งหวั�ดอ�ตรด�ตถุ

SELECT First_name, Last_name, AddressFROM Employees WHERE Address = ‘อ�ตรด�ตถุ ’;

Emp_ID

First_name

Last_name

Address

001 สมช้าย ช้าติร. เช้.ยงให้ม)002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

Employees

First_name

Last_name

Address

สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

Address คิอล#มน ที่.�เป5นเง��อนไข้ = คิ�อ operator อ2ติรด�ติถ

คิ�อ value

Operator (ต�วัปฏิ�บ�ต�การ )ท)$ใช้�ใน Where

Operator ท)$สำามารถุใช้�กาหนดเง-$อนไข้ใน where ม)ด�งน)2

ต�วัเปร)ยบเท)ยบ (Comparison operators) ได�แก(เค์ร-$องหมาย =, <, >, <=, >=, <>

ต�วัปฏิ�บ�ต�การทางด�านลอจั�ก (Logical operators) AND OR NOT

เช้-$อมต(อเง-$อนไข้ในกรณ)ท)$ม)มากกวั(า 1 เง-$อนไข้

Operators ในการเปร)ยบเท)ยบ

ต�วั Operators ในการเปร)ยบเท)ยบ– = เท(าก�บ– < น�อยกวั(า– <= น�อยกวั(าหร-อเท(าก�บ– > มากกวั(า– >= มากกวั(าหร-อเท(าก�บ– <> หร-อ != ไม(เท(าก�บ

Operators ทางลอจั�ก ต�วั Logical operators

– AND และ– OR หร-อ– NOT ตรงก�น

ข้�าม , ไม(เท(าก�บ

Operator (ต�วัปฏิ�บ�ต�การ )ท)$ใช้�ใน Whereต�วัปฏิ�บ�ต�การพิ่�เศษ (Special operators)

BETWEEN…AND…. ตรวัจัสำอบช้(วังข้องค์(าใน Attribute

IS NULL ตรวัจัสำอบวั(าม)ค์(าวั(างหร-อไม( IS NOT NULL ตรวัจัสำอบวั(าไม(ม)ค์(าวั(างหร-อไม( LIKE ตรวัจัสำอบค์(า String ใน Attribute วั(าม)

สำ(วัน ค์ล�ายก�บท)$กาหนดไวั�หล�ง LIKE หร-อไม( IN ตรวัจัสำอบค์(าใน Attribute วั(าตรงก�นก�บท)$

กาหนดไวั�หล�ง IN หร-อไม( EXISTS ตรวัจัสำอบวั(าม)การ Return ค์(าข้อง

Subquery หร-อไม( DISTINCT จัาก�ดค์(าให�แสำดงผลโดยค์(าไม(ซ้ำ2าก�น

ต�วัอย(างการใช้� AND

ต�วัอย(าง แสำดงช้-$อ นามสำก�ล ท)$อย�( และเง�นเด-อน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$อย�(จั�งหวั�ดอ�ตรด�ตถุ และม)เง�นเด-อนมากกวั(า 5000 บาท

จัากโจัทย สำ�$งท)$ต�องแสำดงค์-อ ช้-$อ นามสำก�ล เง�นเด-อนจัากตาราง พิ่น�กงานเง-$อนไข้ พิ่น�กงานค์นน�2นต�องอย�(จั�งหวั�ดอ�ตรด�ตถุ และม)

เง�นเด-อน มากกวั(า 5000 บาทค์อล�มน เง-$อนไข้ Address และ Salary

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม) 15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

Employees

ต�วัอย(างการใช้� AND จัากโจัทย จัะเห,นวั(า ม)สำองเง-$อนไข้ และต�องเป'นจัร�งท�2งสำองเง-$อนไข้ ด�งน�2นจั1งต�องใช้� AND เช้-$อมระหวั(าง 2 เง-$อนไข้น)2เข้)ยน SQL ได�ด�งน)2

SELECT First_name, Last_name, Address, SalaryFROM Employees WHERE Address = ‘อ�ตรด�ตถุ ’ AND Salary > 5000;

First_name

Last_name

Address

Salary

สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000จัะเห,นวั(าผลล�พิ่ธ์ ท)$ได�พิ่น�กงานค์นน�2นต�องอย�(อ�ตรด�ตถุ และม)เง�นเด-อนมากกวั(า 5000

ต�วัอย(างการใช้� OR

ต�วัอย(าง แสำดงช้-$อ นามสำก�ล ท)$อย�( และเง�นเด-อน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$อย�(จั�งหวั�ดอ�ตรด�ตถุ หร-อม)เง�นเด-อนมากกวั(า 5000 บาท

จัากโจัทย สำ�$งท)$ต�องแสำดงค์-อ ช้-$อ นามสำก�ล เง�นเด-อนจัากตาราง พิ่น�กงานเง-$อนไข้ พิ่น�กงานค์นน�2นต�องอย�(จั�งหวั�ดอ�ตรด�ตถุ หร-อม)

เง�นเด-อน มากกวั(า 5000 บาทค์อล�มน เง-$อนไข้ Address และ Salary

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม) 15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

Employees

ต�วัอย(างการใช้� OR จัากโจัทย จัะเห,นวั(า ม)สำองเง-$อนไข้ แต(โจัทย ใช้�ค์าวั(าหร-อ แสำดงวั(าม)เง-$อนไข้ใดเง-$อนใดหน1$งเป'นจัร�ง หร-อเป'นจัร�งท�2งสำองเง-$อนไข้ก,ได� ด�งน�2นจั1งต�องใช้� OR เช้-$อมระหวั(าง 2 เง-$อนไข้น)2เข้)ยน SQL ได�ด�งน)2

SELECT First_name, Last_name, Address, SalaryFROM Employees WHERE Address = ‘อ�ตรด�ตถุ ’ OR Salary > 5000;

จัะเห,นวั(าผลล�พิ่ธ์ ท)$ได� สำมช้ายไม(ได�อย�(จั�งหวั�ดอ�ตรด�ตถุ แต(ท)$สำมช้ายแสำดงในผลล�พิ่ธ์ เพิ่ราะม)เง�นเด-อนมากกวั(า 5000 สำร�ป ผลล�พิ่ธ์ ท)$ได�จัาก OR เข้�าเง-$อนไข้ใดเง-$อนไข้หน1$งก,เป'นจัร�งแล�วั

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม) 15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

การใช้� Between…AND…. Between…AND… <กาหนดเง-$อนไข้ให�ก�บ where โดยเล-อกช้(วัง

ข้�อม�ลท)$สำนใจั> การกาหนดเง-$อนไข้ โดยท)$สำามารถุกาหนดช้(วังข้�อม�ลได�

•ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อค์อล�มน ท)$ 2,…,ช้-$อ

ค์อล�มน ท)$ nFROM ช้-$อตาราง WHERE ช้-$อค์อล�มน Between Value1 AND value2 ;

ใน oracle การกาหนดช้(วังข้�อม�ล จัะรวัมค์(า Value1 และ Value2 ด�วัยเช้(น WHERE Salary Between 4800 AND 12000

ผลล�พิ่ธ์ ท)$จัะได�จัะแสำดงเง�นเด-อนต�2งแต( 4800 จันถุ1ง 12000

การใช้� Between…AND….

ต�วัอย(าง แสำดงช้-$อ และเง�นเด-อนข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ม)เง�นเด-อน 6000 ถุ1ง 15000

SELECT First_name, SalaryFROM Employees WHERE Salary between 6000 AND 15000;

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม แพื่ร) 5000

Employees

First_name

Salary

สมช้าย 15000

สมห้ญิ�ง 6000

การใช้� Not Between…AND….

ต�วัอย(าง แสำดงช้-$อ และเง�นเด-อนข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ม)เง�นเด-อนไม(อย�(ในช้(วัง 6000 ถุ1ง 15000

SELECT First_name, SalaryFROM Employees WHERE Salary Not between 6000 AND 15000;

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม แพื่ร) 5000

Employees

First_name

Salary

สมใจ 5000

การใช้� Not ร(วัมก�บ Between….AND… เป'นการระบ�เง-$อนไข้วั(า ข้�อม�ลต�องไม(อย�(ในช้(วังท)$กาหนด

การใช้� Like Like <ใช้�ในการเปร)ยบเท)ยบค์าในร�ปแบบ String เพิ่-$อหาค์าท)$ต�องการ

โดยข้�อค์วัามหร-อค์าท)$ต�องการค์�นหา จัะทราบค์(าหร-อระบ�เพิ่)ยงบางสำ(วันเท(าน�2น>

ร�ปแบบ

SELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ nFROM ช้-$อตาราง WHERE ช้-$อค์อล�มน Like pattern ;

การใช้� Like

SELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ n

FROM ช้-$อตาราง WHERE ช้-$อค์อล�มน Like pattern ;

ค์-อสำ�$งท)$ต�องต�องการค์�นหา โดย Pattern ม)ร�ปแบบด�งน)2

% หมายถุ1ง ต�วัอ�กษรใด ๆ จัานวันไม(จัาก�ดต�วัอ�กษร _ หมายถุ1ง ต�วัอ�กษรใด ๆ จัานวัน 1 ต�วัอ�กษร

การใช้� Likeต�วัอย(าง

ร�ปแบบ ต�วัอย(าง

ค์าอธ์�บาย ผลล�พิ่ธ์

'%value' '%s' ติ#วอ#กษรด�านห้น�าเป5นอะไรก3ได� ติ#วส2ดติ�องเป5น s

Sandnes , Louis

'value%' 'N%' ข้�อคิวามน#4นติ�องข้04นติ�นด�วย N Nerissa'%value%' '%a%' ข้�อคิวามติ�องม. a ประกอบอย') ใน

ข้�อคิวามBaer, Louisa

'%value%value%' '%a%e%' ข้�อคิวามติ�องม. a และ e ประกอบอย')ในข้�อคิวาม แติ)ล�าด#บข้อง a ติ�องมาก)อนติ#วอ#กษร e

Nayer, Baer

'_ value%' '_ a%' ในข้�อคิวาม ติ#วอ#กษรติ#วแรกเป5นอะไรก3ได�ข้อให้�ติ#วอ#กษรติ#วที่.� 2 เป5น a

Baida,Nayer

‘%value_ _ ' '%a_ _' ในข้�อคิวาม ติ#วอ#กษรสองติ#วห้ล#งจะเป5นอะไรก3ได�แติ)ติ#วที่.�สาม (น#บจากด�านห้ล#ง )ติ�องเป5น a

Rajs, Hall

การใช้� Not Like

SELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ n

FROM ช้-$อตาราง WHERE ช้-$อค์อล�มน Not Like pattern ;

การใช้� Not Like ค์-อการกาหนดเง-$อนวั(า ข้�อค์วัามท)$เราต�องการค์�นหาต�องไม(ใช้(ท)$เราระบ�ลงไปใน Pattern

เช้(น SELECT last_nameFROM EmployeesWHERE last_name Not Like '%a%';

ผลล�พิ่ธ์ ท)$ได�ค์-อภาย last_name ท)$แสำดงผลจัะไม(ม)ต�วัอ�กษร a ปรากฏิอย�(ใน last_name

44

การใช้� IN

IN <เป5นคิ�าส#�งที่.�ใช้�ส�าห้ร#บการระบ2เง��อนไข้การเล�อกข้�อม'ลในติาราง (Table) โดยเล�อกเฉพื่าะคิ)าที่.�ก�าห้นด>

ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อ

ค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ nFROM ช้-$อตาราง

WHERE ช้-$อค์อล�มน IN (value1,value2,...)

การใช้� IN

ต�วัอย(าง แสำดงรห�สำ และช้-$อข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ม)รห�สำ 001 ,002,004

SELECT Emp_ID, First_nameFROM Employees WHERE Emp_ID IN ('001', '002','C004')

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม แพื่ร) 5000

004 สมห้ว#ง ที่2กเร��อง พื่ะเยา 7800

Employees

Emp_ID

First_name

001 สมช้าย002 สมห้ญิ�ง004 สมห้ว#ง

การใช้� Not IN

ต�วัอย(าง แสำดงรห�สำ และช้-$อข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ไม(ม)รห�สำ 001 ,002,004

SELECT Emp_ID, First_nameFROM Employees WHERE Emp_ID Not IN ('001', '002','C004')

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม แพื่ร) 5000

004 สมห้ว#ง ที่2กเร��อง พื่ะเยา 7800

Employees

Emp_ID

First_name

003 สมใจ

47

การใช้� IS NULL

IS NULL <เป5นการระบ2เง��อนไข้ว)าคิอล#มน ที่.�ติ�องการติ�องม.คิ)าเป5น NULL>

ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อ

ค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ nFROM ช้-$อตาราง

WHERE ช้-$อค์อล�มน IS NULL

การใช้� IS NULL

ต�วัอย(าง แสำดงช้-$อและท)$อย�(ข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ไม(ได�ระบ�ท)$อย�(

SELECT First_name, AddressFROM Employees WHERE Address IS NULL

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม 5000

004 สมห้ว#ง ที่2กเร��อง 7800

Employees

First_name

Address

สมใจสมห้ว#ง

49

การใช้� IS NOT NULL

IS NULL <เป5นการระบ2เง��อนไข้ว)าคิอล#มน ที่.�ติ�องการติ�องไม)ม.คิ)าเป5น NULL>

ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อ

ค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ nFROM ช้-$อตาราง

WHERE ช้-$อค์อล�มน IS NOT NULL

การใช้� IS NOT NULL

ต�วัอย(าง แสำดงช้-$อและท)$อย�(ข้องพิ่น�กงาน โดยจัะแสำดงข้�อม�ลเฉพิ่าะพิ่น�กงานท)$ระบ�ท)$อย�(

SELECT First_name, AddressFROM Employees WHERE Address IS NOT NULL

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม 5000

004 สมห้ว#ง ที่2กเร��อง 7800

Employees

First_name

Address

สมช้าย เช้.ยงให้ม)สมห้ญิ�ง อ2ติรด�ติถ

การใช้� DISTINCTDISTINCT : ใช้�สำาหร�บการแสำดงผล

ค์(าท)$ซ้ำ2าก�นเพิ่)ยง 1 ค์(า ร�ปแบบการใช้�ค์าสำ�$ง

ให�ใสำ( DISTINCT ไวั�หน�า ATTRIBUTE ท)$ต�องการให�แสำดงผลค์(าซ้ำ2าเพิ่)ยง 1 ค์(าร�ปแบบSELECT DISTINCT ช้-$อค์อล�มน FROM ช้-$อตาราง

การใช้� DISTINCT

ต�วัอย(าง SELECT DISTINCT V_CODE FROM PRODUCT;

ผลล�พิ่ธ์

การใช้� DISTINCT

หากไม(ใช้� DISTINCT ผลล�พิ่ธ์ จัะได�ค์(าท)$ซ้ำ2าก�น

SELECT V_CODE FROM PRODUCT;

ผลล�พิ่ธ์

ต�วัอย(าง: SELECT DISTINCT

SELECT DISTINCT AmphurFROM PersonalSELECT DISTINCT AmphurFROM Personal

ติ#วอย)างติ#วอย)าง

FirstName

LastName

Amphur

มานะ พื่ากเพื่.ยร

เม�อง

อดที่น ติ#4งใจเร.ยน

เม�อง

มาน. ห้ม#�นเพื่.ยร

ปง

PersonalPersonal ผลล#พื่ธิ ผลล#พื่ธิ Amphurเม�องปง

การใช้� EXISTSEXISTS

เป5นคิ�าส#�งที่.�ใช้�ส�าห้ร#บการระบ2เง��อนไข้โดยที่�าการติรวจสอบ ข้�อม'ลจาก อ.กติารางห้น0�งว)าม.ข้�อม'ล ห้ร�อว)าไม)ม.ข้�อม'ลที่.�ติ�องการเปร.ยบเที่.ยบ

ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ต�องการด�ข้�อม�ลท)$ 1, ช้-$อ

ค์อล�มน ท)$ 2,…,ช้-$อค์อล�มน ท)$ n FROM ช้-$อตาราง 1

WHERE EXISTS (SELECT ช้-$อค์อล�มน FROM ช้-$อตารางท)$ 2)

การใช้� EXISTSCustomerID

Name Email CountryCode

Budget

Used

C001Win Weerachai

win.weerachai@thaicreate.com

TH

10

00

00

0

60

00

00

C002 John Smithjohn.smith@thaicreate.com

EN

20

00

00

0

80

00

00

C003 Jame Bornjame.born@thaicreate.com

US

30

00

00

0

60

00

00

C004Chalee Angel

chalee.angel@thaicreate.com

US

40

00

00

0

10

00

00

Table : customer2

Table : customer1

CustomerID

Name Email CountryCode

Budget

Used

C001Win Weerachai

win.weerachai@thaicreate.com

TH

10

00

00

0

60

00

00

C002 John Smithjohn.smith@thaicreate.com

EN

20

00

00

0

80

00

00

C004Chalee Angel

chalee.angel@thaicreate.com

US

40

00

00

0

10

00

00

การใช้� EXISTS

CustomerID

Name Email CountryCode

Budget

Used

C001Win Weerachai

win.weerachai@thaicreate.com

TH

10

00

00

0

60

00

00

C002 John Smithjohn.smith@thaicreate.com

EN

20

00

00

0

80

00

00

C004Chalee Angel

chalee.angel@thaicreate.com

US

40

00

00

0

10

00

00

Sample1 การเล�อกข้�อม'ลจากติาราง customer1 โดยข้�อม'ลจะเปร.ยบเที่.ยบในติาราง customer2 ว)าม.ข้�อม'ลเห้ม�อนก#นห้ร�อไม)

SELECT * FROM customer1 WHERE EXISTS (SELECT * FROM customer2)

การใช้� ORDER BYORDER BY : ใช้�สำาหร�บการจั�ดเร)ยงลาด�บ

ในการแสำดงผล ร�ปแบบการใช้�ค์าสำ�$ง

SELECT columnlistFROM tablelist[WHERE conditionlist][ORDER BY Columnlist [ ASC | DESC ]];

โดย•ASC ค์-อ การเร)ยงจัากน�อยไปมาก•DESC ค์-อ การเร)ยงจัากมากไปน�อย

ต�วัอย(าง: ORDER BYSELECT *FROM AddressORDER BY ZipCode DESC

SELECT *FROM AddressORDER BY ZipCode DESC

ติ#วอย)างติ#วอย)าง

Amphur

ZipCode

เม�องพื่ะเยา

56

00

0

จ2น 56

00

2

ปง 56

00

1

AddressAddress ผลล#พื่ธิ ผลล#พื่ธิ Amphur

ZipCode

จ2น 56002

ปง 56001

เม�องพื่ะเยา

56000

แสำดงรห�สำ , ช้-$อ , ท)$อย�( และเง�นค์�าช้าระข้องล�กค์�าโดยเร)ยงตามเง�นค์�าช้าระจัากมากไปน�อยS elect Id, Name, Addr, Curr_BalF rom customer o rder by Curr_B

al desc ; Id Name Addr

Curr_Bal- - - - - - - - - - - - - - - - - - - - - - - - - - - -197 วรช้าติ� ส.คิล�4า อย2ธิยา

500000

110 ศ�ร. ส2ข้พื่าน�ช้ กร2งเที่พื่ฯ200000

217 อน#นติ บ2ญิญิาน2พื่งศ กร2งเที่พื่ฯ200000

309 ส2ภาวด. เพื่ช้รส2ข้ ระยอง 150000

100 โสภา ส.คิล�4า กร2งเที่พื่ฯ 100000

. . . . . . . . .

การใช้� ORDER BYต�วัอย(าง

ต�องการด�รห�สำสำ�นค์�า ช้-$อสำ�นค์�า วั�นท)$สำ�นค์�าเข้�ามา และราค์าสำ�นค์�า โดยให�เร)ยงลาด�บตามราค์าสำ�นค์�าจัากน�อยไปมาก

SELECT P_CODE, P_DESCRIPT, P_INDATE, P_PRICEFROM PRODUCTORDER BY P_PRICE;การเร)ยงจัากน�อยไปมากไม(จัาเป'นต�องใสำ( ASC

การใช้� ORDER BY

ต�วัอย(าง ต�องการด�รห�สำสำ�นค์�า ช้-$อสำ�นค์�า วั�นท)$สำ�นค์�าเข้�ามา

และราค์าสำ�นค์�า โดยให�เร)ยงลาด�บตามราค์าสำ�นค์�าจัากมากไปน�อย

SELECT P_CODE, P_DESCRIPT, P_INDATE, P_PRICEFROM PRODUCTORDER BY P_PRICE DESC;

การใช้� ORDER BY

ต�วัอย(าง ต�องการด�ช้-$อสำ�นค์�า รห�สำผ��ค์�าสำ(ง วั�นท)$สำ�นค์�าเข้�ามา และ

ราค์าสำ�นค์�า โดยให�เร)ยงลาด�บตามรห�สำผ��ค์�าสำ(งมากน�อยไปหามาก ถุ�าหากผ��ค์�าสำ(งเป'นรายเด)ยวัก�นให�แสำดงผลเร)ยงลาด�บตามราค์าสำ�นค์�า (P_PRICE) จัากมากไปหาน�อย

SELECT P_DESCRIPT, V_CODE, P_INDATE, P_PRICEFROM PRODUCTORDER BY V_CODE ASC, P_PRICE DESC;

การใช้� ORDER BY

ต�วัอย(าง ต�องการด�ช้-$อสำ�นค์�า รห�สำผ��ค์�าสำ(ง และราค์าสำ�นค์�า โดยให�

เร)ยงลาด�บตามรห�สำผ��ค์�าสำ(งมากน�อยไปหามาก ถุ�าหากผ��ค์�าสำ(งเป'นรายเด)ยวัก�นให�แสำดงผลเร)ยงลาด�บตามราค์าสำ�นค์�า (P_PRICE) จัากมากไปหาน�อย

SELECT P_DESCRIPT, V_CODE, P_PRICEFROM PRODUCTWHERE P_PRICE <= 500ORDER BY V_CODE ASC, P_PRICE DESC;

การใช้� ALIASALIAS

เป5นคิ�าส#�งที่.�ใช้�ส�าห้ร#บการระบ2เง��อนไข้การเล�อกข้�อม'ลในติาราง (Table) โดย ALIAS คิ�อการสร�างช้��อจ�าลองข้04นมาให้ม)ให้�คิอล#มน ในข้ณะที่.�แสดงผล

ร�ปแบบSELECT ช้-$อค์อล�มน ท)$ 1 AS ช้-$อค์อล�มน ใหม( ,

ช้-$อค์อล�มน ท)$ 2,… FROM ช้-$อตาราง ห้มายเห้ติ2 จะเปล.�ยนช้��อคิอล#มน ในการแสดงผลเที่)าน#4น โดยที่.�จะไม)ไปเปล.�ยนในโคิรงสร�าง ข้องติารางจร�ง

การใช้� ALIAS

ต�วัอย(าง แสำดงรห�สำและช้-$อข้องพิ่น�กงาน โดยม)การเปล)$ยนช้-$อค์อล�มน รห�สำ เป'น “ID”

SELECT Emp_ID AS ID, First_nameFROM Employees WHERE Salary between 6000 AND 15000;

Emp_ID

First_name

Last_name

Address

Salary

001 สมช้าย ช้าติร. เช้.ยงให้ม)

15000

002 สมห้ญิ�ง งามแที่� อ2ติรด�ติถ

6000

003 สมใจ ส2ข้สม แพื่ร) 5000

Employees

ID First_name

001 สมช้าย002 สมห้ญิ�ง003 สมใจ

Operators ในการค์านวัณ

ต�วั Operators ในการค์านวัณ

– + บวัก– - ลบ– * ค์�ณ– / หาร– ^ ยกกาล�ง

การค์านวัณในค์าสำ�$ง SQL และการใช้�ช้-$อแทน

(Alias) การค์านวัณ SELECT P_DESCRIPT, P_ONHAND, P_PRICE,

P_ONHAND*P_PRICE FROM PRODUCT;

ส#งเกติเม��อม.การคิ�านวณโดยใช้� P_ONHAND*P_PRICE ผลล#พื่ธิ ที่.�ได�จะแสดงในคิอล#มน Expr1003 ซึ่0�งคิอล#มน Expr1003 น.4เป5นคิอล#มน ที่.� Access สร�างข้04นมาให้�เองโดยอ#ติโนม#ติ�

การค์านวัณในค์าสำ�$ง SQL และการใช้�ช้-$อแทน

(Alias)การค์านวัณและใช้�ช้-$อแทน (Alias) ต�องการหาวั(าสำ�นค์�าท)$เหล-ออย�(ในแต(ละต�วัม)ม�ลค์(า

รวัมแล�วัเท(าก�บเท(าไร SELECT P_DESCRIPT, P_ONHAND,

P_PRICE, P_ONHAND*P_PRICE AS TOTAL_VALUEFROM PRODUCT;

การค์านวัณในค์าสำ�$ง SQL และการใช้�ช้-$อแทน

(Alias)การค์านวัณและใช้�ช้-$อแทน (Alias) ต�องการแสำดงวั�นท)$สำ�นค์�าแต(ละต�วัจัะม)วั�นสำ�2นสำ�ด

การร�บประก�นเม-$อใด ในท)$น)2ค์�ดท)$ 90 วั�น โดยการค์�ดจัะค์�ดเร�$มจัากวั�นท)$สำ�นค์�าน�2นเข้�ามาในค์ล�งสำ�นค์�า

SELECT P_CODE, P_INDATE, P_INDATE + 90 AS EXPIRE_DATEFROM PRODUCT;

ฟั;งก ช้�น (Function)ช้น�ดข้องฟั;งก ช้�นใน SQL

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นในการจั�ดการต�วัอ�กษร

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นในการปร�บเปล)$ยนต�วัอ�กษร

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นในการปร�บเปล)$ยนต�วัอ�กษร

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นเก)$ยวัก�บต�วัเลข้ (Number Function)การป;ดเศษทศน�ยม ตามจัานวันตาแหน(งท)$ระบ�

โดยม)การค์าน1งทศน�ยมการป;ดเศษทศน�ยม ตามจัานวันตาแหน(งท)$ระบ� โดยม)การค์าน1งทศน�ยม

การป;ดเศษทศน�ยมท�2ง ตามจัานวันตาแหน(งท)$ระบ�

การป;ดเศษทศน�ยมท�2ง ตามจัานวันตาแหน(งท)$ระบ�ค์-อการหารท)$สำนใจัแต(เศษ ค์าตอบท)$ได�จัะนาเศษท)$เหล-อมาตอบ

ค์-อการหารท)$สำนใจัแต(เศษ ค์าตอบท)$ได�จัะนาเศษท)$เหล-อมาตอบ

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นเก)$ยวัก�บ DATE

SYSDATE เป5นคิ�าส#�งที่.�ใช้�ในอ)านว#นที่.�ป<นจ2บ#นข้อง Oracle Database

SELECT sysdate as "Date"FROM dual;

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ฟั;งก ช้�นเก)$ยวัก�บ DATE

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นเด)$ยวั (Single Row function)

ต�วัอย(างการนาไปใช้�

ฟั;งก ช้�นสำร�ป (Aggregate function)

ฟั;งก ช้�นสำร�ป (Aggregate function)

ค์าสำ�$งท)$ใช้� COUNT ใช้�สำาหร�บน�บค์(า MIN หาค์(าต$าสำ�ด MAX หาค์(าสำ�งสำ�ด SUM หาผลรวัม AVG หาค์(าเฉล)$ย

Aggregate function

COUNT : ใช้�สำาหร�บการน�บค์(าต�วัอย(าง

ต�องการน�บจัานวันผ��ค์�าสำ(งท�2งหมด SELECT COUNT(*)

FROM VENDOR;

Aggregate function

ต�วัอย(าง ต�องการน�บจัานวันผ��ค์(าสำ(งท�2งหมดท)$ทาการสำ(ง

สำ�นค์�าให�เรา SELECT COUNT(*)

FROM (SELECT DISTINCT V_CODE FROM PRODUCT

WHERE V_CODE IS NOT NULL);

Aggregate function

ต�วัอย(าง ต�องการน�บจัานวันผ��ค์(าสำ(งท)$สำ(งสำ�นค์�าให�ก�บเรา และ

ราค์าสำ�นค์�าท)$สำ(งน�อยกวั(า 100 SELECT COUNT(*)

FROM (SELECT DISTINCT V_CODE FROM PRODUCT

WHERE V_CODE IS NOT NULL AND P_PRICE < 100);

Aggregate function

MAX : หาค์(าสำ�งสำ�ดต�วัอย(าง

ต�องการหาราค์าสำ�นค์�าท)$แพิ่งท)$สำ�ดในร�าน SELECT MAX(P_PRICE)

FROM PRODUCT;

Aggregate function

ต�วัอย(าง ต�องการด�รายละเอ)ยดข้องสำ�นค์�าท)$แพิ่งท)$สำ�ดใน

ร�าน SELECT P_CODE, P_DESCRIPT,

P_PRICEFROM PRODUCTWHERE P_PRICE = (SELECT MAX(P_PRICE) FROM PRODUCT);

Aggregate function

MIN : หาค์(าต$าสำ�ดต�วัอย(าง

ต�องการหาราค์าสำ�นค์�าท)$ถุ�กท)$สำ�ดในร�าน SELECT MIN(P_PRICE)

FROM PRODUCT;

Aggregate function

ต�วัอย(าง ต�องการด�รายละเอ)ยดข้องสำ�นค์�าท)$ถุ�กท)$สำ�ดในร�าน SELECT P_CODE, P_DESCRIPT,

P_PRICEFROM PRODUCTWHERE P_PRICE = (SELECT MIN(P_PRICE)

FROM PRODUCT);

Aggregate function

SUM : หาผลรวัมต�วัอย(าง

ต�องการหาม�ลค์(าสำ�นค์�าท)$ม)อย�(ในร�านท�2งหมด SELECT SUM(P_ONHAND *

P_PRICE) AS TOTAL_VALUEFROM PRODUCT;

ต�วัอย(าง: SUMSELECT Name, SUM(Amount)FROM Income

SELECT Name, SUM(Amount)FROM Incomeติ#วอย)าง

Name Amount

ANT 5500BAT 4500ANT 7100

IncomeIncome ผลล#พื่ธิ ผลล#พื่ธิ Name SUM(Am

ount)ANT 17100BAT 17100ANT 17100

Aggregate function

AVG : หาค์(าเฉล)$ยต�วัอย(าง

ต�องการหาม�ลค์(าสำ�นค์�าเฉล)$ยท)$อย�(ในร�าน SELECT AVG(P_PRICE)

FROM PRODUCT;

Aggregate function

ต�วัอย(าง ต�องการด�สำ�นค์�าท)$ม)ราค์าสำ�งกวั(าราค์าสำ�นค์�าเฉล)$ย SELECT P_DESCRIPT, P_ONHAND,

P_PRICEFROM PRODUCTWHERE P_PRICE > (SELECT AVG(P_PRICE)

FROM PRODUCT)ORDER BY P_PRICE DESC;

GROUP BY และ HAVING

GROUP BY เป'นค์าสำ�$งท)$ใช้�สำาหร�บการแสำดงผลในล�กษณะจั�ดกล�(ม อาจัใช้�ร(วัมก�บ HAVING ในการกาหนดเง-$อนไข้ข้องการแสำดงผล

ร�ปแบบการใช้�ค์าสำ�$งSELECT columnlistFROM tablelist[WHERE conditionlist][GROUP BY columnlist][HAVING conditionlist][ORDER BY columnlist [ASC | DESC]];

ต�วัอย(าง: ใช้� GROUP BY

SELECT Name, SUM(Amount)FROM IncomeGROUP BY Name

SELECT Name, SUM(Amount)FROM IncomeGROUP BY Name

ติ#วอย)าง

Name Amount

ANT 5500BAT 4500ANT 7100

IncomeIncome ผลล#พื่ธิ ผลล#พื่ธิ Name SUM(Am

ount)ANT 12600BAT 4500

ต�วัอย(าง: ใช้� GROUP BY และ HAVING

SELECT Name, SUM(Amount)FROM IncomeGROUP BY NameHAVING NAME = “ANT”

SELECT Name, SUM(Amount)FROM IncomeGROUP BY NameHAVING NAME = “ANT”

ติ#วอย)าง

Name Amount

ANT 5500BAT 4500ANT 7100

IncomeIncome ผลล#พื่ธิ ผลล#พื่ธิ Name SUM(Am

ount)ANT 12600

GROUP BY และ HAVING

ต�วัอย(าง ต�องการด�ม�ลค์(ารวัมข้องสำ�นค์�าท)$แต(ละผ��ค์�าสำ(ง

สำ(งสำ�นค์�าให�ก�บเรา SELECT V_CODE, SUM(P_PRICE

* P_ONHAND)FROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODE;

GROUP BY และ HAVING

ต�วัอย(าง ต�องการด�ม�ลค์(าเฉล)$ยข้องสำ�นค์�าท)$แต(ละผ��ค์�า

สำ(ง สำ(งสำ�นค์�าให�ก�บเรา SELECT V_CODE, AVG(P_PRICE)

FROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODE;

GROUP BY และ HAVING

ต�วัอย(าง ต�องการด�ม�ลค์(าเฉล)$ยข้องสำ�นค์�าท)$แต(ละผ��ค์�าสำ(ง

สำ(งสำ�นค์�าให�ก�บเรา โดยด�เฉพิ่าะราค์าเฉล)$ยท)$ต$ากวั(า 100

SELECT V_CODE, AVG(P_PRICE)FROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODEHAVING AVG(P_PRICE) < 100;

GROUP BY และ HAVING

ต�วัอย(าง ต�องการด�ม�ลค์(าเฉล)$ยข้องสำ�นค์�าท)$แต(ละผ��ค์�าสำ(ง สำ(ง

สำ�นค์�าให�ก�บเรา และให�น�บจัานวันสำ�นค์�าท)$ผ��ค์(าสำ(งสำ(งให�ด�วัย โดยด�เฉพิ่าะราค์าเฉล)$ยท)$ต$ากวั(า 100

SELECT V_CODE, COUNT(P_CODE), AVG(P_PRICE)FROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODEHAVING AVG(P_PRICE) < 100;

GROUP BY และ HAVING

ต�วัอย(าง ใช้� Alias (ช้-$อแทน ) เพิ่-$อการแสำดงผลท)$ด)ย�$งข้12น SELECT V_CODE,

COUNT(P_CODE) AS AMOUNT_OF_PRODUCT, AVG(P_PRICE) AS PRICE_AVERAGEFROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODEHAVING AVG(P_PRICE) < 100;

GROUP BY และ HAVING

ต�วัอย(าง ต�องการด�ม�ลค์(ารวัมข้องสำ�นค์�าท)$แต(ละผ��ค์�าสำ(ง สำ(งสำ�นค์�าให�

ก�บเรา และให�แสำดงผลเร)ยงตามราค์าจัากมากไปหาน�อย SELECT V_CODE, SUM(P_ONHAND * P_PRICE) AS

TOTAL_PRICEFROM PRODUCTWHERE V_CODE <> NULLGROUP BY V_CODEORDER BY SUM(P_ONHAND * P_PRICE) DESC;

การแสำดงผลจัากหลายตารางโดยการ Join (เช้-$อม)

ต�วัอย(าง ต�องการด�รายละเอ)ยดสำ�นค์�า และต�องการทราบช้-$อผ��ค์�าสำ(ง

พิ่น�กงานท)$เราต�ดต(อ และท)$อย�(ข้องผ��ค์�าสำ(ง SELECT PRODUCT.P_DESCRIPT, PRODUCT.P_PRICE,

VENDOR.V_NAME, VENDOR.V_CONTACT, VENDOR.V_AREACODE, VENDOR.V_PHONE

FROM PRODUCT, VENDORWHERE PRODUCT.V_CODE = VENDOR.V_CODE;

การแสำดงผลจัากหลายตารางโดยการ Join

(เช้-$อม)ต�วัอย(าง ต�องการด�รายละเอ)ยดสำ�นค์�าและผ��ค์�าสำ(ง ท)$สำ(งสำ�นค์�า หล�งวั�นท)$ -15 JAN-2004 SELECT PRODUCT.P_DESCRIPT,

PRODUCT.P_INDATE, PRODUCT.P_PRICE,

VENDOR.V_NAME, VENDOR.V_AREACODE, VENDOR.V_PHONE

FROM PRODUCT, VENDORWHERE PRODUCT.V_CODE = VENDOR.V_CODE

AND P_INDATE > #15-JAN-2004#;

ค์าสำ�$ง SQL : DML INSERT : เพิ่�$มแถุวั (Row) ลงใน Table ร�ปแบบการใช้�ค์าสำ�$ง INSERT INTO ช้-$อตาราง VALUES (ข้�อม�ลท�กค์อล�มน )

ต�วัอย(าง INSERT INTO VENDORVALUES ('V0001', 'บร�ษ�ทไบรซ้ำ�น', 'สำม�ย', '615', '223-3234', 'TN', 'Y'); INSERT INTO PRODUCT VALUES ('P0000001', 'ห�วัพิ่(นสำ)', '03-NOV-2003', 8, 5, 1090.99, 0.00, 'V0011');INSERT INTO PRODUCT VALUES ('P0000010', 'ค์�อน 12 ปอนด ', '03-JAN-2004', 8, 5, 140.40, 0.05, NULL);

ต�วัอย(าง: INSERT

INSERT INTO Orders(ProdID, Product, EmpID)VALUES (999, “Ram”, “02”)

INSERT INTO Orders(ProdID, Product, EmpID)VALUES (999, “Ram”, “02”)

ProdID

Product

EmpID

234 Printer

01

657 Table 03865 Chair 03

OrdersOrders

ProdID

Product

EmpID

234 Printer

01

657 Table 03865 Chair 03999 Ram 02

OrdersOrders

ค์าสำ�$ง SQL : DML

UPDATE : แก�ไข้ข้�อม�ลในตารางร�ปแบบการใช้�ค์าสำ�$ง

UPDATE ช้-$อตาราง SET ช้-$อค์อล�มน = ข้�อม�ลใหม( WHERE เง-$อนไข้;

ค์าสำ�$ง SQL : DMLUPDATE : แก�ไข้ข้�อม�ลใน Table

ต�วัอย(าง•UPDATE PRODUCT

SET P_DATE = ’18-JAN-2004’WHERE P_CODE = ‘P0000007’;

•แก�ไข้ข้�อม�ลวั�นท)$สำ�นค์�าเข้�าค์ล�ง (P_DATE) โดยให�แก�ไข้เฉพิ่าะสำ�นค์�าท)$ม)รห�สำสำ�นค์�า (P_CODE) เป'น P0000007 ให�เป'นวั�นท)$สำ�นค์�าเข้�าค์ล�งเป'น 18-JAN-2004

ค์าสำ�$ง SQL : DML

UPDATE : แก�ไข้ข้�อม�ลใน Tableต�วัอย(าง

•UPDATE Book

SET Author = ’สำมโช้ค์’WHERE Book_name = ‘ระบบฐานข้�อม�ล’;

•แก�ไข้ข้�อม�ลผ��แต(ง (Author) โดยให�แก�ไข้เฉพิ่าะหน�งสำ-อท)$ช้-$อระบบฐานข้�อม�ล (Book_name) ให�เป'นผ��แต(งช้-$อสำมโช้ค์

ค์าสำ�$ง SQL : DMLUPDATE : แก�ไข้ข้�อม�ลใน Table

ต�วัอย(าง•UPDATE Book

SET Author = ’สำมค์วัร’, publisher=‘ดอกหญ้�า’WHERE Book_id = ‘00015’;แก�ไข้ข้�อม�ลผ��แต(ง (Author) โดยให�แก�ไข้เฉพิ่าะหน�งสำ-อท)$ม)รห�สำ 00015 (Book_id) ให�เป'นผ��แต(งช้-$อสำมโช้ค์ และสำาน�กพิ่�มพิ่ ดอกหญ้�า

ต�วัอย(าง: UPDATE แบบไม(ระบ�แถุวั

UPDATE EmployeesSET Name = “FOX”

UPDATE EmployeesSET Name = “FOX”

EmpID

Name

01 ANT02 BAT03 CAT04 DOG

EmployeesEmployees

EmpID

Name

01 FOX02 FOX03 FOX04 FOX

EmployeesEmployees

ต�วัอย(าง: UPDATE แบบระบ�แถุวั (WHERE)

UPDATE EmployeesSET Name = “FOX”WHERE EmpID = “04”

UPDATE EmployeesSET Name = “FOX”WHERE EmpID = “04”

EmpID

Name

01 ANT02 BAT03 CAT04 DOG

EmployeesEmployees

EmpID

Name

01 ANT02 BAT03 CAT04 FOX

EmployeesEmployees

ค์าสำ�$ง SQL : DMLDELETE : ลบแถุวั (Row) ออก

จัากตารางร�ปแบบการใช้�ค์าสำ�$ง

DELETE FROM ช้-$อตารางWHERE เง-$อนไข้;

ต�วัอย(างDELETE FROM PRODUCT

WHERE P_CODE = 'P0000016';

DELETE FROM PRODUCTWHERE P_MIN = 5;

ต�วัอย(าง: DELETE แบบระบ�แถุวั (WHERE)

DELETE FROM EmployeesWHERE EmpID = “04”

DELETE FROM EmployeesWHERE EmpID = “04”

EmployeesEmployees

EmpID

Name

01 ANT02 BAT03 CAT

EmployeesEmployees

EmpID

Name

01 ANT02 BAT03 CAT04 FOX

ต�วัอย(าง: DELETE แบบไม(ระบ�แถุวั

DELETE FROM Employees

DELETE FROM Employees

EmployeesEmployees

EmpID

NameEmployeesEmployees

EmpID

Name

01 ANT02 BAT03 CAT04 FOX

3. Data Control Language : DCL

เป'นค์าสำ�$งท)$ใช้�ในการกาหนดสำ�ทธ์�การใช้�งานในฐานข้�อม�ล

ต�วัอย(างค์าสำ�$ง เช้(น GRANT เป'นค์าสำ�$งให�สำ�ทธ์�=ผ��ใช้� (User)

อ�างอ�งDatabase system : Design, Implementation & Management 6th edition, Rob & Coronel

ระบบฐานข้�อม�ล รศ . ดร . วั�เช้)ยร เปรมช้�ยสำวั�สำด�=ระบบฐานข้�อม�ล รศ . ศ�ร�ล�กษณ โรจันก�จั

อานวัยhttp://www.thaicreate.com/tutorial/sql.html

Recommended