SQL
SQL
SELECT
เป็นคำสั่งที่ใช้สำหรับการเรียกดูข้อมูลในตาราง (Table) คำสั่ง SQL SELECT สามารถเรียกได้ทั้งตาราง หรือว่า สามารถระบุฟิวด์ที่ต้องการเรียกดูข้อมูลได้
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name]
เป็นคำสั่งที่ใช้สำหรับการเรียกดูข้อมูลในตาราง (Table) คำสั่ง SQL SELECT สามารถเรียกได้ทั้งตาราง หรือว่า สามารถระบุฟิวด์ที่ต้องการเรียกดูข้อมูลได้
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name]
Table
: customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 การเลือกข้อมูลที่ระบุฟิวด์
SELECT CustomerID, Name, Email FROM customer
Output
CustomerID
|
Name
|
Email
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
Sample2 การเลือกข้อมูลทั้งหมดของ Table
SELECT * FROM customer
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.smith@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
SQL
SELECT
เป็นคำสั่งที่ใช้สำหรับการเรียกดูข้อมูลในตาราง (Table) คำสั่ง SQL SELECT สามารถเรียกได้ทั้งตาราง หรือว่า สามารถระบุฟิวด์ที่ต้องการเรียกดูข้อมูลได้
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name
Table : customer
เป็นคำสั่งที่ใช้สำหรับการเรียกดูข้อมูลในตาราง (Table) คำสั่ง SQL SELECT สามารถเรียกได้ทั้งตาราง หรือว่า สามารถระบุฟิวด์ที่ต้องการเรียกดูข้อมูลได้
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name
Table : customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 การเลือกข้อมูลที่ระบุฟิวด์
SELECT CustomerID, Name, Email FROM customer
Output
CustomerID
|
Name
|
Email
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
Sample2 การเลือกข้อมูลทั้งหมดของ Table
SELECT * FROM customer
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.smith@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
SQL OR AND
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) การเชื่อมวลีสำหรับเงื่อนไขต่าง ๆ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) การเชื่อมวลีสำหรับเงื่อนไขต่าง ๆ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT
Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] = 'Value' [AND/OR]
[Field] = 'Value'
Table : customer
Table : customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 การเลือกข้อมูลที่ CountryCode = US และ Used = 100000
SELECT
* FROM customer WHERE CountryCode = 'US' AND Used = '100000'
หรือ
SELECT * FROM customer WHERE CountryCode = 'TH' OR CountryCode = 'EN'
หรือ
SELECT * FROM customer WHERE CountryCode = 'TH' OR CountryCode = 'EN'
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
SQL
SUB SELECT QUERY
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยใช้เลือกข้อมูลย่อยภายใน SELECT ย่อยอีกชั้นหนึ่งครับSUB SELECT QUERY เข้ามาช่วยในด้านความสะดวกและง่ายกว่าการ JOIN TABLE แต่ข้อเสียของ SUB SELECT คือ สามารถทำงานได้ช้ากว่า JOIN TABLE
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] IN (SELECT ..... FROM ....)
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยใช้เลือกข้อมูลย่อยภายใน SELECT ย่อยอีกชั้นหนึ่งครับSUB SELECT QUERY เข้ามาช่วยในด้านความสะดวกและง่ายกว่าการ JOIN TABLE แต่ข้อเสียของ SUB SELECT คือ สามารถทำงานได้ช้ากว่า JOIN TABLE
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] IN (SELECT ..... FROM ....)
Table
: customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Table : audit
AuditID
|
CustomerID
|
Date
|
Used
|
1
|
C001
|
2008-07-01
|
100000
|
2
|
C001
|
2008-07-05
|
200000
|
3
|
C001
|
2008-07-10
|
300000
|
4
|
C002
|
2008-07-02
|
400000
|
5
|
C002
|
2008-07-07
|
100000
|
6
|
C002
|
2008-07-15
|
300000
|
7
|
C003
|
2008-07-20
|
400000
|
8
|
C003
|
2008-07-25
|
200000
|
9
|
C004
|
2008-07-04
|
100000
|
Sample1 การเลือกข้อมูลตาราง customer ที่เชื่อมโยงกับตาราง audit ที่มีการใช้ยอดเงินในแต่ล่ะครั้งมากกว่า 400000
SELECT * FROM customer WHERE CustomerID IN (SELECT CustomerID FROM audit WHERE Used >= '400000')
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.smith@thaicreate.com
|
US
|
3000000
|
600000
|
SQL
IN
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยเลือกเฉพาะค่าที่กำหนด
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name] WHERE [Field] IN ('Value1','Value2')
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยเลือกเฉพาะค่าที่กำหนด
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1, Column2, Column3,... FROM [Table-Name] WHERE [Field] IN ('Value1','Value2')
Table
: customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 การเลือกข้อมูลที่
CustomerID = C002 และ C003
SELECT * FROM customer WHERE CustomerID IN ('C002','C003')
SELECT * FROM customer WHERE CustomerID IN ('C002','C003')
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.smith@thaicreate.com
|
US
|
3000000
|
600000
|
SQL
FIRST
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยเลือกข้อมูล แถวแรกของข้อมูลที่พบ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT FIRST(ColumnName) FROM TableName
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยเลือกข้อมูล แถวแรกของข้อมูลที่พบ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT FIRST(ColumnName) FROM TableName
Table
: customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 การเลือกข้อมูลแบบด้วย FIRST ในตาราง customer
SELECT FIRST(Name) As Name FROM customer
SELECT FIRST(Name) As Name FROM customer
Output
Name
|
Weerachai
Nukitram
|
MYSQL
ADDDATE()
เป็นคำสั่งของ MySQL กับ DateTime โดย ADDDATE ใช้ในการหา เพิ่มหรอลดค่าของวันที่
Database : MySQL
Syntax
เป็นคำสั่งของ MySQL กับ DateTime โดย ADDDATE ใช้ในการหา เพิ่มหรอลดค่าของวันที่
Database : MySQL
Syntax
ADDDATE(date,INTERVAL
expr unit), ADDDATE(expr,days)
expr argument for each unit value.
unit Value
|
Expected expr Format
|
MICROSECOND
|
MICROSECONDS
|
SECOND
|
SECONDS
|
MINUTE
|
MINUTES
|
HOUR
|
HOURS
|
DAY
|
DAYS
|
WEEK
|
WEEKS
|
MONTH
|
MONTHS
|
QUARTER
|
QUARTERS
|
YEAR
|
YEARS
|
SECOND_MICROSECOND
|
'SECONDS.MICROSECONDS'
|
MINUTE_MICROSECOND
|
'MINUTES:SECONDS.MICROSECONDS'
|
MINUTE_SECOND
|
'MINUTES:SECONDS'
|
HOUR_MICROSECOND
|
'HOURS:MINUTES:SECONDS.MICROSECONDS'
|
HOUR_SECOND
|
'HOURS:MINUTES:SECONDS'
|
HOUR_MINUTE
|
'HOURS:MINUTES'
|
DAY_MICROSECOND
|
'DAYS
HOURS:MINUTES:SECONDS.MICROSECONDS'
|
DAY_SECOND
|
'DAYS
HOURS:MINUTES:SECONDS'
|
DAY_MINUTE
|
'DAYS
HOURS:MINUTES'
|
DAY_HOUR
|
'DAYS HOURS'
|
YEAR_MONTH
|
'YEARS-MONTHS'
|
ทั้งนี้ยังสามารถใช้ INTERVAL เข้ามา + หรือ - ค่าวันที่ได้เช่นเดียวกัน
date
+ INTERVAL expr
unit
date - INTERVAL expr unit
date - INTERVAL expr unit
Sample
SELECT
ADDDATE('2008-01-02', INTERVAL 31 DAY);
-> 2008-02-02
SELECT ADDDATE('2008-01-02', 31);
-> 2008-02-02
-> 2008-02-02
SELECT ADDDATE('2008-01-02', 31);
-> 2008-02-02
MYSQL
DATE_ADD() , DATE_SUB()
SQL
CASE..WHEN
เป็นคำสั่งที่ใช้สำหรับการกำหนดเงื่อนไขการแสดงค่าของฟิวด์ หรือค่าของ Value ถ้าจะให้เข้าใจง่าย ๆ ทางภาษา Syntax ของภาษาทั่วไปก็คือ การใช้ IF...Else...
Database : SQL Server , MySQL
Syntax
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
เป็นคำสั่งที่ใช้สำหรับการกำหนดเงื่อนไขการแสดงค่าของฟิวด์ หรือค่าของ Value ถ้าจะให้เข้าใจง่าย ๆ ทางภาษา Syntax ของภาษาทั่วไปก็คือ การใช้ IF...Else...
Database : SQL Server , MySQL
Syntax
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Table : customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample1 ตัวอย่างนี้จะแสดงการใช้ CASE...WHEN เช่นการกำหนดค่าแสดงผลของ Column ชื่อ CountryCode
SELECT
CustomerID, Name,
CASE CountryCode
WHEN 'TH' THEN 'Thailand'
WHEN 'EN' THEN 'English'
WHEN 'US' THEN 'United states'
ELSE 'Unknown'
END AS Country
FROM customer
CASE CountryCode
WHEN 'TH' THEN 'Thailand'
WHEN 'EN' THEN 'English'
WHEN 'US' THEN 'United states'
ELSE 'Unknown'
END AS Country
FROM customer
CustomerID
|
Name
|
Country
|
C001
|
Win Weerachai
|
Thailand
|
C002
|
John Smith
|
English
|
C003
|
Jame Born
|
United states
|
C004
|
Chalee Angel
|
United states
|
Output
นอกจากนี้ในส่วนของ
THEN
ยังสามารถกำหนดค่า Value ฟิวด์ Column ได้เช่นเดียวกัน
SELECT CustomerID, Name,
CASE CountryCode
WHEN 'TH' THEN Column1
WHEN 'EN' THEN 'Value'
WHEN 'US' THEN Column3
ELSE Column4
END AS Country
FROM customer
SELECT CustomerID, Name,
CASE CountryCode
WHEN 'TH' THEN Column1
WHEN 'EN' THEN 'Value'
WHEN 'US' THEN Column3
ELSE Column4
END AS Country
FROM customer
SQL
CREATE INDEX
เป็นคำสั่งที่ใช้สำหรับการสร้าง Index การ Index ข้อมูลในฟิวด์หรือ Column นั้นตัวฐานข้อมูลจะให้ความสำคัญกับฟิวด์นั้น ๆ โดยจะจัดเรียงต้นแบบ และ แบบแผนที่ง่านต่อการเข้าถึงข้อมูลกลุ่มนั้น ๆ การ Index มีประโยชน์ในการค้นหาข้อมูล และเมื่อมีการใช้ JOIN Table หลาย ๆ ตัว การ Index ฟิวด์ที่มีความสัมพันธ์กัยระหว่าง JOIN จะทำให้การ Query มีประสิทธิ์ภาพมากขึ้น
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
CREATE TABLE "TableName"
(
ColumnName1 DataType ,
ColumnName2 DataType ,
ColumnName3 DataType ,
ColumnName4 DataType ,
...
INDEX (ColumnName1,ColumnName2...)
)
หรือในกรณี ALTER
ALTER TABLE "TabmeName" ADD INDEX (Column1,Column2)
เป็นคำสั่งที่ใช้สำหรับการสร้าง Index การ Index ข้อมูลในฟิวด์หรือ Column นั้นตัวฐานข้อมูลจะให้ความสำคัญกับฟิวด์นั้น ๆ โดยจะจัดเรียงต้นแบบ และ แบบแผนที่ง่านต่อการเข้าถึงข้อมูลกลุ่มนั้น ๆ การ Index มีประโยชน์ในการค้นหาข้อมูล และเมื่อมีการใช้ JOIN Table หลาย ๆ ตัว การ Index ฟิวด์ที่มีความสัมพันธ์กัยระหว่าง JOIN จะทำให้การ Query มีประสิทธิ์ภาพมากขึ้น
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
CREATE TABLE "TableName"
(
ColumnName1 DataType ,
ColumnName2 DataType ,
ColumnName3 DataType ,
ColumnName4 DataType ,
...
INDEX (ColumnName1,ColumnName2...)
)
หรือในกรณี ALTER
ALTER TABLE "TabmeName" ADD INDEX (Column1,Column2)
Table
: customer
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.born@thaicreate.com
|
US
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
CountryCode
|
CountryName
|
TH
|
Thailand
|
EN
|
English
|
US
|
United states
|
Table
: country
Sample
1 ต้องการทำ Index ของ Table customer สำหรับ Column ชื่อ CountryCode (กรณีที่แก้ไข Table)
ALTER TABLE customer ADD INDEX (CountryCode)
ALTER TABLE customer ADD INDEX (CountryCode)
Output
ได้ Index ของ Column CountryCode
Sample 2 การ JOIN Table ที่เป็น Column ที่เป็น Index ระหว่างตาราง customer กับ country เพื่อดึงชื่อประเทศมาแสดง
SELECT a.CustomerID, a.Name, a.Email, b.CountryName, a.Budget, a.Used
FROM customer a, country b
WHERE a.CountryCode = b.CountryCode
ได้ Index ของ Column CountryCode
Sample 2 การ JOIN Table ที่เป็น Column ที่เป็น Index ระหว่างตาราง customer กับ country เพื่อดึงชื่อประเทศมาแสดง
SELECT a.CustomerID, a.Name, a.Email, b.CountryName, a.Budget, a.Used
FROM customer a, country b
WHERE a.CountryCode = b.CountryCode
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win Weerachai
|
win.weerachai@thaicreate.com
|
Thailand
|
1000000
|
600000
|
C002
|
John Smith
|
john.smith@thaicreate.com
|
English
|
2000000
|
800000
|
C003
|
Jame Born
|
jame.smith@thaicreate.com
|
English
|
3000000
|
600000
|
C004
|
Chalee Angel
|
chalee.angel@thaicreate.com
|
United states
|
4000000
|
100000
|
Output