คำสั่ง SQL
ภาษา SQL
(สามารถอ่านออกเสียงได้ 2 แบบ
คือ “เอสคิวแอล” (SQL) หรือ “ซีเควล” (Sequel)
ย่อมมาจาก Structured
Query Language หรือภาษาในการสอบถามข้อมูล
เป็นภาษาทางด้านฐานข้อมูล
ที่สมารถสร้างและปฏิบัติการกับฐานข้อมูลแบบสัมพันธ์ (Relational
Database) โดยเฉพาะ
และเป็นภาษาที่มีลักษณะคลายกับภาษาอังกฤษ
ภาษา SQL ถูกพัฒนาขึ้นจากแนวคิดของ
Relational Calculus และ Relational Algebra เป็นหลัก ภาษา SQL เริ่มพัฒนาครั้งแรกโดย
Almaden Research Center ของบริษัท IBM โดยมีชื่อเริ่มแรกว่า “ซีเควล” (Sequel)
ต่อมาได้เปลี่ยนชื่อเป็น “เอสคิวแอล” (SQL) หลังจากนั้นภาษาSQL ได้ถูกนำมาพัฒนา
โดยผู้ผลิตซอฟต์แวร์ด้านระบบจัดการฐานข้อมูลเชิงสัมพันธ์จนเป็นที่นิยมกันอย่างแพร่หลายในปัจจุบัน
โดยผู้ผลิตแต่ละรายก็พยายามที่จะพัฒนา ระบบจัดการฐานข้อมูลของตนให้มีลักษณะเด่นเฉพาะขึ้นมา
ทำให้รูปแบบการใช้คำสั่งSQL มีรูปแบบที่แตกต่างกันไปบ้างเช่น Oracle Access SQL Base
ของ Sybase
Ingres หรือ SQL Server ของ Microsoft เป็นต้นดังนั้นในปี ค.ศ. 1986ทางด้าน
American National Standards
Institute (ANSI) จึงได้กำหนดมาตรฐานของ SQL ขึ้น อย่างไรก็ดี
โปรแกรมฐานข้อมูลที่ขายในท้องตลาดได้ขยาย SQL ออกไปจนเกินข้อกำหนดของ ANSI
โดยเพิ่มคุณสมบัติอื่น
ๆ ที่คิดว่าเป็นประโยชน์เข้าไปอีก
แต่โดยหลักทั่วไปแล้วก็ยังปฏิบัติตาม
มาตรฐานของ ANSI ในการอธิบายคำสั่งต่าง ๆ ของภาษาSQL ประเภทของคำสั่งในภาษา SQL
ภาษา SQL เป็นภาษาที่ใช้งานได้ตั้งแต่ระดับเครื่องคอมพิวเตอร์ส่วนบุคคลพีซีไปจนถึงระดับเมนเฟรม
ประเภทของคำสั่งในภาษา
(SQL The Subdivision of SQL) แบ่งออกเป็น 3 ประเภท คือ
1. ภาษาสำหรับการนิยามข้อมูล(Data
Definition Language :DDL) ประกอบด้วยคำสั่งที่ใช้
ในการกำหนดโครงสร้างข้อมูลว่ามีคอลัมน์อะไร
แต่ละคอลัมน์เก็บข้อมูลประเภทใด
รวมถึงการเพิ่มคอลัมน์การกำหนดดัชนี
การกำหนดวิวหรือตารางเสมือนของผู้ใช้ เป็นต้น
2. ภาษาสำหรับการจัดการข้อมูล
(Data Manipulation Language :DML) ประกอบด้วยคำสั่งที่ใช้ใน
การเรียกใช้ข้อมูลการเปลี่ยนแปลงข้อมูลการเพิ่มหรือลบข้อมูล
เป็นต้น
3. ภาษาควบคุม (Data
Control Language : DCL)ประกอบด้วยคำสั่งที่ใช้ใน การควบคุมการเกิด
ภาวะพร้อมกัน หรือการป้องกันการเกิดเหตุการณ์ที่ใช้หลายคนเรียกใช้ข้อมูลพร้อมกัน
และคำสั่งที่เกี่ยวข้องกับการควบคุม ความปลอดภัยของข้อมูลด้วยการกำหนดสิทธิ์ของผู้ใช้ที่แตกต่าง
เป็นต้น
ตัวอย่าง คำสั่ง
1.สร้าง DATABASE
mysql> create database <ชื่อdatabase>;
เช่น create
database world;
2.สร้าง table
mysql> create table <ชื่อtable> (<ชื่อข้อมูล><ชนิดข้อมูล>, ... );
เช่น create
table human (name VARCHAR(20), birth DATE, sex CHAR(1));
ชนิดข้อมูล เช่น
VARCHAR(n) - ข้อมูลชนิด string เก็บแบบ linked list เหมาะสมกับข้อมูลที่มีความยาวที่ไม่แน่นอน
CHAR(n) - ข้อมูลชนิด string เก็บแบบ array เหมาะสมกับข้อมูลที่มีความยาวที่แน่นอน
INT - จำนวนเต็ม
DATE - ข้อมูลชนิดพิเศษของ SQL ใช้เก็บวันที่ มีรูปแบบเป็น YYYY-MM-DD
3.การสืบค้นข้อมูล
หรือการดูข้อมูล
SELECT <สิ่งที่ต้องการ>
FROM <ชื่อtable>
WHERE <เงื่อนไขอื่นๆ>
เช่นต้องการชื่อของข้อมูลในตาราง human ที่มีมีเพศชาย
SELECT name
FROM human
WHERE sex = ‘M’;
ต้องการดูข้อมูลทั้งหมดในตาราง human
[* คือทั้งหมด]
SELECT *
FROM human;
ซึ่งการกำหนดเงื่อนไขนั้นเราสามารถใช้ตัวแปรทางคณิตศาสตร์ตรรกะ
มาช่วยได้เช่น
AND และ
OR หรือ
<น้อยกว่า
>มากกว่า
<= น้อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
<>ไม่เท่ากับ
UNION การนำ 2 ตารางมาเชื่อมต่อกันตัดตัวซ้ำ
UNION ALL การนำ 2 ตารางมาเชื่อมกันโดยไม่ตัดตัวซ้ำ
INTERSECT ข้อมูลที่ซ้ำกัน
4.ORDER BY เรียงลำดับข้อมูล
การจัดกลุ่มข้อมูล
เรียงลำดับจากมากไปน้อย
(descending order)
เช่น SELECT
*
FROM human
ORDER BY name;
เรียงลำดับจากน้อยไปมาก
(descending order)
เช่น SELECT
*
FROM human
ORDER BY name DESC;
ถ้าต้องการมากกว่าอันนึงก็ย่อมได้
เช่น SELECT
*
FROM human
ORDER BY name , sex DESC ;
แบบนี้จะจัดตามชื่อแบบ ascending ก่อนแล้วจะมาจัดเพศแบบ descending ทีหลัง
5.การใช้ตัวแปร NULL ในเงื่อนไข
ใช้คำสั่ง xxx
IS NOT NULL เช่นต้องการดูสิ่งมีชีวิตที่ไม่มีเพศ
SELECT *
FROM human
WHERE sex IS NOT NULL;
6.การตั้งชื่อเป็นชื่อที่เราต้องการ
หมายถึงเวลา select บางทีคนทั่วไปอาจจะไม่เข้าใจว่าคืออะไร เราจึงมีคำสั่ง AS ช่วย เช่น
SELECT name AS ‘NAME-SURNAME’
FROM human;
7.COUNTการนับจำนวน + GROUP
BY การจัดกลุ่ม
COUNT ใช้ในการนับจำนวนของตารางต่างๆ
จะใช้คู่กับ GROUP BY ได้ดีเพราะจะช่วยในการจัดกลุ่มชุดข้อมูลได้ดีขึ้น
SELECT <อื่นๆ>COUNT(*)
FROM <ชื่อtable>
WHERE <เงื่อนไข>
GROUP BY <จัดกลุ่มโดยใช้อะไร>
เช่นต้องการนับจำนวนคนในแต่ละเพศ
SELECT sex , COUNT(*)
FROM human
GROUP BY sex;
SET การกำหนดตัวแปร
SET @<ชื่อตัวแปร>
= <ค่า>
เช่น SET
@A1 = ‘NatsuSencho’;
SET @A2 = ‘1999-09-09’;
8.คำสั่งแบบหลายเงื่อนไข
Select <filed_1 , filed_2
, … , filed_n / * >
From <Table_name>
Where < condition-1 >
<And / Or
><condition-2> ;
And ให้ผลเหมือนการ Intersection
Or ให้ผลเหมือนการ Union
เช่น Select
* from work
Where proj_num = 15 ; (เลือกข้อมูลการทำงานโครงการ 15)
Select * from work
Where hours > 3 ; (เลือกข้อมูลการทำงานที่มากกว่า 3 ชั่วโมง)
Select * from employee
where job =
"Programmer" ; (เลือกพนักงานที่เป็น Programmer)
9.คำสั่งแบบหลายเงื่อนไข
Select <filed_1 , filed_2
, … , filed_n / * >
From <Table_name>
Where < condition-1 >
<And / Or ><condition-2>
;
And ให้ผลเหมือนการ Intersection
Or ให้ผลเหมือนการ Union
เช่น select
* from work
whereproj_num =
15 and hours > 3 ;
(เลือกพนักงานที่ทำงานโครงการ 15 และทำงานมากกว่า 3ชั่วโมง : ต้องอยู่โครงการ 15)
select * from work
whereproj_num = 15 or hours
> 3 ;
(เลือกพนักงานที่ทำงานโครงการ 15 หรือทำงานมากกว่า 3ชั่วโมง :
อาจทำงานอยู่โครงการอื่น)
10.คำสั่งที่มีการใช้งานหลายตาราง
(join)
Select <filed_1 , filed_2
, … , filed_n / * >
From <table_1 , table_2 ,
…, table_n>
Where < condition-1 > ;
1. ต้องมีการเชื่อม PK และ FK ของทั้งสองตารางเข้าด้วยกัน (Join)
2.หากมี field ใดที่ชื่อซ้ำกันทั้งสองตาราง
เมื่ออ้างถึง ต้อง ระบุชื่อตาราง ตามด้วยชื่อฟิลด์ เช่น
work.emp_numหรือ employee.emp_num
เช่น Select
employee.emp_num , emp_name , hours
From employee ,
work
Where employee.emp_num =
work.emp_num ;
( แสดงข้อมูลรหัสพนักงาน
ชื่อพนักงาน และชั่วโมงทำงาน
เนื่องจาก
ชื่อพนักงาน อยู่คนละตารางกับ ข้อมูลชั่วโมงทำงาน
จึงต้องมีการ join ตารางที่มีข้อมูลเข้าด้วยกัน)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น