Structured Query Language

Download Report

Transcript Structured Query Language

Structured Query
Language
SQL
1
SQL
เป็ นภาษาที่ใช้ ในการจัดการกับข้ อมูลสาหรั บแบบจาลอง
ฐานข้ อมูลเชิงสัมพันธ์ (Relational Database Model)
 มีพน
ื ้ ฐานที่ผสมผสานกันระหว่ าง Relational Algebra และ
Relational Calculus
 พัฒนาครั ง้ แรกโดย IBM ‘s San Jose Research Laboratory
 ปี ค.ศ. 1986 ANSI และ ISO ได้ ร่วมกันกาหนดมาตรฐานของ
ภาษา SQL ซึ่งเรี ยกว่ า SQL1 และต่ อมาได้ มีการทบทวนแก้ ไข
และเพิ่มเติมมาตรฐานขึน้ มาเป็ น SQL2 หรื อที่เรี ยกว่ า SQL-92
(ปี ค.ศ. 1992)

2
กลุ่มคาสั่งของ SQL
แบ่ งเป็ น 3 กลุ่ม ได้ แก่
 ภาษาการนิยามข้ อมูล
(Data Definition Language : DDL)
 ภาษาปฏิบัตก
ิ ารของข้ อมูล
(Data Manipulation Language : DML)
 ภาษาควบคุมข้ อมูล
(Data Control Language : DCL)
3
กลุ่มคาสั่ง DDL


เป็ นคาสั่งที่ใช้ ในการกาหนดโครงสร้ างของ
ตารางข้ อมูล
คาสั่งที่อยู่ในกลุ่ม DDL





CREATE DATABASE , DROP DATABASE
CREATE TABLE , DROP TABLE
ALTER TABLE
CREATE INDEX , DROP INDEX
CREATE VIEW , DROP VIEW
4
กลุ่มคาสั่ง DML


เป็ นคาสั่งที่ใช้ ในการจัดการข้ อมูลใน
ตารางข้ อมูล
คาสั่งที่อยู่ในกลุ่ม DML
INSERT INTO
 UPDATE TABLE
 DELETE FROM
 SELECT

5
กลุ่มคาสั่ง DCL


เป็ นคาสั่งที่ใช้ ในการกาหนดสิทธิการใช้ งาน
ฐานข้ อมูลให้ แก่ ผ้ ูใช้
คาสั่งที่อยู่ในกลุ่ม DCL
GRANT
 REVOKE

6
DATA DEFINITION
LANGUAGE
DDL
7
คาสั่งสร้ างฐานข้ อมูล
CREATE DATABASE <database_name>;
เช่ น ต้ องการสร้ างฐานข้ อมูลชื่อ Company
CREATE DATABASE Company;
8
คาสั่งลบฐานข้ อมูล
DROP DATABASE <database_name>;
เช่ น ต้ องการลบฐานข้ อมูลชื่อ Company
DROP DATABASE Company;
9
คาสั่งสร้ างตารางข้ อมูล
CREATE TABLE <table_name>
( column_name data type [NOT NULL] [UNIQUE]
[DEFAULT <default_option>][CHAECK <serach_condition>] ,
….
….
PRIMARY KEY(column_name1) ,
[FOREIGN KEY(column_name)
REFERENCES table_name(column_name)
ON UPDATE (action_specification)
ON DELETE (action_specification)]
);
***action_specification : {cascade | set null | set default | restrict }
10
ตัวอย่ างสร้ างตารางข้ อมูล
รหัสสิ นค้ า
ชื่อสิ นค้ า
ชื่อประเภทสินค้า
รหัสประเภทสินค้า
ราคา
สิ นค้ า
N
จัดอยู่ในประเภท
1
ประเภทสิ นค้ า
จานวน
สินค้ า(รหัสสินค้ า , ชื่อหนังสือ , ราคา , จานวน , รหัสประเภทสินค้ า)
ประเภทสินค้ า(รหัสประเภทสินค้ า , ชื่อประเภทสินค้ า)
สร้ างตารางที่ไม่ มี
Foreign key ก่ อน
11
สร้ างตารางข้ อมูล
Table name
Column name
Description
Type
Category
Cate_ID
ิ ค้า
รห ัสประเภทสน
char
Cate_Name
ื่ ประเภทสน
ิ ค้า
ชอ
varchar
Size
Null
3
N
30
Y
Key
PK
CREATE TABLE Category
( Cate_ID char(3) NOT NULL UNIQUE,
Cate_Name varchar(30),
PRIMARY KEY(Cate_ID) );
12
สร้ างตารางข้ อมูล
Table name
Column name
Description
Type
Size
Null
Key
Products
ProductID
ิ ค้า
รห ัสสน
char
7
N
PK
ProductName
ื่ สน
ิ ค้า
ชอ
varchar
30
Y
UnitPrice
ิ ค้า
ราคาสน
money
Y
QTY
ิ ค้า
จานวนสน
คงเหลือ
int
Y
CategoryID
ิ ค้า
รห ัสประเภทสน
char
3
Y
FK(Category)
CREATE TABLE Products
( ProductID char(7) NOT NULL UNIQUE,
ProductName varchar(30),
UnitPrice Number, QTY Int,
CategoryID char(3),
PRIMARY KEY(ProductID),
FOREIGN KEY(CategoryID) REFERENCES Category(Cate_ID)
ON DELETE RESTRICT
ON UPDATE CASCADE);
13
คาสั่งลบตาราง
DROP TABLE <table_name>;
เช่ น ต้ องการลบตารางชื่อ Products
DROP TABLE Products;
14
คาสั่งแก้ ไขตาราง(เพิ่มคอลัมน์ )
ALTER TABLE <table_name>
ADD column_name data_type constraint;
เช่ น ต้ องการแก้ ไขตารางชื่อ Products โดยเพิ่มคอลัมน์
unit ชนิดข้ อมูล varchar ขนาด 15 ตัวอักษร เป็ นค่ าว่ างได้
ALTER TABLE Products
ADD unit varchar(15);
15
คาสั่งแก้ ไขตาราง(แก้ ไขคอลัมน์ )
ALTER TABLE <table_name>
ALTER column_name data_type constraint;
เช่ น ต้ องการแก้ ไขตารางชื่อ Products โดยแก้ ไขคอลัมน์
ProductName ชนิดข้ อมูล varchar ขนาด 40 ตัวอักษร ว่ างได้
ALTER TABLE Products
ALTER ProductName varchar(40);
16
คาสั่งแก้ ไขตาราง(ลบคอลัมน์ )
ALTER TABLE <table_name>
DROP column_name | DROP Constriant;
เช่น ต้ องการแก้ ไขตารางชื่อ Products โดยลบคอลัมน์ unit
ALTER TABLE Products
DROP unit;
17
คาสั่งสร้ าง Domain Constraint
CREATE DOMAIN <domain_name> [AS] <data_type>
[DEFAULT <default_option>]
[CHECK (search_condition)] ;
โดย
domain_name : ชื่อโดเมน
AS data_type : ชนิดข้ อมูลของโดเมน
default_option : ค่ าเริ่มต้ น
search_condition : ขอบเขตข้ อมูลที่เป็ นไปได้
18
ตัวอย่ างการสร้ าง Domain Constraint
CREATE DOMAIN sexType AS char
DEFAULT ‘M’
CHECK (VALUE IN (‘M’, ‘F’)) ;
สร้างโดเมนชื่อ sexType เป็ น
ข้อมูลชนิด char มีค่าเริ่ มต้น
เป็ น M สามารถกาหนดค่า
เป็ น M หรื อ F เท่านั้น
19
ตัวอย่ างการสร้ าง Domain Constraint
CREATE DOMAIN BranchNumber AS char(4)
CHECK (VALUE IN (SELECT branchNo FROM Branch)) ;
สร้างโดเมนชื่อ BranchNumber เป็ นข้อมูลชนิด
char ขนาด 4 ตัวอักษร สามารถกาหนดค่าเป็ น รหัส
สาขา(branchNo) ที่มีในตาราง Branch
20
คาสั่งลบ Domain Constraint
DROP DOMAIN <domain_name> [Restrict | Cascade] ;
เช่ น
DROP DOMAIN BranchName Restrict ;
หมายถึง ลบโดเมนชื่อ BranchName แต่ มีข้อแม้ ว่า ถ้ ามีการใช้
งานโดเมนนีใ้ น table หรือ view จะไม่ สามารถลบโดเมนนีไ้ ด้
21
คาสั่งสร้ างอินเด็กซ์
CREATE INDEX <index_name>
ON <table_name>(<column_name>) ;
เช่ น สร้ างอินเด็กซ์ ช่ ือ nameIndex โดยใช้ คอลัมน์ ช่ ือ
ProductName บนตาราง Product
CREATE INDEX nameIndex
ON Products(ProductName);
22
คาสั่งลบอินเด็กซ์
DROP INDEX <index_name>;
เช่ น ลบอินเด็กซ์ ท่ ชี ่ ือ nameIndex
DROP INDEX nameIndex;
23
คาสั่งสร้ างวิว
CREATE VIEW <view_name>[(new_column_name , …)]
AS subselect [WITH [CASCADED | LOCAL] CHAECK
OPTION]
เช่ น
CREATE VIEW Manager3Staff
AS SELECT *
FROM Staff
WHERE branchNo = ‘B0003’;
24
คาสั่งลบวิว
DROP VIEW <view_name>[RESTRICT | CASCADE];
เช่ น
DROP VIEW Manager3Staff CASCADE ;
25
DATA MANIPULATION
LANGUAGE
DML
26
QUERY
 Query
หมายถึง การสืบค้ นข้ อมูลในตารางข้ อมูล ตามเงื่อนไข
ที่กาหนด
SELECT <ชื่อคอลัมน์ ท่ ีต้องการให้ แสดง, … , … หรื อ * >
FROM <ชื่อตารางที่ต้องการสืบค้ นข้ อมูล, … , …>
[WHERE เงื่อนไขในการแสดงรายการข้ อมูล]
[GROUP BY ชื่อคอลัมน์ ท่ ใี ช้ ในการจัดกลุ่มข้ อมูล , … , …]
[HAVING เงื่อนไขในการจัดกลุ่มข้ อมูล]
[ORDER BY ชื่อคอลัมน์ ท่ ใี ช้ ในการเรี ยงลาดับข้ อมูล(ASC || DESC)]
27
การแสดงข้ อมูลทุกแถว ทุกคอลัมน์
แสดงข้ อมูลทุกอย่ างของพนักงานทุกคน
SELECT *
FROM Staff;
หมายถึง ทุกคอลัมน์
ถ้ าไม่ มี WHERE หมายถึง ให้ แสดงข้ อมูลทุกแถว
28
การแสดงข้ อมูลทุกแถว บางคอลัมน์
แสดงข้ อมูลรหัส , ชื่อ,นามสกุลและเงินเดือนของ
พนักงานทุกคน
SELECT staffNO , fName , lName , salary
FROM Staff;
ระบุชื่อคอลัมน์ เมื่อต้ องการ
แสดงผลบางคอลัมน์
ถ้ าไม่ มี WHERE หมายถึง ให้ แสดงข้ อมูลทุกแถว
29
การแสดงข้ อมูลบางแถว ทุกคอลัมน์
แสดงข้ อมูลทุกอย่างของพนักงานที่เป็ นเพศหญิง
SELECT *
FROM Staff
หมายถึง ทุกคอลัมน์
WHERE Sex = ‘ญ’;
กาหนดเงื่อนไขในบรรทัด WHERE เพือ่ ระบุแถวทีต่ รงกับเงื่อนไข
30
การแสดงข้ อมูลบางแถว บางคอลัมน์
แสดงข้ อมูลรหัส , ชื่อ,นามสกุลและเงินเดือนของ
พนักงานที่เป็ นเพศหญิง
SELECT staffNO , fName , lName , salary
FROM Staff
WHERE Sex = ‘ญ’;
ระบุชื่อคอลัมน์ เมื่อต้ องการ
แสดงผลบางคอลัมน์
กาหนดเงื่อนไขในบรรทัด WHERE เพือ่ ระบุแถวทีต่ รงกับเงื่อนไข
31
การกาจัดแถวข้ อมูลที่ซา้ กัน
แสดงรหัสสิ่งปลูกสร้ างที่เคยถูกเข้ าชม
SELECT propertyNO
FROM Viewing;
SELECT DISTINCT propertyNO
FROM Viewing;
32
การเปรี ยบเทียบเงื่อนไข
แสดงข้ อมูลพนักงานที่มีเงินเดือนมากกว่ า 10000 บาท
SELECT *
FROM Staff
ค่าทีเ่ ป็นเงือ
่ นไข
WHERE Salary > 10000;
คอล ัมน์ทใี่ ชใ้ นการเปรียบเทียบ
ต ัวดาเนินการเปรียบเทียบ ได้แก่
= , <> , > , >= , < , <=
33
การเปรี ยบเทียบเงื่อนไข โดยใช้ OR
แสดงข้ อมูลสาขาที่ตงั ้ อยู่ในจังหวัด อุดรธานี หรือ
หนองคาย
SELECT
FROM
*
Branch
WHERE
province = ‘อุดรธานี’
OR province = ‘หนองคาย’ ;
34
การเปรี ยบเทียบเงื่อนไข โดยใช้ OR
แสดงข้ อมูลพนักงานที่เป็ นเพศหญิง หรือ เงินเดือน
มากกว่ า 10000 บาท
SELECT
FROM
*
Staff
WHERE
Sex = ‘ญ’
OR Salary > 10000 ;
35
การเปรี ยบเทียบเงื่อนไข โดยใช้ AND
แสดงข้ อมูลพนักงานที่เป็ นเพศหญิง และ เงินเดือน
มากกว่ า 10000 บาท
SELECT *
FROM
Staff
WHERE
Sex = ‘ญ’
AND Salary > 10000 ;
36
การเปรียบเทียบเงื่อนไข โดยใช้ BETWEEN…AND…
แสดงข้ อมูลพนักงานที่มีเงินเดือนระหว่ าง 10000 – 20000 บาท
SELECT
FROM
WHERE
*
Staff
Salary BETWEEN 10000
AND 20000 ;
SELECT *
FROM Staff
WHERE Salary >= 10000 AND Salary <= 20000;
37
การเปรี ยบเทียบเงื่อนไข โดยใช้ IN
แสดงข้ อมูลพนักงานมีตาแหน่ งเป็ นผู้จัดการ หรื อ เป็ นหัวหน้ า
แผนก
SELECT
FROM
WHERE
*
Staff
position IN (‘ผู้จัดการ’, ‘หัวหน้ าแผนก’) ;
SELECT *
FROM Staff
WHERE position = ‘ผู้จัดการ’ OR position = ‘หัวหน้ าแผนก’;
38
การเปรี ยบเทียบเงื่อนไข โดยใช้ LIKE
แสดงข้ อมูลพนักงานมีช่ ือขึน้ ต้ นด้ วย “ส”
SELECT
FROM
*
Staff
WHERE
fName LIKE ‘ส%’ ;
่ ‘ส*’
MS Access ใช ้ * เชน
39
การเปรี ยบเทียบเงื่อนไข โดยใช้ LIKE
แสดงข้ อมูลพนักงานมีช่ ือประกอบด้ วยตัวอักษร 5 ตัวอักษร
SELECT *
FROMStaff
WHERE
fName LIKE ‘_____’ ;
่ ‘?????’
MS Access ใช ้ ? เชน
40
การจัดเรี ยงข้ อมูล(ORDER BY)
 คาสัง่ ในการจัดเรี ยงลาดับ ประกอบด้ วย
ASC
จากน้ อย ไป มาก
DESC จาก มาก ไป น้ อย
41
การจัดเรี ยงข้ อมูล(ORDER BY)
แสดงข้ อมูลรหัสพนักงาน , ชื่อ , นามสกุล และเงินเดือน โดย
เรียงลาดับผลลัพธ์ จากเงินเดือนมากที่สุดไปน้ อยที่สุด
SELECT staffNo , fName , lName , salary
FROM
Staff
ORDER BY salary DESC ;
42
การจัดเรี ยงข้ อมูล(ORDER BY)
แสดงข้ อมูลสิ่งปลูกสร้ างที่ให้ เช่ า โดยเรี ยงลาดับผลลัพธ์
จากค่ าเช่ าถูกที่สุดไปหาแพงที่สุด
SELECT *
FROMPerproty
ORDER BY rent ASC ;
43
การจัดเรี ยงข้ อมูล(ORDER BY)
แสดงข้ อมูลสิ่งปลูกสร้ างที่ให้ เช่ า โดยเรี ยงลาดับผลลัพธ์
จากจานวนห้ องจากมากไปน้ อย ถ้ ามีจานวนห้ อง
เท่ ากันให้ เรี ยงจากค่ าเช่ าถูกที่สุดไปหาแพงที่สุด
SELECT *
FROM
Perproty
ORDER BY room DESC , rent ASC ;
44
ฟั งก์ ชันทางคณิตศาสตร์
 Count
 MAX
 MIN
 SUM
 AVG
นับจานวนแถวผลลัพธ์
หาค่ าสูงที่สุด
หาค่ าต่าที่สุด
หาค่ าผลรวม
หาค่ าเฉลี่ย
45
คาสั่ง COUNT
แสดงจานวนสิ่งปลูกสร้ างที่มีค่าเช่ ามากกว่ า 2000 บาท
ต่ อเดือน
SELECT COUNT(*) AS propertyCount
FROMPropertyForRent
WHERE
rent > 2000;
46
คาสั่ง MAX,MIN,SUM,AVG
แสดงข้ อมูลเงินเดือนที่สูงสุด , เงินเดือนที่ต่าสุด ,
เงินเดือนรวม และเงินเดือนเฉลี่ยของพนักงานทุกคน
SELECT MAX(Salary) as Max_Salary ,
MIN(Salary) as Min_Salary ,
SUM(Salary) as
Sum_Salary ,
AVG(Salary) as Avg_Salary
FROMStaff;
47
การจัดกลุม่ ข้ อมูล(GROUP BY)
แสดงจานวนพนักงานที่ทางานอยู่ในแต่ ละสาขา และ
เงินเดือนรวมของพนักงานในสาขานัน้ ๆ
SELECT branchNo , COUNT(staffNo) AS numStaff ,
SUM(salary) AS sumSalary
FROM Staff
GROUP BY branchNo;
48
เงื่อนไขในการจัดกลุม่ (HAVING)
แสดงจานวนพนักงานที่ทางานอยูใ่ นแต่ละสาขา และเงินเดือนรวมของ
พนักงานในสาขานันๆ
้ โดยแสดงเฉพาะสาขาที่มีพนักงานสังกัด
มากกว่า 1 คน
SELECT
branchNo ,
COUNT(staffNo) AS numStaff ,
SUM(salary) AS sumSalary
FROM Staff
GROUP BY branchNo
HAVING
COUNT(staffNo) > 1;
49
การสืบค้ นข้ อมูลจากหลายตาราง
แสดงชื่อลูกค้ า,นามสกุล,รหัสสิ่งปลูกสร้ างและความคิดเห็นที่เคย
เข้ าชมสิ่งปลูกสร้ าง
Client
clientNo
fName
lName
telNo
preType
maxRent
CR56
อารีร ัตน์
บุญทอง
045355778
แฟลต
2,500.00
CR62
ราไพ
ทองอ่อน
042255118
แฟลต
1,500.00
CR74
ปราการ
พิพ ัฒน์
042325597
บ้าน
4,000.00
CR76
นิพล
ั ทธิ
สงสุ
022556688
แฟลต
3,000.00
PK
FK
ต้ องการแสดงชื่อและ
นามสกุลแทน
Viewing
clientNo
propertyNo
viewDate
comment
CR56
UB15
28/4/2547
CR56
UD16
26/5/2546
CR56
UD36
24/5/2547
หล ังเล็กเกินไป
CR62
UD36
26/5/2546
ไม่มห
ี อ
้ งกินข้าว
CR76
UD16
20/4/2547
50
ไกลเกินไป
การเชื่อมโยงตาราง(Joining table)
 Cartesian Product
เชื่อมโยงที่คาสั่ง where
SELECT คอลัมน์ , …
FROM ตาราง1 , ตาราง2 ,…
WHERE เงื่อนไขการเชื่อมโยง
 Join Operator
เชื่อมโยงที่คาสั่ง from
SELECT คอลัมน์ , …
FROM ตาราง1 JOIN ตาราง2 ON เงื่อนไขการเชื่อมโยง
51
การสืบค้ นข้ อมูลจากหลายตาราง
แสดงชื่อลูกค้ า,นามสกุล,รหัสสิ่งปลูกสร้ างและความคิดเห็นที่เคย
เข้ าชมสิ่งปลูกสร้ าง
SELECT fName,lName,propertyNo,
Client
clientNo
fName
lName
telNo
preType
maxRent
CR56
อารีร ัตน์
บุญทอง
045355778
แฟลต
2,500.00
CR62
ราไพ
ทองอ่อน
042255118
แฟลต
1,500.00
CR74
ปราการ
พิพ ัฒน์
042325597
บ้าน
4,000.00
CR76
นิพล
ั ทธิ
สงสุ
022556688
แฟลต
3,000.00
PK
FK
Comment
FROM Client, Viewing
WHERE Client.clientNo =
Viewing.clientNo;
Viewing
clientNo
propertyNo
viewDate
comment
CR56
UB15
28/4/2547
CR56
UD16
26/5/2546
CR56
UD36
24/5/2547
หล ังเล็กเกินไป
CR62
UD36
26/5/2546
ไม่มห
ี อ
้ งกินข้าว
CR76
UD16
20/4/2547
ไกลเกินไป
52
การสืบค้ นข้ อมูลจากหลายตาราง
 นอกจากการเขียนคาสั่งเชื่อมโยงที่บรรทัด
WHERE แล้ ว
ยังสามารถเขียนคาสั่งเชื่อมโยงไว้ ท่ ี บรรทัด FROM โดย
ใช้ คาสั่ง JOIN ดังนี ้
FROM Client c JOIN Viewing v ON
c.clientNo = v.clientNo
FROM Client JOIN Viewing USING
clientNo
FROM Client NATURAL JOIN Viewing
53
จงแสดงรหัสสิ่งปลูกสร้ าง , ประเภท , ค่ าเช่ า , ชื่อ,
นามสกุลเจ้ าของบ้ านแต่ ละหลัง
 Cartesian Product
SELECT PropertyNo,type,rent,fname ,lname
FROM PropertyForRent , Owner
WHERE PropertyForRent.OwnerNo = Owner.OwnerNo;
 Join Operator
SELECT PropertyNo,type,rent,fname ,lname
FROM PropertyForRent INNER JOIN Owner
ON PropertyForRent.OwnerNo = Owner.OwnerNo;
54
จงแสดงชื่อ , นามสกุล พนักงานที่ทางานใน
จังหวัด อุดรธานี

Cartesian Product
SELECT fname , lname
FROM Staff , Branch
WHERE (Staff.branchNo = Branch.branchNo)
AND province = ‘อุดรธานี’;

Join Operator
SELECT fname , lname
FROM Staff INNER JOIN Branch
ON (Staff.branchNo = Branch.branchNo)
WHERE province = ‘อุดรธานี’;
55
จงแสดงชื่อนามสกุลเจ้ าของและรหัสสิ่งปลูกสร้ าง ,
ประเภท , คาเช่ าของสิ่งปลูกสร้ าง ที่ลูกค้ าที่ช่ ือ อารี
รั ตน์ นามสกุลบุญทองเข้ าชม
Cartesian Product
SELECT O.Fname , O.Lname , type , rent
FROM Owner O , PropertyForRent P ,
Client C,
Viewing V
WHERE (O.OwnerNo = P.OwnerNo) AND
(P.PropertyNo = V.PropertyNo) AND
(V.ClientNo = C.ClientNo) AND
(C.fname=‘อารีรัตน์ ’ AND C.Lname =‘บุญทอง’);

56
จงแสดงชื่อนามสกุลเจ้ าของและรหัสสิ่งปลูกสร้ าง ,
ประเภท , คาเช่ าของสิ่งปลูกสร้ าง ที่ลูกค้ าที่ช่ ือ อารีรัตน์
นามสกุลบุญทองเข้ าชม
JOIN Operator
SELECT O.Fname , O.Lname , type , rent
FROM (Owner O INNER JOIN PropertyForRent P
ON O.OwnerNo = P.OwnerNo) INNER JOIN
(Client C INNER JOIN Viewing V ON
V.ClientNo = C.ClientNo) ON
(P.PropertyNo = V.PropertyNo)
WHERE (C.fname=‘อารีรัตน์ ’ AND C.Lname =‘บุญทอง’);

57
การสืบค้ นข้ อมูลจากหลายตาราง
แสดงชื่อลูกค้ า,นามสกุล,รหัสสิ่งปลูกสร้ างและความคิดเห็นที่
เคยเข้ าชมสิ่งปลูกสร้ าง
SELECT clientNo , fName , lName , propertyNo , comment
FROM Client c JOIN Viewing v
ON c.clientNo = v.clientNo;
58
คาสัง่ ในการเพิ่มแถวข้ อมูล(INSERT)
 เพิ่มข้ อมูลทุกคอลัมน์ โดยเรี ยงลาดับตามคอลัมน์ ในตาราง
INSERT INTO <ชื่อตาราง>
VALUES(ค่ าข้ อมูลที่จะเพิ่มแต่ ละคอลัมน์ , … , ….)
 เพิ่มข้ อมูลบางคอลัมน์ ต้ องระบุคอลัมน์ ท่ จ
ี ะเพิ่ม
INSERT INTO <ชื่อตาราง>(ชื่อคอลัมน์ ท่ ตี ้ องการเพิ่ม)
VALUES(ค่ าข้ อมูลที่จะเพิ่มแต่ ละคอลัมน์ , … , …)
59
คาสัง่ ในการเพิ่มแถวข้ อมูล(INSERT)
เพิ่มข้ อมูลพนักงานใหม่ เข้ าตาราง Staff โดยเพิ่มทุกคอลัมน์
INSERT INTO Staff
VALUES(‘SUD33’,‘อารีรัตน์ ’ , ‘บุญทอง’ , ‘หัวหน้ าแผนก’ ,
‘ญ’ , ’20/8/1965’, 22000 , ‘B005’);
Staff
staffNo
SUD33
fName
lName
position
sex
อารี รัตน์ บุญทอง หัวหน้าแผนก ญ
DOB
salary
20/5/1965 22000
branchNo
B005
60
คาสัง่ ในการเพิ่มแถวข้ อมูล(INSERT)
เพิ่มข้ อมูลพนักงานใหม่ เข้ าตาราง Staff โดย รหัสพนักงาน=NK55
ชื่อ = สาวิตรี นามสกุล = บุญมี เงินเดือน =12000
INSERT INTO Staff(staffNo,fName,lName,Salary)
VALUES(‘SNK55’,‘สาวิตรี ’
, ‘บุญมี’ , 12000);
Staff
staffNo
fName
lName
position
sex
อารี รัตน์ บุญทอง หัวหน้าแผนก ญ
SNK55 สาวิตรี บุญมี
SUD33
DOB
salary
20/5/1965 22000
branchNo
B005
12000
61
คาสัง่ ในการปรับปรุงข้ อมูล(UPDATE)
UPDATE <ชื่อตารางที่ต้องการแก้ ไข>
SET ชื่อคอลัมน์ ท่ ตี ้ องการแก้ ไข = ค่ าข้ อมูลใหม่ , … , …
[WHERE เงื่อนไขในกรณีต้องการแก้ ไขบางแถว]
62
คาสัง่ ในการปรับปรุงข้ อมูล(UPDATE)
เพิ่มเงินเดือนให้ พนักงานทุกคน อีก 10 %ของ
เงินเดือนเดิม
UPDATE Staff
SET salary = salary * 1.10;
ไม่ มีคาสั่ง WHERE หมายถึง ปรั บปรุงข้ อมูลทุกแถว
63
คาสัง่ ในการปรับปรุงข้ อมูล(UPDATE)
เพิ่มเงินเดือนให้ ผ้ ูจัดการ อีก 15 %ของเงินเดือนเดิม
UPDATE Staff
SET salary = salary * 1.15
WHERE position = ‘ผู้จัดการ’;
มีคาสั่ง WHERE หมายถึง ปรั บปรุงข้ อมูลบางแถวที่ตรงกับเงื่อนไข
64
คาสัง่ ในการปรับปรุงข้ อมูล(UPDATE)
เปลี่ยนตาแหน่ งให้ พนักงานรหัส SNK37 เป็ น
ผู้จัดการ และ เพิ่มเงินเดือนให้ อีกอีก 20%ของ
เงินเดือนเดิม
UPDATE Staff
SET position = ‘ผู้จัดการ’,
salary = salary * 1.2
WHERE StaffNo = ‘SNK37’;
65
คาสัง่ ในการลบข้ อมูล(DELETE)
DELETE FROM <ชื่อตารางที่ต้องการลบข้ อมูล>
[WHERE เงื่อนไขในกรณีต้องการลบข้ อมูลบางแถว]
66
คาสั่งในการลบข้ อมูล(DELETE)
ลบข้ อมูลการเข้ าชมสิ่งปลูกสร้ าง หมายเลข UD36
DELETE FROM Viewing
WHERE propertyNo = ‘UD36’ ;
67
DATA Control LANGUAGE
DCL
68
คาสั่งในการสร้ างผู้ใช้ (CREATE USER)
CREATE USER <ชื่อเข้ าใช้ ระบบ>
SET PASSWORD <รหัสผ่ าน>
[ SET GROUPS groups_list ]
[ SET ACCOUNT ( LOCK | UNLOCK ) ]
69
คาสั่งในการสร้ างผู้ใช้ (CREATE USER)
CREATE USER REWADEE
SET PASSWORD KAI123
70
คาสั่งในการแก้ ไขผู้ใช้ (ALTER USER)
ALTER USER <ชื่อเข้ าใช้ ระบบ>
SET PASSWORD <รหัสผ่ าน>
[ SET GROUPS groups_list ]
[ SET ACCOUNT ( LOCK | UNLOCK ) ]
71
คาสั่งในการแก้ ไขผู้ใช้ (ALTER USER)
ALTER USER REWADEE
SET PASSWORD KAi321
SET ACCOUNT UNLOCK
72
คาสั่งในการลบผู้ใช้ (DROP USER)
DROP USER <ชื่อเข้ าใช้ ระบบ>
DROP USER REWADEE
73
คาสั่งในการให้ สิทธิผ้ ูใช้ (GRANT)
GRANT privileges
ON database_object
TO ( PUBLIC | user_list )
[ WITH GRANT OPTION ]
74
คาสั่งในการให้ สิทธิผ้ ูใช้ (GRANT)
ให้ สิทธิในการ Select , insert , update ข้ อมูลในตาราง Customers แก่
ผู้ใช้ ชื่อ REWADEE โดยอนุญาตให้ สิทธนีแ้ ก้ ผ้ ูใช้ คนอื่นต่ อไปได้
GRANT SELECT , INSERT , UPDATE
ON Customers
TO REWADEE
WITH GRANT OPTION ;
75
คาสั่งในการให้ สิทธิผ้ ูใช้ (GRANT)
ให้ สิทธิในการ Select ข้ อมูลในตาราง Product แก่ ผู้ใช้ ทุก
คน
GRANT SELECT
ON Products
TO Public ;
76
คาสั่งในการยกเลิกสิทธิผ้ ูใช้ (REVOKE)
REVOKE [ GRANT OPTION FOR ] privileges
ON database_object
FROM ( PUBLIC | user_list ) ;
77
คาสั่งในการยกเลิกสิทธิผ้ ูใช้ (REVOKE)
ยกเลิกสิทธิในการแก้ ไขข้ อมูลในตาราง Customers ของผู้ใช้
ชื่อ REWADEE
REVOKE Update
ON Customers
FROM REWADEE ;
78
คาสั่งในการยกเลิกสิทธิผ้ ูใช้ (REVOKE)
ยกเลิกสิทธิใน Select ข้ อมูลในตาราง Products ของผู้ใช้ ทุก
คน
REVOKE Select
ON Products
FROM Public ;
79