วันอาทิตย์ที่ 14 ธันวาคม พ.ศ. 2557

คำสั่ง SQL เบื้องต้น

คำสั่ง SQL เบื้องต้น 


ก่อนอื่นต้องบอกเลยครับว่ามันไม่ได้ดีมากนักสำหรับหน้าเวปนี้เพราะผมอ่านหนังสือและสรุปอย่างคร่าวๆ แล้วรูปแบบมันอาจจะเพี้ยนๆ เพราะผมเขียนใน PAGE แล้วเอา COPY and PASTE ลงเล้ย แบบไม่แก้ไขอันใด tab มั่วไปหมด ถ้าผิดพลาดประการใดต้องขออภัยด้วยครับ

ภาษา SQL นั้นไม่เป็น case sensitive (ตัวเล็ก ตัวใหญ่มีค่าเท่ากัน) และในแต่ละคำสั่งจะถูกปิดด้วย ; (semi-colon) 


(วิธีการลง SQL ใน Window7 : http://natsusencho.blogspot.com/2012/07/mysql-window7.html)

มาเริ่มกันเลย
การเข้าใช้ให้เราเปิด cmd ขึ้นมาและ
$ mysql -u root -p
จากนั้นใส่ password ลงไป
จะเข้าสู่การใช้ 

mysql > (เราจะพิมพ์คำสั่งต่างๆลงไป)

ถ้าต้องการออกใช้
mysql > quit
mysql > show databases; แสดง  databases ทั้งหมดที่เราสร้างขึ้น

mysql > use <ชื่อ database> เป็นการเข้าใช้ database นั้นๆ
mysql > SELECT database(); ดู database ที่เรากำลังใช้อยู่
mysql > show tables; แสดงตารางทั้งหมดที่เราสร้างขึ้นใน database ที่ use

สร้าง DATABASE
mysql > create database  <ชื่อdatabase>;
เช่น create database world;


สร้าง 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
ดูชื่อและชนิดข้อมูลของแต่ละตาราง
mysql > describe <ชื่อtable>;
การใส่ข้อมูลลงไปใน table
1. ใช้คำสั่ง load data จากไฟล์ที่เราเตรียมไว้ โดย default จะแบ่งเนื้อหาโดยใช้ tab แบบนี้จะมีปัญหาเรื่องการใช้ข้อมูลชนิด NULL ซึ่งใช้ \N แทน
mysql > load data local infile ‘natsu.txt’ into table pet;

2.INSERT ใส่ทีละข้อมูล เหมาะกับข้อมูลที่น้อยๆ ที่เราเพิ่มเติมเข้าไป เช่น
mysql > INSERT INTO pet VALUES (‘natsusencho’, ‘1992-03-25’, ‘M’);

3. *ทำ SQL script คือเตรียมไฟล์คำสั่ง sql ไว้แล้วนำมาทำการ source ทีเดวเช่น
ส่วนตัวแนะนำวิธีนี้เพราะเราเขียนทั้งหมดทีเดียวไม่ต้องมาใส่ทีละคำสั่ง นึกออกให้เสร็จที่เดียวแล้ว run ทีเดียวทั้งหมด
  ---- file natsu.sql ----
CREATE TABLE IF NOT EXISTS human (
       name   VARCHAR(20),
       birth DATE, 
sex CHAR(1) );
INSERT INTO human VALUES 
      ( 'NatsuSencho',   '1992-03-25', 'M'),
      ( 'Slime',   '1999-03-03', NULL ),
  ( ‘HeyFemale’ , ‘1993-12-25’ , ‘F’);
----- file natsu.sql -----
หลังจากสร้างเสร็จแล้วก้ลองใช้คำสั่ง
mysql > source natsu.sql;
ก็จะได้ตาราง world หน้าที่มีข้อมูล 3 ตัว
create table IF NOT EXISTS human
คำว่า IF NOT EXISTS หมายถึงการสร้าง table นี้ถ้ายังไม่มี table นี้ ถ้ามีแล้วก็ไม่ต้องสร้าง
มีสร้างก็ต้องมีลบ การลบ table ใช้คำสั่ง
mysql > DELETE FROM <ชื่อtable>;
หลังจากที่สร้างเป็นแล้วต้องสามารถแก้ไขข้อมูลได้
mysql > UPDATE <ชื่อtable> 
SET <ชื่อข้อมูล> = <ข้อมูลใหม่>
WHERE <เงื่อนไขอื่นๆ>;
เช่น UPDATE human SET name = ‘HeyGirl’ WHERE name = ‘HeyFemale’;
การสืบค้นข้อมูล หรือการดูข้อมูล
SELECT <สิ่งที่ต้องการ>
FROM   <ชื่อtable>
WHERE <เงื่อนไขอื่นๆ>
เช่นต้องการชื่อของข้อมูลในตาราง human ที่มีมีเพศชาย
SELECT name
FROM   human
WHERE sex = ‘M’; 
ต้องการดูข้อมูลทั้งหมดในตาราง human [* คือทั้งหมด]
SELECT *
FROM   human;
ซึ่งการกำหนดเงื่อนไขนั้นเราสามารถใช้ตัวแปรทางคณิตศาสตร์ตรรกะ มาช่วยได้เช่น
AND และ 
 OR หรือ
< น้อยกว่า 
 > มากกว่า
<= น้อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
<> ไม่เท่ากับ
UNION การนำ 2 ตารางมาเชื่อมต่อกันตัดตัวซ้ำ
 UNION ALL การนำ 2 ตารางมาเชื่อมกันโดยไม่ตัดตัวซ้ำ
INTERSECT ข้อมูลที่ซ้ำกัน
DISTINCT คือการตัดตัวที่ซ้ำกันออก
เช่น SELECT DISTINCT sex
FROM   human;
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 ทีหลัง
การคำนวณเกี่ยวกับวันที่
ตัวแปร DATE เป็น string ที่มีการเก็บเป็นรูปแบบ YYYY-MM-DD ตัวแปรชนิด DATE สามารถนำมาเทียบค่ากันได้ในระดับ ASCII
CURDATE() จะเป็น function ที่ส่งค่าออกมาเป็นข้อมูลรูปแบบ DATE (YYYY-MM-DD)
YEAR(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของปี (YYYY)
MONTH(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของเดือน (MM)
DAY(<ข้อมูลชนิดdate>)  ส่งค่าออกมาเป็นข้อมูลรูปแบบของวัน (DD)
RIGHT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางขวา
LEFT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางซ้าย
ตัวอย่าง
ex1. ต้องการปีของวันปัจจุบัน YEAR( CURDATE() )
ex2. ต้องการเดือนและวันของปัจจุบัน RIGHT( CURDATE(),5 )
[5 ในที่นี้คือนับจากทางขวามือมา YYYY-MM-DD ก็จะได้ ​MM-DD มา]
การใช้ตัวแปร NULL ในเงื่อนไข
ใช้คำสั่ง xxx IS NOT NULL เช่นต้องการดูสิ่งมีชีิวิตที่ไม่มีเพศ
SELECT *
FROM   human
WHERE sex IS NOT NULL;
การตั้งชื่อเป็นชื่อที่เราต้องการ
หมายถึงเวลา select บางทีคนทั่วไปอาจจะไม่เข้าใจว่าคืออะไร เราจึงมีคำสั่ง AS ช่วย เช่น
SELECT name AS ‘NAME-SURNAME’
FROM   human;
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 = ‘Natsu Sencho’;
SET @A2 = ‘1999-09-09’;
การใช้คำสั่ง JOIN
การ JOIN คือการนำตารางที่มีความสัมพันธ์ของข้อมูลในแต่ละฟิลมาเชื่อมโยงกัน
การ JOIN มี 2 แบบคือ
1. INNER JOIN
2. OUTER JOIN  |--- LEFT JOIN
|--- RIGHT JOIN
INNER JOIN
คือการ JOIN โดยไม่สนใจค่า NULL จะดูเพียงตัวที่เหมือนกันเท่านั้น
สมมติมีตาราง 2 อันชื่อ Ltable และ ​Rtable นำมา JOIN กันโดยมีข้อมูลที่ซ้ำกันคือ id
-- JOIN โดยใช้ ON
SELECT *
FROM Ltable INNER JOIN Rtable ON Ltable.id = Rtable.id;
-- หรือ JOIN โดยใช้ USING
SELECT *
FROM Ltable INNER JOIN Rtable USING (id);
กรณีพิเศษที่ตัวแปรหรือชื่อ Column ซ้ำกันก็สามาใช้ NATURAL JOIN ได้ อย่างในที่นี้เรารุ้ว่า id นั้นซ้ำกันเราก็ไม่ต้องใส่เงื่อนไขใดๆ แต่ใช้ Natural Join เข้ามาช่วยโดย
SELECT *
FROM Ltable NATURAL JOIN Rtable;
OUTER JOIN
  • LEFT JOIN
คือการ JOIN โดยใช้ตัวทางซ้ายเป็นหลักคือ จะแสดงตัวทางซ้ายทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable LEFT JOIN Rtable ON Ltable.id = Rtable.id;
  • RIGHT JOIN
คือการ JOIN โดยใช้ตัวทางขวาเป็นหลักคือ จะแสดงตัวทางขวาทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable RIGHT JOIN Rtable ON Ltable.id = Rtable.id;
นอกจากวิธีการ JOIN ยังมีวิธีที่เรียกว่า Cartesian Product ซึ่งไม่ได้อทิบายไว้ในทีนี้
ถ้ามีโอกาศจะนั่งทำตัวอย่างให้ดูให้เห็นได้ชัดกว่านี้นะครับ แต่ผมสรุปแบบคร่าวๆ ให้พอดู
รวมคำศัพท์คำสั่งที่เจอเพจนี้
CREATE สร้างdatabase, table
INSERT ใส่ข้อมูล
UPDATE อัพเดตข้อมูล
SELECT ต้องการจะดูอะไรบ้าง
FROM จากที่ไหน
WHERE เงื่อนไขอย่างไร
COUNT(*) นับจำนวนของฟิลข้อมูล
GROUP BY จัดกลุ่มข้อมูล
ORDER BY เรียงลำดับข้อมูลโดย
JOIN เชื่อมตาราง
DISTINCT ตัดตัวซ้ำ
AS ใช้คำใหม่ให้กระทัดรัดขึ้น
SET กำหนดตัวแปร
CURDATE() วันที่ปัจจุบัน
YEAR() ปี
MONTH() เดือน
DAY() วัน
RIGHT() ตัดคำจากทางขวา
LEFT() ตัดคำจากทางซ้าย
* ทั้งหมด

วันอาทิตย์ที่ 23 พฤศจิกายน พ.ศ. 2557

ความสามารถของภาษา PHP

ความสามารถของภาษา PHP




ความสามารถของภาษา PHP

1.เป็นภาษาที่มีลักษณะเป็นแบบ Open source ผู้ใช้สามารถ Download และนำ Source code ของ PHP ไปใช้ได้โดยไม่เสียค่าใช้จ่าย

2.เป็นสคริปต์แบบ Server Side Script ดังนั้นจึงทำงานบนเว็บเซิร์ฟเวอร์ ไม่ส่งผลกับการทำงานของเครื่อง Client โดย PHP จะอ่านโค้ด และทำงานที่เซิร์ฟเวอร์ จากนั้นจึงส่งผลลัพธ์ที่ได้จากการประมวลผลมาที่เครื่องของผู้ใช้ในรูปแบบของ HTML ซึ่งโค้ดของ PHP นี้ผู้ใช้จะไม่สามารถมองเห็นได้

3.PHP สามารถทำงานได้ในระบบปฎิบัติการที่ต่างชนิดกัน เช่น Unix, Windows, Mac OS หรือ Risc OS อย่างมีประสิทธิภาพ เนื่องจาก PHP เป็นสคริปต์ที่ต้องทำงานบนเซิร์ฟเวอร์ ดังนั้นคอมพิวเตอร์สำหรับเรียกใช้คำสั่ง PHP จึงจำเป็นต้องติดตั้งโปรแกรมเว็บเซิร์ฟเวอร์ไว้ด้วย เพื่อให้สามารถประมวลผล PHP ได้

4.PHP สามารถทำงานได้ในเว็บเซิร์ฟเวอร์หลายชนิด เช่น Personal Web Server(PWS), Apache, OmniHttpd และ Internet Information Service(IIS) เป็นต้น

5.ภาษา PHP สนับสนุนการเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)

6.PHP มีความสามารถในการทำงานร่วมกับระบบจัดการฐานข้อมูลที่หลากหลาย ซึ่งระบบจัดการฐานข้อมูลที่สนับสนุนการทำงานของ PHP เช่น Oracle, MySQL, FilePro, Solid, FrontBase, mSQL และ MS SQL เป็นต้น

7.PHP อนุญาตให้ผู้ใช้สร้างเว็บไซต์ซึ่งทำงานผ่านโปรโตคอลชนิดต่างๆ ได้ เช่น LDAP, IMAP, SNMP, POP3 และ HTTP เป็นต้น

8.โค้ด PHP สามารถเขียน และอ่านในรูปแบบของ XML ได้

โครงสร้างของภาษา PHP

โครงสร้างของภาษา PHP 
 ภาษา PHP มีลักษณะเป็น embedded script หมายความว่าเราสามารถฝังคำสั่ง PHP ไว้ในเว็บเพจร่วมกับคำสั่ง(Tag) ของ HTML ได้ และสร้างไฟล์ที่มีนามสกุลเป็น .php, .php3 หรือ .php4 ซึ่งไวยากรณ์ที่ใช้ใน PHP เป็นการนำรูปแบบของภาษาต่างๆ มารวมกันได้แก่ C, Perl และ Java ทำให้ผู้ใช้ที่มีพื้นฐานของภาษาเหล่านี้อยู่แล้วสามารถศึกษา และใช้งานภาษานี้ได้ไม่ยาก ตัวอย่างที่ 1
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>Example 1 </title>
</head>
<body>

<?
   echo"Hi, I'm a PHP script!";
?>

</body>
</html>
   จากตัวอย่าง บรรทัดที่ 6 - 8 เป็นส่วนของสคริปต์ PHP ซึ่งเริ่มต้นด้วย <? ตามด้วยคำสั่งที่เรียกฟังก์ชั่นหรือข้อความ และปิดท้ายด้วย ?> สำหรับตัวอย่างนี้เป็นสคริปต์ที่แสดงข้อความว่า "Hi, I'm a PHP script" โดยใช้คำสั่ง echo ซึ่งเป็นคำสั่งที่ใช้ในการแสดงผลของภาษาสคริปต์ PHP ซึ่งจะแสดงผลดังนี้ เราสามารถฝังคำสั่ง PHP ไว้ในเว็บเพจหนึ่งๆ โดยเปิดและปิดด้วยแท็ก(Tag) ของ PHP กี่ครั้งก็ได้ ดังตัวอย่างต่อไปนี้

ตัวอย่างที่ 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<title>Example 1 </title>
</head>
<body>

<table border=1>
<tr>
<td>
<? echo"PHP script block 1"; ?></td>
<td>
<? echo"PHP script block 2 "; ?></td>
</tr>
</table>

<?
   echo"PHP script block 3 <br> ";
   echo date("ขณะนี้เวลา H:i น.");
?>

</body>
</html>

วันเสาร์ที่ 22 พฤศจิกายน พ.ศ. 2557

PHP คืออะไร

PHP คืออะไร
     PHP ย่อมาจาก PHP Hypertext Preprocessor แต่เดิมย่อมาจาก Personal Home Page Tools
     PHP คือภาษาคอมพิวเตอร์จำพวก scripting language ภาษาจำพวกนี้คำสั่งต่างๆจะเก็บอยู่ในไฟล์ที่เรียกว่า script และเวลาใช้งานต้องอาศัยตัวแปรชุดคำสั่ง ตัวอย่างของภาษาสคริปก็เช่น JavaScript , Perl เป็นต้น ลักษณะของ PHP ที่แตกต่างจากภาษาสคริปต์แบบอื่นๆ คือ PHP ได้รับการพัฒนาและออกแบบมา เพื่อใช้งานในการสร้างเอกสารแบบ HTML โดยสามารถสอดแทรกหรือแก้ไขเนื้อหาได้โดยอัตโนมัติ ดังนั้นจึงกล่าวว่า PHP เป็นภาษาที่เรียกว่า server-side หรือ HTML-embedded scripting language นั้นคือในทุกๆ ครั้งก่อนที่เครื่องคอมพิวเตอร์ซึ่งให้บริการเป็น Web server จะส่งหน้าเว็บเพจที่เขียนด้วย PHP ให้เรา มันจะทำการประมวลผลตามคำสั่งที่มีอยู่ให้เสร็จเสียก่อน แล้วจึงค่อยส่งผลลัพธ์ที่ได้ให้เรา ผลลัพธ์ที่ได้นั้นก็คือเว็บเพจที่เราเห็นนั่นเอง  ถือได้ว่า PHP เป็นเครื่องมือที่สำคัญชนิดหนึ่งที่ช่วยให้เราสามารถสร้าง Dynamic Web pages (เว็บเพจที่มีการโต้ตอบกับผู้ใช้) ได้อย่างมีประสิทธิภาพและมีลูกเล่นมากขึ้น 
     PHP เป็นผลงานที่เติบโตมาจากกลุ่มของนักพัฒนาในเชิงเปิดเผยรหัสต้นฉบับ หรือ OpenSource ดังนั้น PHP จึงมีการพัฒนาไปอย่างรวดเร็ว และแพร่หลายโดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับ Apache Web server ระบบปฏิบัติอย่างเช่น Linuxหรือ FreeBSD เป็นต้น ในปัจจุบัน PHP สามารถใช้ร่วมกับ Web Server หลายๆตัวบนระบบปฏิบัติการอย่างเช่น Windows 95/98/NT เป็นต้น

ลักษณะเด่นของ PHP
     1.ใช้ได้ฟรี
     2.PHP เป็นโปร แกรมวิ่งข้าง Sever ดังนั้นขีดความสามารถไม่จำกัด 
     3.Conlatfun นั่นคือPHP วิ่งบนเครื่อง UNIX,Linux,Windows ได้หมด
     4.เรียนรู้ง่าย เนืองจาก PHP ฝั่งเข้าไปใน HTML และใช้โครงสร้างและไวยากรณ์ภาษาง่ายๆ
     5.เร็วและมีประสิทธิภาพ โดยเฉพาะเมือใช้กับ Apach Xerve เพราะไม่ต้องใช้โปรแกรมจากภายนอก
     6.ใช้ร่วมกับ XML ได้ทันที
     7.ใช้กับระบบแฟ้มข้อมูลได้
     8.ใช้กับข้อมูลตัวอักษรได้อย่างมีประสิทธิภาพ
     9.ใช้กับโครงสร้างข้อมูล แบบ Scalar,Array,Associative array
     10.ใช้กับการประมวลผลภาพได้

วันเสาร์ที่ 1 พฤศจิกายน พ.ศ. 2557

ไอบีเอ็ม ดีบีทู

DB2 เป็นผลิตภัณฑ์ในกลุ่ม ระบบจัดการฐานข้อมูล (RDBMS) ของ ไอบีเอ็ม ปัจจุบันถูกเรียกว่า ไอบีเอ็ม DB2 Data Server ซึ่งเป็นผลิตภัณฑ์ในกลุ่ม ไอบีเอ็ม Information Management Software ไอบีเอ็ม DB2 Data Server แบ่งเป็นหลายแบบตามความเหมาะสมในการใช้งาน DB2 สามารถทำงานกับอุปกรณ์ต่างๆ ตั้งแต่เครื่อง PC จนกระทั่งถึงเมนเฟรมคอมพิวเตอร์ นอกเหนือจาก DB2 แล้ว ไอบีเอ็ม ยังมี ระบบจัดการฐานข้อมูล อีกตัวอื่น เช่น Informix ซึ่งถูก ไอบีเอ็ม ซื้อมาเมื่อปี 2001.

ประวัติ

DB2 มีประวัติยาวนานและถูกมองว่าเป็นระบบฐานจัดการฐานข้อมูลแรกที่ใช้ภาษา SQL (SQL คิดค้นโดย ไอบีเอ็ม)
ชื่อ "DB2" ถูกใช้ครั้งแรกเมื่อค.ศ. 1983 เมื่อ ไอบีเอ็ม ส่ง DB2 ซึ่งทำงานกับระบบปฏิบัติการ MVS บนเครื่องเมนเฟรมคอมพิวเตอร์ แต่ก่อนหน้านี้ ไอบีเอ็ม เคยออกผลิตภัณฑ์ที่ชื่อว่า SQL/DS ซึ่งเป็นระบบจัดการฐานข้อมูลเหมือนกันแต่ทำงานบนระบบปฏิบัติการ VM บนเครื่องเมนเฟรมคอมพิวเตอร์มาก่อนแล้ว สำหรับระบบจัดการฐานข้อมูลที่เป็นตัวต้นแบบนั้นถูกพัฒนามาตั้งแต่ยุค 1970s ซึ่งถูกเรียกว่า System R และถูกนำมาใช้งานร่วมกับเครื่อง System 38 ในยุคปี ค.ศ. 1968 Dr. E.F. Codd (ซึงทำงานอยู่ที่ ไอบีเอ็ม) ได้นำเสนอโมเดลเชิงสัมพันธ์ ซึ่งมีหลักการอยู่บนพื้นฐาน ทางคณิตศาสตร์ เพื่อแก้ปัญหาของโมเดลฐานข้อมูลแบบเดิม ไอบีเอ็ม ก็ได้นำแนวคิด ของ Dr. E.F. Codd ไปสร้างระบบฐานข้อมูลเชิงสัมพันธ์ที่ชื่อว่า System R ขึ้น และพัฒนาต่อเนื่องมาเรื่อย จนเป็น DB2 รวมถึงการพัฒนาภาษา SEQUEL เพื่อใช้สำหรับเรียกดูและจัดการกับข้อมูลในฐานข้อมูลเชิงสัมพันธ์ ในช่วงปีต่อมาคือ1976-1977 ได้มีการปรับปรุงเวอร์ชันใหม่จาก SEQUEL เป็น SEQUEL/2 และภายหลังก็ได้เปลี่ยนแปลงชื่อเป็น SQL
ในปัจจุบันมีผู้ผลิตซอฟต์แวร์ฐานข้อมูลขึ้นมามากมาย โดยใช้ทฤษฎีของ Dr. E.F. Codd เพื่อสร้าง ระบบฐานข้อมูลเชิงสัมพันธ์ขึ้นมามากมาย
เริ่มแรกนั้น DB2 ถูกพัฒนามาเพื่อใช้งานกับเครื่อง ไอบีเอ็ม เมนเฟรม หลังจากนั้น (1990s) ได้มีการพัฒนาต่อเนื่องทำให้สามารถใช้งานกับแพลทฟอร์มอื่นๆ ได้ทั้ง MS. Windows Linux ต่างๆ ไอบีเอ็ม AIX Sun Solaris HP-UX ไอบีเอ็ม i/OS แต่ภาษาที่ใช้ในการพัฒนา DB2 บนเครื่องเมนเฟรมกับแพลทฟอร์มอื่นนั้นแตกต่างกัน DB2 สำหรับเครื่องเมนเฟรมนั้นถูกพัฒนาโดยภาษา PL/S แต่ DB2 LUW (Linux/Unix/Windows) นั้นถูกพัฒนาโดยภาษา C++ แต่โดยรวมแล้ว DB2 จะมีการแชร์ฟังก์ชันและ Common Archictecture ร่วมกัน กลางยุค 1990s ไอบีเอ็ม ได้มีการพัฒนา DB2 Parallel Edition ขึ้นภายใต้แนวความคิด Shared Nothing Architecture เพื่อรองรับการขยายตัวของฐานข้อมลขนาดใหญ่ โดยสามารถทำการกระจายข้อมูลต่างๆ ไปยังเครื่อง DB2 Server หลายๆ เครื่องได้ หลังจากนั้นก็มีการพัฒนาเรื่อยมาและมีการเปลี่ยนชื่อเป็น DB2 Extended Enterprise Edition (DB2 EEE) และในปัจจุบัน ไอบีเอ็ม เรียกความสามารถในส่วนนี้ว่า Data Partitioning Feature (DPF) ซึ่งเป็นส่วนเสริม (option) ซึ่งต้องใช้งานร่วมกับ DB2 Enterprise Edition ปี 2006 ทาง ไอบีเอ็ม ได้มีการพัฒนาเพิ่มเติมในส่วนของ XML ทำให้ DB2 สามารถจัดเก็บข้อมูล XML ในลักษณะ "natively" โดยมีการพัฒนา Database Engine เพิ่มเติมสำหรับจัดการข้อมูล XML โดยเฉพาะเรียกว่า (PureXML) ซี่งในโหมดนี้ XML data จะถูกจัดเก็บในลักษณะที่เป็น XML จริงๆ ไม่ใช่ CLOB (Character Large Object) หรือ relation data ทำให้มีประสิทธิภาพในการเข้าถึงดีขึ้น

รุ่นของผลิตภัณฑ์

รุ่นของผลิตภัณฑ์นั้นแบ่งตามความเหมาะสมในการใช้งาน ได้แก่ เวอร์ชันคอมมิวนิตี้ (ฟรี) และ เวอร์ชันการค้า ความแตกต่างคือเวอร์ชันคอมมิวนิตี้นั้นสามารถนำไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น (ต้องซื้อบริการหลังการขายเพิ่ม)
  • ไอบีเอ็ม DB2 for z/OS
  • ไอบีเอ็ม DB2 Data Warehouse Edition
  • ไอบีเอ็ม DB2 Enterprise Edition
  • ไอบีเอ็ม DB2 Workgroup Edition (จำกัดการผลประมวลผลที่ CPU ไม่เกิน 4 cores)
  • ไอบีเอ็ม DB2 Express Edition (ใช้ได้เฉพาะ MS.Windows and Linux เท่านั้น และจำกัดการผลประมวลผลที่ CPU ไม่เกิน 2 cores และหน่วยความจำไม่เกิน 4 GB)
  • ไอบีเอ็ม DB2 Personal Edition
  • ไอบีเอ็ม DB2 Express-C Edition (สามารถดาวน์โหลดไปใช้ได้ฟรี ใช้ได้เฉพาะ MS.Windows and Linux เท่านั้น และจำกัดการประมวลผลจำนวน CPU ไม่เกิน 2 cores และหน่วยความจำได้ไม่เกิน 2 GB)

การแข่งขัน

คู่แข่งของ ไอบีเอ็ม DB2 ในเชิงของระบบฐานข้อมูลทั่วไป เช่น Oracle Microsoft SQL Server Sybase MySQL และอื่นๆ ในเชิงของระบบฐานข้อมูลขนาดใหญ่มาก (Data Warehouse) เช่น TeraData และอื่นๆ ในเชิงของระบบฐานข้อมูลสำหรับเครื่องเมนเฟรม เช่น CA-DATACOM, ADABAS และอื่นๆ

ข้อมูลในเชิงเทคนิค

การบริหารจัดการ ไอบีเอ็ม DB2 นั้นสามารถทำได้ผ่าน 2 ช่องทางคือ command-line หรือ Graphic User Interface (GUI) ที่เรียกว่า DB2 Control Center ซึ่งสามารถใช้บริหารจัดการ DB2 ได้ทุกเอดิชั่นและเนื่องจาก Control Center นั้นถูกพัฒนาโดย JAVA จึงทำให้สามารถทำงานได้หลายแพลทฟอร์ม DB2 สนับสนุนการใช้คำสั่งทั้ง SQL และ XQuery ผู้พัฒนาแอปพลิเคชันสามารถพัฒนาโปรแกรมผ่าน APIs ต่างๆ ดังนี้ APIs for .NET CLIJavaภาษาไพทอน,PerlPHPRuby,C++CREXXPL/ICOBOLRPGFORTRAN, และภาษาอื่นๆ การพัฒนา DB2 แอปพลิเคชันนั้น สามารถพัฒนาผ่าน Eclipse หรือ Visual Studio .NET และอื่นๆ ได้

กลุ่มผู้ใช้งาน

IDUG (International DB2 Users Group), เป็นการรวมตัวกันของกลุ่มผู้ใช้งาน DB2 ในลักษณะที่ไม่แสวงหาผลกำไร ผู้ใช้ DB2 สามารถหาความรู้ต่างๆ จาก IDUG ได้ทั้ง เรื่องการศึกษา การแก้ปัญหา ตัวอย่างโปรแกรม และอื่นๆ

มายเอสคิวเอล

MySQL (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System) โดยใช้ภาษา SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ
MySQL สร้างขึ้นโดยชาวสวีเดน 2 คน และชาวฟินแลนด์ ชื่อ David Axmark, Allan Larsson และ Michael "Monty" Widenius.
ปัจจุบันบริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB เรียบร้อยแล้ว ฉะนั้นผลิตภัณฑ์ภายใต้ MySQL AB ทั้งหมดจะตกเป็นของซัน
ชื่อ "MySQL" อ่านออกเสียงว่า "มายเอสคิวเอล" (maɪˌɛskjuːˈɛl[2] หรือ "มายเอสคิวแอล" (ในการอ่านอักษร L ในภาษาไทย) ซึ่งทางซอฟต์แวร์ไม่ได้อ่าน มายซีเควล หรือ มายซีควล เหมือนกับซอฟต์แวร์จัดการฐานข้อมูลตัวอื่น

รุ่นของผลิตภัณฑ์

รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้สามสายการผลิต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และเวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่างคือเวอร์ชันคอมมิวนิตี้นั้นสามารถนำไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น, เวอร์ชันที่เป็นคอมเมอร์เชียลนั้นให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุปคร่าวๆ ประเภทดาต้าเบสให้เลือกใช้ดังนี้
  • MySQL เอนเทอร์ไพรส์ Enterprise
  • MySQL คลัสเตอร์ Cluster
  • MySQL Embedded
  • MySQL Community (opensource เวอร์ชัน)
  • ความสามารถที่เพิ่มขึ้น

    ในเวอร์ชัน 5.0 มีความสามารถหลายอย่างที่สำคัญสำหรับระบบฐานข้อมูลขนาดใหญ่หรือระดับองค์กร (EnterPrise Feature) เช่น Store Proceduredatabase triggerdatabase viewdatabase schema ซึ่งได้มีการปรับเพิ่มประสิทธิภาพในส่วนของตารางและการทำดัชนี (index) ขึ้นมาอีก ปัจจุบันเวอร์ชัน community หรือเวอร์ชันที่เสถียร (stable) 5.0 และเวอร์ชันทดสอบคือ 5.1 beta release และ 5.2 Alpha
    ตั้งแต่เวอร์ชัน 5.1 เริ่มสนับสนุนการทำ Parttion Database , ตารางเวลาสำหรับเหตุการณ์ต่างๆ (Event schedule)111

    ประเภทการจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน

    • MyISAM ค่าปกติ (default)
    • InnoDB สนับสนุนการทำ ทรานแซคชั่น (transaction) แบบ ACID
    • Memory การจัดเก็บในหน่วยความจำ ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ในหน่วยความจำ ทำให้มีความเร็วในการทำงานสูงมาก
    • Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว
    • Archive เหมาะสำหรับการจัดเก็บข้อมูลพวก log file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information)
    • Federated สำหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ
    • NDB สำหรับการจัดเก็บแบบ คลัสเตอร์(cluster)
    • CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์
    • Blackhole
    • Example

    ชนิดของข้อมูลที่สนับสนุน

    ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ๆ
    • ชนิดข้อมูลที่เป็นตัวเลข
      • BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory)
      • TINYINT
      • SMALLINT
      • MEDIUMINT
      • INT
      • BIGINT
      • Float
    • ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา
      • DATETIME
      • DATE
      • TIMESTAMP
      • TIME
      • YEAR
    • ชนิดข้อมูลที่เกี่ยวกับตัวอักษร
      • CHAR
      • VARCHAR
      • BINARY
      • VARBINARY
      • BLOB
      • TEXT
      • ENUM
      • SET
      • การใช้งาน

        MySQL เป็นที่นิยมใช้กันมากสำหรับฐานข้อมูลสำหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP ซึ่งมักจะได้ชื่อว่าเป็นคู่ จะเห็นได้จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอนการใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทำงานร่วมกับฐานข้อมูล MySQL ซึ่งรวมถึง ภาษาซี ซีพลัสพลัส ปาสคาล ซีชาร์ป ภาษาจาวา ภาษาเพิร์ล พีเอชพี ไพทอน รูบี และภาษาอื่น ใช้งานผ่าน API สำหรับโปรแกรมที่ติดต่อผ่าน ODBCหรือ ส่วนเชื่อมต่อกับภาษาอื่น (database connector) เช่น เอเอสพี สามารถเรียกใช้ MySQL ผ่านทาง MyODBC,ADO,ADO.NET เป็นต้น

        โปรแกรมช่วยในการจัดการฐานข้อมูล และ ทำงานกับฐานข้อมูล

        ในการจัดการฐานข้อมูล MySQL คุณสามารถใช้โปรแกรมแบบ command-line เพื่อจัดการฐานข้อมูล (โดยใช้คำสั่ง: mysql และ mysqladmin เป็นต้น). หรือจะดาวน์โหลดโปรแกรมจัดการฐานข้อมูลแบบ GUI จากเว็บไซต์ของ MySQL ซึ่งคือโปรแกรม: MySQL Administrator และ MySQL Query Browser. เป็นต้น

        ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (database connector)

        มีส่วนติดต่อ (interface) เพื่อเชื่อมต่อกับภาษาในการพัฒนา อื่นๆ เพื่อให้เข้าถึงฟังก์ชันการทำงานกับฐานข้อมูล MySQL ได้เช่น ODBC (Open Database Connector) อันเป็นมาตรฐานกลางที่กำหนดมาเพื่อให้ใช้เป็นสะพานในการเชื่อมต่อกับโปรแกรมหรือระบบอื่นๆ เช่น MyODBC อันเป็นไดรเวอร์เพื่อใช้สำหรับการเชื่อมต่อในระบบปฏิบัติการวินโดว์, JDBC คลาสส่วนเชื่อมต่อสำหรับ Java เพื่อใช้ในการติดต่อกับ MySQL และมี API (Application Programming Interface) ต่างๆมีให้เลือกใช้มากมายในการที่เข้าถึง MySQL โดยไม่ขึ้นอยู่กับภาษาการพัฒนาใดภาษาหนึ่ง
        นอกเหนือจาก ตัวเชื่อมต่อกับภาษาอื่น (Connector) ที่ได้กล่าวมาแล้ว ยังมี API ที่สนับสนุนในขณะนี้คือ
        • DBI สำหรับการเชื่อมต่อกับ ภาษา perl
        • Ruby สำหรับการเชื่อมต่อกับ ภาษา ruby
        • Python สำหรับการเชื่อมต่อกับภาษา python
        • .NET สำหรับการเชื่อมกับภาษา .NET framework
        • MySQL++ สำหรับเชื่อมต่อกับภาษา C++
        • Ch สำหรับการเชื่อมต่อกับ Ch (C/C++ interpreter)
        • PHP สำหรับการเชื่อมต่อกับภาษาPHP
        ยังมีโปรแกรมอีกตัว เป็นโปรแกรมบริหารพัฒนาโดยผู้อื่น ซึ่งใช้กันอย่างแพร่หลายและนิยมกันเขียนในภาษาพีเอชพี เป็นโปรแกรมเว็บแอปพลิเคชัน ชื่อ phpMyAdmin
        ทั้ง MySQL server และ client libraries ถูกเผยแพร่ในลิขสิทธิ์ 2 แบบ ผู้ใช้สามารถเลือกได้ระหว่างลิขสิทธิ์ GNU General Public License [1] หรือลิขสิทธิ์ proprietary license
        ผู้ใช้บางคนพัฒนาซอฟต์แวร์ต่อจากเวอร์ชันแรกๆของ client libraries ที่ใช้ลิขสิทธิ์ Lesser General Public License [2]