SQL (Structure Query Language) ตอนที่ 1 Online available at http://www.ict.up.ac.th/somporns/db
Contents ความหมายของ SQL ประเภทของภาษา SQL DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) ความรู้เบื้องต้นของระบบจัดการฐานข้อมูล MySql 2
Introduction to Structured Query Language (SQL) SQL ได้รับการพัฒนาครั้งแรก San Jose Research Laboratory ปัจจุบันเปลี่ยนชื่อสถาบันนี้เป็น Almaden Research Center ซึ่งเป็นหน่วยงานหนึ่งใน IBM แรกเริ่ม “SQL” เรียกว่า “SEQUEL” ซึ่งย่อมาจาก “Structured English QUEry Language”
Introduction to Structured Query Language (SQL)
Introduction to Structured Query Language (SQL)
Introduction to Structured Query Language (SQL)
ประเภทของคําสั่งของภาษา SQL ภาษาสําหรับการนิยามขอมูล (Data Definition Language : DDL) ภาษาสําหรับการจัดการขอมูล (Data Manipulation Language : DML) ภาษาควบคุม (Data Control Language : DCL)
A simplified schematic of a typical SQL environment, as described by the SQL-2003 standard
DDL, DML, DCL, and the database development process
ความรู้เบื้องต้นของระบบจัดการฐานข้อมูล MySql
ชนิดข้อมูลใน MySQL (Data Types) จำนวนตัวเลขใน MySQL มี 2 กลุ่ม คือ signed (จำนวนบวกและลบ) และ unsigned (จำนวนบวก) ถ้าไม่กำหนดจะมี default คือ signed Numeric Data Types TINYINT เลขจำนวนเต็ม ถ้าเป็น signed มีค่าตั้งแต่ -128 ถึง 127 ถ้าเป็น unsigned มีค่าตั้งแต่ 0 ถึง 255 SMALLINT เลขจำนวนเต็ม ถ้าเป็น signed มีค่าตั้งแต่ -32768 ถึง 32767 ถ้าเป็น unsigned มีค่าตั้งแต่ 0 ถึง 65535
ชนิดข้อมูลใน MySQL (Data Types) MEDIUMINT เลขจำนวนเต็ม ถ้าเป็น signed มีค่าตั้งแต่ -8388608 ถึง 8388607 ถ้าเป็น unsigned มีค่าตั้งแต่ 0 ถึง 16777215 INT / INTEGER เลขจำนวนเต็ม ถ้าเป็น signed มีค่าตั้งแต่ -2147483648 ถึง 2147483647 ถ้าเป็น unsigned มีค่าตั้งแต่ 0 ถึง 4294967295 BIGINT เลขจำนวนเต็ม ถ้าเป็น signed มีค่าตั้งแต่ -9223372036854775808 ถึง 9223372036854775807 ถ้าเป็น unsigned มีค่าตั้งแต่ 0 ถึง 18446744073709551615
ชนิดข้อมูลใน MySQL (Data Types) FLOAT เลขจำนวนทศนิยม ถ้าเป็น signed มีค่าตั้งแต่ -3.402823466E+38 ถึง -1.175494351E-38 ถ้าเป็น unsigned มีค่าตั้งแต่ 1.175494351E-38 ถึง 3.402823466E+38 และรวมค่า 0 ด้วย DOUBLE เลขจำนวนทศนิยม ถ้าเป็น signed มีค่าตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308 ถ้าเป็น unsigned มีค่าตั้งแต่ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308 และรวมค่า 0 ด้วย 1. dec(m,n) หรือ decimal(m,n) เป็นประเภทข้อมูลที่เป็นจำนวนเลขที่มีจุดทศนิยมโดย m คือจำนวนตัวเลขทั้งหมด (รวมจุดทศนิยม) และ n คือจำนวนตัวเลขหลังจุดทศนิยม
ชนิดข้อมูลใน MySQL (Data Types) Date and Time Data Types DATE วันที่ ซึ่งมีรูปแบบวันที่ คือ YYYY-MM-DD มีค่าตั้งแต่ 1000-01-01 ถึง 9999-12-31 DATETIME วันที่และเวลา ซึ่งมีรูปแบบ คือ YYYY-MM-DD HH:MM:SS มีค่าตั้งแต่ 1000-01-01 00:00:00 ถึง 9999-12-31 23:59:59 TIMESTAMP เป็นชนิดข้อมูลที่มักใช้ในการเก็บวันที่และเวลาที่เกิดกิจกรรมในฐานข้อมูล
ชนิดข้อมูลใน MySQL (Data Types) Date and Time Data Types TIME เวลา ซึ่งมีรูปแบบ คือ HH:MM:SS มีค่าตั้งแต่ -838:59:59 ถึง 838:59:59 YEAR[2|4] ปี ซึ่งมีรูปแบบ คือ แบบย่อ YY มีค่าตั้งแต่ 70-69 และ 00 หมายถึง ปี 1970 – ปี 2069 แบบเต็ม YYYY มีค่าตั้งแต่ 1901-2155 และ 0000
ชนิดข้อมูลใน MySQL (Data Types) String Data Types CHAR เก็บข้อมูลชนิดตัวอักษรแบบ fixed-length ใช้เก็บข้อมูลตัวอักษรที่มีความยาวคงที่ VARCHAR เก็บข้อมูลชนิดตัวอักษรแบบ variable-length ใช้เก็บข้อมูลตัวอักษรที่มีความยาวไม่คงที่ TEXT เก็บข้อมูลชนิดตัวอักษรมีค่าเกิน 8 KB 1. ตัวหนังสือแบบความยาวคงที่(fixed-length character) จะใช้ char (n) หรือ character(n) แทนประเภทของข้อมูลที่เป็นตัวหนังสือใดๆที่มีความยาวของข้อมูลคงที่โดยมีความยาว n ตัวหนังสือประเภทนี้จะมีการจองเนื้อที่ตามความยาวที่คงที่ตามที่กำหนดไว้ ชนิดของข้อมูลประเภทนี้จะเก็บความยาวของข้อมูลได้มากที่สุดได้ 255 ตัวอักษร 2. ตัวหนังสือแบบความยาวไม่คงที่(variable-length character) จะใช้ varchar (n) แทนประเภทของข้อมูลที่เป็นตัวหนังสือใดๆที่มีความยาวของข้อมูลไม่คงที่ โดยมีความยาว n ตัวหนังสือประเภทนี้จะมีการจองเนื้อที่ตามความยาวของข้อมูล ชนิดของข้อมูลประเภทนี้จะเก็บความยาวของข้อมูลได้มากที่สุดได้ 4000 ตัวอักษร
คำสั่งสำหรับใช้สร้างตาราง Syntax CREATE TABLE table_name (column_name datatype [NOT NULL], [column_name datatype [NOT NULL]] [CONSTRAINT constrain_name PRIMARY KEY (key_column)], [CONSTRAINT constrain_name FOREIGN KEY (key_column) REFERENCES reference_table(key_column)]);
คำสั่งสำหรับใช้สร้างตาราง CREATE TABLE เป็นคำสั่ง SQL มาตรฐานที่ใช้สำหรับสร้างตารางขึ้นมา table_name ชื่อตารางที่ทำการสร้างขึ้นมา column_name การตั้งชื่อของแอทริบิวท์ให้กับคอลัมน์ตามที่ได้ออกแบบมา datatype ชนิดของข้อมูลในคอลัมน์ที่ทำการจัดเก็บ NOT NULL ใช้เป็นข้อกำหนดไม่ให้ค่าในคอลัมน์นี้มีค่าเป็นค่าว่าง CONSTRAINT กำหนดข้อบังคับต่าง ๆ เพื่อควบคุมความถูกต้องของข้อมูลในตาราง
คำสั่งสำหรับใช้สร้างตาราง constraint_name ตั้งชื่อให้ Constraint ซึ่งจะใช้อ้างในการใช้งานในภายหลัง PRIMARY KEY กำหนด Primary_key ให้กับตาราง key_column ชื่อคอลัมน์ที่เป็น Primary_key หรือ Foreign_key FOREIGN KEY กำหนด Foreign_key ให้กับตาราง REFERENCES ใช้กำหนดชื่อคอลัมน์และตารางที่ Foreign Key อ้างถึง reference_table ชื่อตารางที่ Foreign Key อ้างถึง
พจนานุกรมข้อมูล (Data Dictionary) Relation Attribute Description Type Size PK FK Student StudentID รหัสนิสิต varchar 8 Yes - Name ชื่อ-นามสกุลนิสิต 120 Birthdate วัน/เดือน/ปีเกิด Date/Time Class กลุ่มเรียน 3 Advisor อาจารย์ที่ปรึกษา Club ชมรม
พจนานุกรมข้อมูล (Data Dictionary) Relation Attribute Description Type Size PK FK Subject SubjectID รหัสวิชา varchar 8 Yes - Name ชื่อวิชา 120 Credit หน่วยกิต Double Teacher อาจารย์ผู้สอน Textbook ชื่อหนังสือ
พจนานุกรมข้อมูล (Data Dictionary) Relation Attribute Description Type Size PK FK Student_ Subject StudentID รหัสนิสิต varchar 8 Yes SubjectID รหัสวิชา Grade เกรดที่ได้ 1 - Score คะแนนที่ได้ Double Term ภาคการศึกษา 6
คำสั่ง SQL Command ในการสร้างตาราง Student แบบที่ 1 CREATE TABLE STUDENT (StudentID varchar(8), Name varchar(120), Birthdate date, Class varchar(3), Advisor varchar(120), Club varchar(120), CONSTRAINT student_pk PRIMARY KEY (StudentID));
คำสั่ง SQL Command ในการสร้างตาราง Student แบบที่ 2 CREATE TABLE STUDENT (StudentID varchar(8), Name varchar(120), Birthdate date, Class varchar(3), Advisor varchar(120), Club varchar(120), PRIMARY KEY (StudentID));
คำสั่ง SQL Command ในการสร้างตาราง Subject แบบที่ 1
คำสั่ง SQL Command ในการสร้างตาราง Subject แบบที่ 2
คำสั่ง SQL Command ในการสร้างตาราง Student_Subject แบบที่ 1
คำสั่ง SQL Command ในการสร้างตาราง Student_Subject แบบที่ 2
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง เพิ่มคอลัมน์ใหม่ให้กับตารางที่มีอยู่แล้ว แก้ไขชนิดข้อมูลหรือขนาดของข้อมูลในคอลัมน์ ลบคอลัมน์ที่ไม่จำเป็นต้องใช้ออกไป ลบ Constraint ที่ใช้ควบคุมความถูกต้องของข้อมูล กำหนด Constraint ใหม่ให้กับตาราง ลบตารางออกจากฐานข้อมูล
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง เพิ่มคอลัมน์ใหม่ให้กับตารางที่มีอยู่แล้ว Syntax ALTER TABLE table_name ADD column_name datatype; ตัวอย่าง ALTER TABLE Student ADD Address char(255);
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง แก้ไขชนิดข้อมูลหรือขนาดของข้อมูลในคอลัมน์ Syntax ALTER TABLE table_name ALTER column_name datatype; ตัวอย่าง ALTER TABLE Student ALTER Address char(100);
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง แก้ไขชนิดข้อมูลหรือขนาดของข้อมูลในคอลัมน์ Syntax ALTER TABLE table_name CHANGE column_name column_name datatype; ตัวอย่าง ALTER TABLE Student CHANGE Address Address char(100); อ้างอิงคำสั่งใน mySQL ใช้ CHANGE แทน ALTER
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง ลบคอลัมน์ที่ไม่จำเป็นต้องใช้ออกไป Syntax ALTER TABLE table_name DROP COLUMN column_name ; ตัวอย่าง ALTER TABLE Student DROP COLUMN Address;
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง ลบ Constraint ที่ไม่จำเป็นต้องใช้ออกไป Syntax ALTER TABLE table_name DROP CONSTRAINT Foreign_name ; ตัวอย่าง ALTER TABLE Student_Subject DROP CONSTRAINT stusub_fk1;
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง กำหนด Constraint ใหม่ให้กับตาราง Syntax ALTER TABLE table_name ADD CONSTRAINT Foreign_name FOREIGN KEY (column_name) REFERENCES Table_name(column_name);
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง กำหนด Constraint ใหม่ให้กับตาราง ตัวอย่าง ALTER TABLE Student_Subject ADD CONSTRAINT stusub_fk1 FOREIGN KEY (studentID) REFERENCES Student(studentID);
คำสั่งสำหรับใช้แก้ไขโครงสร้างตาราง ลบคอลัมน์ที่ไม่จำเป็นต้องใช้ออกไป Syntax DROP TABLE table_name; ตัวอย่าง DROP TABLE Student;