ประเภทคำสั่งของภาษา SQL
- ภาษานิยามข้อมูล (Data Definition Language : DDL)
- ภาษาจัดการข้อมูล (Data Manipulation Language : DML)
- ภาษาที่ใช้ควบคุมข้อมูล (Data Control Language : DCL)
ภาษา SQL ที่โต้ตอบได้ (Interactive SQL)
ใช้เพื่อปฏิบัติงานกับฐานข้อมูลโดยตรง โดยเรียกดูข้อมูลได้ในขณะที่ทำงาน เพื่อให้ได้ผลลัพธ์ที่นำไปใช้ได้ (เป็นการใช้ภาษา SQL ตรง ๆ กับระบบฐานข้อมูลโดยไม่ผ่านภาษาอื่น ๆ)
SELECT * FROM Student;
ภาษา SQL ที่ฝังในโปรแกรม (Embedded SQL)
เป็นการใช้ภาษาอื่น ๆ เข้ามาช่วยในการเรียกใช้งานภาษา SQL เพื่อเพิ่มประสิทธิภาพ ความสามารถของภาษา SQL ให้มากยิ่งขึ้น
mysql.excute( "SELECT * FROM Student", (err,result)=>{ console.log(result); } )
การสร้าง TABLE (Create Table)
CREATE TABLE <ชื่อตาราง> ( <ชื่อ_column_1> <ประเภทข้อมูล_1> [OPTIONAL_1...], <ชื่อ_column_2> <ประเภทข้อมูล_2> [OPTIONAL_2...], . . . );
ประเภทของข้อมูล (Data Type)
- int: เก็บตัวเลข
- char: เก็บข้อความตัวอักษรที่ไม่เกิน 255 อักษร
- varchar: เก็บข้อความตัวอักษรที่ไม่เกิน 4000 อักษร
- text: เก็บข้อความตัวอักษรที่มีความยาวมาก ๆ
- date: เก็บข้อมูลเฉพาะวันที่เท่านั้น
- time: เก็บข้อมูลเฉพาะเวลาเท่านั้น
- datetime: เก็บข้อมูลวันที่และเวลา
- decimal: เก็บทศนิยม
- double: เก็บทศนิยมที่มีความยาวมาก ๆ
โดยหากใส่วงเล็บ (x) ท้ายประเภทตัวแปร จะเป็นการกำหนดขนาดที่สามารถเก็บได้ เช่น
CREATE TABLE Student ( std_id int(13), name varchar(255), lastname varchar(255) ); // สร้างตาราง Student มี Field std_id เก็บตัวเลขได้ไม่เกิน 13 หลัก // name เป็น varchar เก็บไม่เกิน 255 ตัวอักษร // lastname เป็น varchar เก็บไม่เกิน 255 ตัวอักษร
OPTIONAL สามารถใส่การกำหนดค่าเพิ่มเติมได้ เช่น
- NOT NULL: ห้ามว่าง
- UNIQUE: เป็นเอกลักษณ์
- PRIMARY KEY: เป็นคีย์หลัก
CREATE TABLE Student ( std_id int(13) NOL NULL UNIQUE PRIMARY KEY, name varchar(255) NOT NULL, lastname varchar(255) NOT NULL ); // สร้างตาราง Student มี Field std_id เก็บตัวเลขได้ไม่เกิน 13 หลัก // เป็น primary key ห้ามว่าง และเป็นเอกลักษณ์ // name เป็น varchar เก็บไม่เกิน 255 ตัวอักษร และห้ามว่าง // lastname เป็น varchar เก็บไม่เกิน 255 ตัวอักษร และห้ามว่าง --------------------------- // กรณีต้องการให้ Column มากกว่า 1 เป็น Primary Key CREATE TABLE Student ( std_id int(13) NOL NULL, name varchar(255) NOT NULL, lastname varchar(255) NOT NULL, PRIMARY KEY(name, lastname) );
การสร้างตารางโดยมี Foreign Key
FOREIGN KEY (<column_name>) REFERENCES <ตารางที่เชื่อม>(<คอลัมน์ตารางที่เชื่อม>)
ตัวอย่าง
CREATE TABLE Student ( std_id int(13) NOL NULL UNIQUE PRIMARY KEY, name varchar(255) NOT NULL, lastname varchar(255) NOT NULL, consultant_id int(10), FOREIGN KEY (consultant_id) REFERENCES Consultant_table(consultant_id) );
การลบ TABLE (Drop Table)
DROP TABLE <ชื่อตาราง>;
การแก้ไขตาราง (Alter Table)
// เพิ่ม Column ALTER TABLE <ชื่อตาราง> ADD <ชื่อ_column> <ประเภท (ขนาด)>;
// แก้ไขประเภท ALTER TABLE <ชื่อตาราง> MODIFY <ชื่อ_column> <ประเภทที่ต้องการเปลี่ยน (ขนาด)>; // แก้ไขชื่อ ALTER TABLE <ชื่อตาราง> RENAME <ชื่อ_column เดิม> TO <ชื่อ_column ใหม่>;
การสร้างดัชนี (Create Index)
CREATE UNIQUE INDEX <ชื่อ_index> ON <ชื่อตาราง>(<column1,...>);
การลบดัชนี (Drop Index)
DROP INDEX <ชื่อ_index>;
การเพิ่มข้อมูลเข้าตาราง (Insert)
// แบบกำหนด Column อันไหนว่างจะได้ค่าว่างหากไม่ได้กำหนด NOl NULL INSERT INTO <ชื่อตาราง>(column1,column2,...) VALUES (<ค่า1>,<ค่า2>,...); // แบบไม่กำหนด Column (VALUES ต้องเท่ากับจำนวน Column ไม่รวม Auto Increment) INSERT INTO <ชื่อตาราง> VALUES (<ค่า1>,<ค่า2>,...);
การเพิ่มข้อมูลเข้าตาราง (Insert) โดยใช้การ SELECT จากอีกตาราง
INSERT INTO <ชื่อตาราง>
SELECT statement;
// เช่น
INSERT INTO 'BANGKOKSTAFF'
SELECT * FROM 'SALESTAB' WHERE ADDRESS = 'Bangkok';
การปรับปรุงค่า (Update)
UPDATE <ชื่อตาราง> SET <column1>="<ค่า>",<column2>="<ค่า>", . . .
WHERE <เงื่อนไขที่ตรงกันแล้วจึงแก้ไขค่า>;
// หากต้องการ Update ทั้งหมดไม่ต้องใส่ WHERE
// เช่น
UPDATE Student SET name="Wutthiphon",lastname="Tassana"
WHERE student_id=6504062620116;
การลบแถว (Delete)
DELETE FROM <ชื่อตาราง>
WHERE <เงื่อนไขที่ตรงกันแล้วจึงลบค่า>;
// หากต้องการลบทั้งหมดไม่ต้องใส่ WHERE
// เช่น
DELETE FROM Student
WHERE student_id=6504062620116;
การเลือกข้อมูล (Select)
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง> WHERE <เงื่อนไขในการเลือก>
การเลือกข้อมูลโดยตัดตัวซ้ำ (Select Distinct)
SELECT DISTINCT <column ที่ต้องการให้เช็คแล้วตัดตัวซ้ำ> FROM <ชื่อตาราง> WHERE <เงื่อนไขในการเลือก>
การเลือกข้อมูลโดยการเรียงข้อมูล (Select Order)
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง> WHERE <เงื่อนไขในการเลือก> ORDER BY <ต้องการให้เรียงจาก column> ASC/DESC // ASC คือการเรียงจาก น้อยไปมาก // DESC คือการเรียงจาก มากไปน้อย
การเลือกข้อมูลโดยการหาค่าที่ประกอบด้วย (Select Contain)
เป็นการหาค่าใน Column ที่ต้องประกอบไปด้วย
- % ค่าที่ไม่ทราบหลายตัว
- _ ค่าที่ไม่ทราบตัวเดียว
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง> WHERE <column_name> LIKE ("%วุ%") // หาข้อมูลใน Column ที่ประกอบด้วย <อักษรที่ไม่ทราบ>วุ<อักษรที่ไม่ทราบ> SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง> WHERE <column_name> LIKE ("วุ%") // หาข้อมูลใน Column ที่ประกอบด้วย วุ<อักษรที่ไม่ทราบ>
การเลือกข้อมูลโดยมีหลายการตรวจสอบ (Select AND/OR)
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง> WHERE <เงื่อนไขในการเลือก1> AND <เงื่อนไขในการเลือก2> // AND และ // OR หรือ
การเลือกข้อมูลโดยมีหลายรายการเป็น List (Select IN)
มีค่าเท่ากับการใช้ Select OR หลาย ๆ ตัวต่อกัน
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง>
WHERE <column1> IN (<ชุดข้อมูลที่จะเช็ค>)
เช่น
SELECT * FROM Student
WHERE name IN ("อชิรวิชญ์","ฉัตรณภัทร์","วุฒิพร","ปิยบุตร")
การเลือกข้อมูลโดยมีใช้งานร่วมกับ Table อื่น (Join)
ประเภทการ JOIN
- LEFT JOIN: การเชื่อมโยงข้อมูลโดยเอาฝั่งซ้ายเป็นหลัก
- RIGHT JOIN: การเชื่อมโยงข้อมูลโดยเอาฝั่งขวาเป็นหลัก
- OUTER JOIN: การเชื่อมโยงข้อมูลโดยเอาข้อมูลจากทั้ง 2 table ทั้งหมด
- INNER JOIN: การเชื่อมโยงข้อมูลโดยเอาข้อมูลจากทั้ง 2 table เฉพาะที่ตรงกัน
SELECT <column,... หรือ * ทั้งหมด> FROM <ชื่อตาราง>
LEFT JOIN <table2> ON <table1.foreign_key>=<table2.primary_key>
การเลือกข้อมูลโดยมีการสร้างตัวแปรเพิ่ม
SELECT <column> AS <column ใหม่> FROM <ชื่อตาราง> WHERE <เงื่อนไขในการเลือก1>
โดยสามารถประยุกต์ใช้กับ Aggreate Column ได้
Aggreate Column
ให้ผลของคาสั่งออกมาเพียง 1 คอลัมน์ ใช้กับข้อมูลที่เป็นตัวเลข
- COUNT(X): นับจำนวน
- SUM(X): หาผลรวม
- AVG(X): หาค่าเฉลี่ย
- MAX(X): หาค่าที่มากที่สุด
- MIN(X): หาค่าที่น้อยที่สุด
- VARIANC(X): หาส่วนเบี่ยงเบียนมาตรฐานยกกำลัง2
- STDDEV(X): หาส่วนเบี่ยงเบียนมาตรฐาน
- ABS(X): หาค่าสมบูรณ์
- CEIL(X): ให้ตัวเลขจำนวนเต็มที่มีค่า > หรือ = ใน Column
- FLOOR(X): เช็คการปัดทศนิยมจากการแบ่งครึ่ง .5
เช่น
SELECT COUNT(age) AS age_more_than_18 FROM Student
WHERE Age > 18
// นับจำนวนแถวที่มีค่าใน column->age มากกว่า 18
SELECT SUM(salary) AS sum_salary,
SUM(age) AS sum_age
FROM Teacher
// หาผลรวมของ salary และ age
Post Views: 122