ตัวอย่างคำสั่งSQL
1.SQL BETWEEN
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการเลือกเงื่อนไขที่อยู่ระหว่างค่าเริ่มต้นและค่าสิ้นสุด
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] BETWEEN [Value-Start] AND [Value-End]
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการเลือกเงื่อนไขที่อยู่ระหว่างค่าเริ่มต้นและค่าสิ้นสุด
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column1,Column2,Column3,... FROM [Table-Name] WHERE [Field] BETWEEN [Value-Start] AND [Value-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 การเลือกข้อมูลที่ Budget ที่มีค่าตั้งแต่ 1000000 - 3000000
SELECT * FROM customer WHERE Budget BETWEEN '1000000'
AND '3000000'
2.SQL
MYSQL IF
เป็นคำสั่งที่ใช้สำหรับการเลือกข้อมูลโดยสร้างเงื่อนไข IF ในการเลือกข้อมูลต่าง ๆ
Database : MySQL
Syntax
SELECT IF search_condition 'true','false' AS Column
Database : MySQL
Syntax
SELECT IF search_condition 'true','false' AS Column
Table
: customer1
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 แสดงสถานะของการใช้ยอดเงิน ในช่องของ Used ถ้าน้อยกว่า 200000 ให้แสดงคำว่า Low และมากกว่า 200000 ให้แสดงคำว่า Height
SELECT CustomerID,Name,Used,
IF(Used<=200000,'Low','Height') AS Status
FROM customer
Output
CustomerID
|
Name
|
Used
|
Status
|
C001
|
Win
Weerachai
|
600000
|
Height
|
C002
|
John
Smith
|
800000
|
Height
|
C003
|
Jame
Born
|
600000
|
Height
|
C004
|
Chalee
Angel
|
100000
|
Low
|
3. SQL
UCASE , UPPER
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการแปลงตัวอักษรให้เป็นพิมพ์ใหญ่
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT UCASE(ColumnName) FROM table_name
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการแปลงตัวอักษรให้เป็นพิมพ์ใหญ่
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT UCASE(ColumnName) 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 เลือกข้อมูล Column ชื่อ Name โดยแปลงให้เป็นตัวพิมพ์ใหญ่
SELECT UCASE(Name) As Name FROM customer
Output
Name
|
WIN WEERACHAI
|
JOHN SMITH
|
JAME BORN
|
CHALEE ANGEL
|
4. SQL
SYSDATE()
เป็นคำสั่งที่ใช้ในอ่านวันที่ปันจุบันของ Oracle
Database
Database : Oracle Database
Syntax
SELECT SYSDATE()
Database : Oracle Database
Syntax
SELECT SYSDATE()
SELECT * FROM table WHERE Column = SYSDATE()
INSERT INTO table (Column1,Column2) VALUES ('Value1',SYSDATE())
INSERT INTO table (Column1,Column2) VALUES ('Value1',SYSDATE())
5. SQL
LENGTH
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการนับข้อความในตำแหน่งที่ต้องการ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT LENGTH(Name) As MyLength FROM customer
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการนับข้อความในตำแหน่งที่ต้องการ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT LENGTH(Name) As MyLength 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 การเลือกข้อมูลโดยนับความยาวในฟิวด์ Name
SELECT LENGTH(Name) AS MyLength FROM customer
6. SQL
GROUP BY
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยใช้หาผลรวมของคอลัมน์จากแถวใน Column ที่ระบุและทำการรวม Group ภายใต้ Column ที่อยู่หลัง GROUP
BY
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column,SUM(Column) FROM [Table-Name] GROUP BY Column
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
SELECT Column,SUM(Column) FROM [Table-Name] GROUP BY Column
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 โดยแบ่ง Group ตาม CountryCode
SELECT CountryCode,SUM(Budget) AS SumBudget FROM customer GROUP BY CountryCode
Output
CountryCode
|
SumBudget
|
EN
|
2000000
|
TH
|
1000000
|
US
|
7000000
|
7. SQL
TOP
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) ที่สามารถกำหนดจำนวน Record ที่แสดงผลออกมาได้
Database : Microsoft Access,SQL ServerSyntax
SELECT TOP [Integer] Column1, Column2, Column3,... FROM [Table-Name] ORDER BY [Field] [ASC/DESC]
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) ที่สามารถกำหนดจำนวน Record ที่แสดงผลออกมาได้
Database : Microsoft Access,SQL ServerSyntax
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
|
8. SQL
TRIM
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการตัดช่องว่างของข้อความ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
TRIM(' My String ') = 'MyString'
เป็นคำสั่งที่ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยทำการตัดช่องว่างของข้อความ
Database : MySQL,Microsoft Access,SQL Server,Oracle
Syntax
TRIM(' My String ') = 'MyString'
LTRIM(' My String ') = 'MyString '
RTRIM(' My String ') = ' MyString'
RTRIM(' My String ') = ' MyString'
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 Trim(Name) AS MyString FROM customer
Output
MyString
|
Win Weerachai
|
John Smith
|
Jame Born
|
Chalee Angel
|
9.คำสั่ง GRANT และ REVOKE
GRANT ALL PRIVILEGES ON demo TO user1@localhost WITH GRANT
OPTION
REVOKE ALL PRIVILEGES ON demo FROM user1@localhost
- คำสั่ง GRANT เป็นคำสั่งสำหรับการกำหนดสิทธิ์หรือความสามารถใดๆ ให้กับ user
- คำสั่ง REVOKE หรือคำสั่งที่ตรงกันข้ามกับ GRANT คือเป็นการถอนหรือยกเลิกสิทธิ์ใดๆ
จาก user
การใช้คำสั่ง GRANT หรือ REVOKE จะอนุญาตเฉพาะผู้บริหารระบบในการกำหนดสิทธิ์ต่างๆ สำหรับผู้ใช้ MySQL จะแบ่งสิทธิ์ (Privilege) เป็น 4 ระดับ คือ
1. Global level
ระดับบนสุด ครอบคลุมทุก database รายละเอียดสำหรับสิทธิ์ของระดับนี้จะถูกเก็บไว้ในตาราง
mysql.user
2. Database level
ระดับ database ครอบคลุมเฉพาะใน database อันใดอันหนึ่ง เช่น ความสามารถในการกระทำใดๆ
ภายใน database นั้นๆ
รายละเอียดสำหรับสิทธิ์ของระดับนี้ จะถูกเก็บไว้ในตาราง mysql.db และ mysql.host
3. Table level
ระดับ table ครอบคลุมเฉพาะภายในตารางนั้นๆ
เช่น ความสามารถในการกระทำกับ table นั้นๆ
สามารถทำการ select, insert, delete, update ได้หรือไม่ เป็นต้น รายละเอียดสำหรับสิทธิ์ของระดับนี้
จะถูกเก็บอยู่ในตารางmysql.tables_priv
4. Column level
ระดับ column ครอบคลุมเฉพาะฟิลด์ใดฟิลด์หนึ่งภายในตารางข้อมูล
รายละเอียดสำหรับสิทธิ์ของระดับนี้ จะถูกเก็บอยู่ในตาราง mysql.columns_priv
10. คำสั่ง CREATE
TABLE
CREATE TABLE phonebook (id INT (4)
NOT NULL
AUTO_INCREMENT, fname VARCHAR (35) ,
lname VARCHAR (35) ,
email VARCHAR (50) , office VARCHAR
(200) , province CHAR (2) ,
PRIMARY KEY(id), UNIQUE(id),
INDEX(id))
โดยทั่วไปขนาดของตารางข้อมูลหนึ่งๆ
จะมีขนาดไม่เกิน 2G หรือ 4G ขึ้นอยู่กับระบบปฏิบัติการ เราสามารถทำให้ประหยัดเนื้อที่ได้อีกโดยการบีบอัด
(PACK) ข้อมูลดัชนี ซึ่งสามารถให้บีบอัดโดยกำหนดค่า PACK_KEYS=1 การบีบอัดนี้จะทำให้การทำงานช้าลง แต่ก็ประหยัดเนื้อที่ขึ้น
และตามปกติถ้าผู้ใช้ไม่ได้กำหนดให้บีบอัด
ข้อมูลที่เป็นสตริงหรือตัวอักษรก็จะได้รับการบีบอัดข้อมูลอยู่แล้ว
สำหรับข้อมูลตัวเลข ค่าการทำงานปกติจะไม่รับการบีบอัด
เว้นแต่กำหนดการบีบอัดด้วยการใช้ UNION จะใช้กรณีที่ต้องการรวมตารางข้อมูลหลายๆ
ตารางเข้าด้วยกันเป็นอันเดียว ซึ่งจะทำงานกับตารางประเภท MERGE เท่านั้น