เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (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
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
(
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)
);
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
รูปแบบการใช้งาน
Database : MySQL,Microsoft Access,SQL Server
Syntax
นอกจาก SELECT แล้วยังสามารถทำมาเป็น WHERE ได้ด้วย เช่น
Table : audit
Sample1 การเลือกข้อมูลจากตาราง audit โดยแสดงวันที่ และทำการ WHERE เดือน และ ปี ที่ต้องการ
Output
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
หรือ
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 Database : MySQL,Microsoft Access,SQL Server
Syntax
SELECT DAY(Column)
SELECT MONTH(Column)
SELECT YEAR(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'
หรือ
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 |
ที่มา http://www.thaicreate.com/tutorial/sql.html