คำสั่ง sql
1.SQL SUBSTRING
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(Table) โดยทำการตัดข้อความในตำแหน่งที่ต้องการ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT SUBSTR(Name,0,2)
As MySubStr FROM 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 การเลือกข้อมูลโดยทำการตัดตำแหน่งที่
1 ถึง 3
SELECT SUBSTR(Name,1,3)
AS MySubStr FROM customer
Output
MySubStr
|
Win
|
Joh
|
Jam
|
Cha
|
Sample2 การเลือกข้อมูลโดยทำการตัดตำแหน่งจากสุดท้ายไปทางซ้าย
3 หลัก และเริ่มนับไปทางขวาอีก 3 หลัก
SELECT SUBSTR(Name,-3,3)
AS MySubStr FROM customer
Output
MySubStr
|
hai
|
ith
|
orn
|
gel
|
2.SQL AUTO_INCREMENT For MySQL
เป็นคำสั่งที่ใช้สำหรับการสร้าง Auto Number หรือตัวเลขรันอัตโนมัติ,
Database : MySQL
Syntax
CREATE TABLE
"TableName"
(
ColumnName1 DataType
AUTO_INCREMENT,
ColumnName2 DataType ,
ColumnName3 DataType ,
ColumnName4 DataType ,
...
PRIMARY KEY
(ColumnName1)
)
หรือในกรณี ALTER
ALTER TABLE
"TabmeName" CHANGE ColumnName1 ColumnName1 DataType AUTO_INCREMENT
Sample 1 ต้องการสร้างตารางชื่อ audit ประกอบด้วย Column ชื่อ AuditID , CustomerID , Date , Used มี AuditID เป็น AUTO_INCREMENT
CREATE TABLE audit (
AuditID int(4) NOT NULL
auto_increment,
CustomerID varchar(4)
NOT NULL,
Date date NOT NULL,
Used double NOT NULL,
PRIMARY KEY (AuditID)
);
โดยค่าจะเริ่มต้นเป็น 1,2,3,4,5,6 .... แต่ถ้าต้องการให้มี
0 ข้างหน่้าเช่น 0001,0002,0003 สามารถใส่
Attributes ชื่อ UNSIGNED ZEROFILL
ALTER TABLE audit CHANGE
AuditID AuditID INT( 4 ) UNSIGNED ZEROFILL NOT NULL
AUTO_INCREMENT
3.SQL NULL / ISNULL เป็นคำสั่งที่ใช้สำหรับการกำหนดเงื่อนไขการแสดงผล
NULL รูปแบบการอ่านค่า
กำหนนดเงื่อนไข ของ Column ในรูปแบบต่าง ๆ
Database : SQL Server
Syntax
NULL , IS NULL , ISNULL
รูปแบบการใช้งาน
SELECT * FROM table
WHERE Column = NULL
หรือ
SELECT * FROM table
WHERE Column IS NULL หรือ Column NOT NULL
SELECT * FROM table
WHERE ISNULL(Column,'1') // ถ้ามีค่าเป็น Null
ให้มีค่าเป็น 1
4.SQL DAY, MONTH, YEAR
เป็นคำสั่งที่ใช้ในการแปลง Format ของวันที่ให้อยู่ในรูปแบบ DAY , MONTH , YEAR
เป็นคำสั่งที่ใช้ในการแปลง Format ของวันที่ให้อยู่ในรูปแบบ DAY , MONTH , YEAR
Database : MySQL,Microsoft Access,SQL Server
Syntax
SELECT DAY(Column)
SELECT MONTH(Column)
SELECT YEAR(Column)
นอกจาก SELECT แล้วยังสามารถทำมาเป็น WHERE
ได้ด้วย เช่น
SELECT * FROM table
WHERE DAY(Column) = 1 and MONTH(Column) = 07 and YEAR(Column) = 2008
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 การเลือกข้อมูลจากตาราง audit
โดยแสดงวันที่ และทำการ WHERE เดือน และ ปี
ที่ต้องการ
SELECT DAY(Date) As
ListDay FROM audit WHERE MONTH(Date) = '7' AND YEAR(Date) = '2008'
Output
ListDay
|
01
|
05
|
10
|
02
|
07
|
15
|
20
|
25
|
04
|
5.
SQL GROUP_CONCAT
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการ Group Column และนำข้อมูลที่อยู่ใน Group เดียวกันมาต่อกันด้วยเครื่องหมายต่าง ๆ เช่น Comma (,) Database : MySQL, Syntax
SELECT GROUP_CONCAT(Column/Field)
AS [Nw-Fie
ld] FROM [Table-Name] GROUP BY
Column/Filed
Table : customer
Sample1 การเลือกข้อมูล ลูกค้า ในแต่ล่ะประเทศ และนำข้อมูลมาต่อกันด้วยเครื่องหมาย Comma (,)
SELECT CountryCode , GROUP_CONCAT(Name
SEPARATOR ',') FROM customer GROUP BY CountryCode
Output
|
6.SQL OR AND
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(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
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'
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
|
7.SQL LIMIT
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(Table) ที่สามารถกำหนดจำนวน Record
ที่แสดงผลออกมาได้
Database : MySQL
Syntax
SELECT Column1, Column2,
Column3,... FROM [Table-Name] ORDER BY [Fields] [ASC/DESC] LIMIT [Int-Start]
, [Int-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 การเลือกข้อมูลที่มีการใช้ยอดเงินมากที่สุดจำนวน
2 Record
SELECT * FROM customer
ORDER BY Used DESC LIMIT 0,2
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C002
|
John
Smith
|
john.smith@thaicreate.com
|
EN
|
2000000
|
800000
|
C001
|
Win
Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
8.SQL TOP
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(Table) ที่สามารถกำหนดจำนวน Record
ที่แสดงผลออกมาได้
Database : Microsoft Access,SQL Server
Syntax
SELECT TOP [Integer]
Column1, Column2, Column3,... FROM [Table-Name] ORDER BY [Field] [ASC/DESC]
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 การเลือกข้อมูลที่จำนวน Budget
มากที่สุดออกมา 2 Record
SELECT TOP 2
* FROM customer ORDER BY Budget DESC
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C004
|
Chalee
Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
C003
|
Jame
Born
|
jame.smith@thaicreate.com
|
US
|
3000000
|
600000
|
9.SQL LIKE
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(Table) โดยทำการค้นหาข้อความที่ระบุภายในฟิวด์ที่กำหนด
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT
Column1,Column2,Column3,... FROM [Table-Name] WHERE [Filed] LIKE '%Value%'
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 การเลือกข้อมูลตารางที่ฟิวด์ Name
มีคำว่า ee อยู่
SELECT * FROM customer
WHERE Name LIKE '%ee%'
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win
Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C004
|
Chalee
Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample2 การเลือกข้อมูลตารางที่ฟิวด์ Email
มีคำว่า j นำหน้า
SELECT * FROM customer
WHERE Name LIKE 'j%'
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
|
Sample3 การเลือกข้อมูลตารางที่ฟิวด์ Name
มีคำว่า i ลงท้าย
SELECT * FROM customer
WHERE Name LIKE '%i'
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win
Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
การใช้งาน LIKE ที่หลายเงื่อนไข หรือ OR
ใน Statement สามารถใช้ [x,y] ได้
เช่น
SELECT * FROM customer
WHERE Name LIKE '%[John,jame]%'
10.SQL NOT LIKE
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง
(Table) โดยทำการค้นหาข้อความที่ระบุภายในฟิวด์ที่กำหนด
และไม่แสดง Record ที่ค้นพบ ซึ่งทำหน้าที่ตรงข้ามกับ LIKE
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT
Column1,Column2,Column3,... FROM [Table-Name] WHERE [Filed] NOT LIKE '%Value%'
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 การเลือกข้อมูลตารางที่ฟิวด์ Name
มีไม่มีคำว่า ee อยู่
SELECT * FROM customer
WHERE Name NOT LIKE '%ee%'
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
|
Sample2 การเลือกข้อมูลตารางที่ฟิวด์ Email
ไม่มีคำว่า j นำหน้า
SELECT * FROM customer
WHERE Name NOT LIKE 'j%'
Output
CustomerID
|
Name
|
Email
|
CountryCode
|
Budget
|
Used
|
C001
|
Win
Weerachai
|
win.weerachai@thaicreate.com
|
TH
|
1000000
|
600000
|
C004
|
Chalee
Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|
Sample3 การเลือกข้อมูลตารางที่ฟิวด์ Name
ไม่มีคำว่า i ลงท้าย
SELECT * FROM customer
WHERE Name NOT LIKE '%i'
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
|
C004
|
Chalee
Angel
|
chalee.angel@thaicreate.com
|
US
|
4000000
|
100000
|