You are on page 1of 47

SQL

MySQL

CodingThailand.com
.com
Programming Coach by
facebook.com/codingthailand

1 Data Definition Language

Data Definition Language


CREATE
ALTER
DROP

2 Data Manipulation Language

11

Data Manipulation Language


INSERT
UPDATE
DELETE

3 Data Retrieval Command

17

SELECT
SELECT
SELECT

26

1 Join
SELECT (Subqueries)

5 SQL Function

33

(Aggregate Function)
GROUP BY
HAVING

6 Data Control Language

40

(Privileges)
GRANT
REVOKE
www.codingthailand.com


E-Book 2558
SQL





2558






30/12/57

www.codingthailand.com


http://www.codingthailand.com/site/index.php?r=site/courses&id=10

www.codingthailand.com

1
Data Definition Language
SQL (Structure Query Language)
SQL
SQL Data Definition Language
DDL

1.
2.
3.
4.

Data Definition Language


CREATE
ALTER
DROP

www.codingthailand.com

1.1 Data Definition Language


Data Definition Language


CREATE
ALTER
DROP
5
SQL 5
1 Department

()

departmentID
INT
PRIMARY KEY
Name
VARCHAR(80)

2 Employee

()

employeeID
INT
PRIMARY KEY
Name
VARCHAR(80)

Job
VARCHAR(30)

Salary
INT

deparmentID
INT
FOREIGN KEY
departmentID
Department
3 EmployeeSkills

()

employeeID
INT
PRIMARY KEY
Skill
VARCHAR(15)

PRIMARY KEY employeeID

www.codingthailand.com

4 Client

()

clientID
INT
PRIMARY KEY
Name
VARCHAR(40)

Address
VARCHAR(100)

contactPerson
VARCHAR(80)

contactNumber
CHAR(12)

5 Assignment

()

clientID
INT
PRIMARY KEY
EmployeeID
INT
PRIMARY KEY
Workdate
DATE
PRIMARY KEY
Hours
FLOAT

(Data Types)


CHAR(size) (size)
CHAR(10)
VARCHAR(size) (size)
VARCHAR(20)
INT(size)
INT(6)
FLOAT(size,d) size
d FLOAT(10,2)
DATE

(Data Types) (size) DBMS


(Default) (Data Types)
DBMS

www.codingthailand.com

1.2 CREATE
CREATE
1.2.1 CREATE DATABASE
CREATE DATABASE
CREATE DATABASE ;
1 emp_db
CREATE DATABASE emp_db;
1.2.2 CREATE TABLE
CREATE TABLE
CREATE TABLE
(
1 ,
2 ,
3 ,
...
)
1) Constraints
1.1) PRIMARY KEY

CREATE TABLE
(
1 ,
2 ,
3 ,
...
PRIMARY KEY ( PRIMARY KEY)
)
PRIMARY KEY PRIMARY KEY
(,) PRIMARY KEY

www.codingthailand.com


CREATE TABLE
(
1 ,
2 ,
3 ,
...
PRIMARY KEY ( 1, 2, 3,)
)
1.2) FOREIGN KEY

CREATE TABLE
(
1 ,
2 ,
3 ,
...
FOREIGN KEY ( FOREIGN KEY) REFERENCES
( )
)
PRIMARY KEY
FOREIGN KEY
ON DELETE CASCADE

CREATE TABLE
(
1 ,
2 ,
3 ,
FOREIGN KEY ( FOREIGN KEY) REFERENCES
( ) ON DELETE CASCADE
)
www.codingthailand.com

PRIMARY KEY
FOREIGN KEY
ON UPDATE CASCADE

CREATE TABLE
(
1 ,
2 ,
3 ,
...
FOREIGN KEY ( FOREIGN KEY) REFERENCES
( ) ON UPDATE CASCADE
)
ON DELETE CASCADE ON UPDATE CASCADE


CREATE TABLE
(
1 ,
2 ,
3 ,
...
FOREIGN KEY ( FOREIGN KEY) REFERENCES
( ) ON DELETE CASCADE
ON UPDATE CASCADE
)
1.3) NOT NULL
NOT NULL
(Null)

www.codingthailand.com


CREATE TABLE
(
1 NOT NULL,
2 NOT NULL,
3 NOT NULL,
...
)
2 Department
CREATE TABLE Department
(
departmentID INT,
name VARCHAR(30) NOT NULL,
PRIMARY KEY (departmentID)
)
3 Employee
CREATE TABLE Employee
(
employeeID INT,
name VARCHAR(80),
job VARCHAR(30),
salary INT,
departmentID INT,
PRIMARY KEY (employeeID),
FOREIGN KEY (departmentID) REFERENCES Department (departmentID)
)

www.codingthailand.com

4 EmployeeSkills
CREATE TABLE EmployeeSkills
(
employeeID INT,
skill VARCHAR(15),
PRIMARY KEY (employeeID,skill)
)
5 Client
CREATE TABLE Client
(
clientID INT,
name VARCHAR(40),
address VARCHAR(100),
contactperson VARCHAR(80),
contactnumber CHAR(12),
PRIMARY KEY (clientID)
)
6 Assignment
CREATE TABLE Assignment
(
clientID INT,
employeeID INT,
workdate DATE,
hours FLOAT,
PRIMARY KEY (clientID, employeeID, workdate)
)

www.codingthailand.com

1.3 ALTER
1.3.1 ALTER TABLE
1) ALTER TABLE

ALTER TABLE
ADD
5 Department datestart
DATE
ALTER TABLE Department
ADD datestart DATE
2) ALTER TABLE

ALTER TABLE
DROP COLUMN
6 datestart Department
ALTER TABLE Department
DROP COLUMN datestart
3) ALTER TABLE PRIMARY KEY
PRIMARY KEY

ALTER TABLE
ADD PRIMARY KEY( )
7 PRIMARY KEY departmentID Department
ALTER TABLE Department
ADD PRIMARY KEY(departmentID)

www.codingthailand.com

10

4) ALTER TABLE FOREIGN KEY


FOREIGN KEY

ALTER TABLE
ADD FOREIGN KEY ( FOREIGN KEY) REFERENCES
( )
8 FOREIGN KEY departmentID Employee
departmentID Department
ALTER TABLE Employee
ADD FOREIGN KEY (departmentID) REFERENCES Department (departmentID)
1.4 DROP
1.4.1 DROP DATABASE

DROP DATABASE
9 emp_db
DROP DATABASE emp_db
1.4.2 DROP TABLE

DROP TABLE
10 Department
DROP TABLE Department

Data Definition Language


CREATE ALTER
DROP
www.codingthailand.com

11

2
Data Manipulation Language
Data Definition Language

SQL
Data Manipulation Language DML SELECT,
INSERT, UPDATE DELETE SELECT

1.
2.
3.
4.

Data Manipulation Language


INSERT
UPDATE
DELETE

www.codingthailand.com

12

2.1 Data Manipulation Language


Data Manipulation Language

3
INSERT
UPDATE
DELETE
2.2 INSERT
INSERT
2.2.1 INSERT 1

INSERT 1
INSERT INTO
VALUES (1, 2, 3,..)
1 INSERT 1 (record) Department
INSERT INTO Department
VALUES (1,Finance)
2.2.2 INSERT 2
INSERT 2
INSERT INTO ( 1, 2, 3,)
VALUES (1, 2, 3,)
2 INSERT 1 (record) Department

INSERT INTO Department (departmentID,name)
VALUES (1,Finance)

www.codingthailand.com

13

3 INSERT Employee
INSERT INTO Employee (employeeID,name,job,salary,departmentID)
VALUES (1111,Somchai,Programmer,15000,1)
3 departmentID Employee
departmentID Department ( 1) departmentID
Employee FOREIGN KEY
4 INSERT EmployeeSkills
INSERT INTO EmployeeSkills (employeeID,skill)
VALUES (1111,PHP)
5 INSERT Client
INSERT INTO Client (clientID,name,address,contactperson,contactnumber)
VALUES (1,ABC Company Limited,1 Silom Rd.,Vera,02-9555123)
6 INSERT Assignment
INSERT INTO Assignment (clientID,employeeID,workdate,hours)
VALUES (1,1111,2010-04-27,8.5)
2.3 UPDATE
UPDATE

UPDATE
SET 1=1, 2=2,...
WHERE
7 UPDATE Department name
Marketing (WHERE) departmentID 1
UPDATE Department
SET name = Marketing
WHERE departmentID = 1
www.codingthailand.com

14

8 UPDATE Employee salary


24000 (WHERE) job Programmer
UPDATE Employee
SET salary = 24000
WHERE job = Programmer
9 UPDATE Client UPDATE
(,)
UPDATE Client
SET contactperson = Sunee,contactnumber = 02-123456
WHERE clientID = 1


(Operators)
(Operators)
(Comparison Operators)

<

<=

>

>=

<>

10 UPDATE 10000
15000
UPDATE Employee
SET salary = 15000
WHERE salary < 10000

www.codingthailand.com

15

UPDATE UPDATE
(WHERE) UPDATE (record)
(WHERE) (record)

UPDATE Employee
SET salary = 24000
(WHERE) 24000
2.4 DELETE
DELETE

DELETE FROM
WHERE
11 DELETE
1111
DELETE FROM Employee
WHERE employeeID = 1111
12 DELETE
Programmer
DELETE FROM Employee
WHERE job = Programmer
DELETE


DELETE FROM
13 DELETE Assignment
DELETE FROM Assignment
www.codingthailand.com

16


Data Manipulation Language
INSERT
UPDATE
DELETE

www.codingthailand.com

17

3
Data Retrieval Command
Data Retrieval Command
Data Manipulation Language DML Data Retrieval Command
SELECT (Query)
SELECT (Operators)
SELECT

1. SELECT
2. SELECT
3. SELECT

www.codingthailand.com

18

3.1 SELECT
SELECT 5 5

Department ():
departmentID
Name
42
Finance
128
Research and Development
130
Marketing
Employee ():
employeeID
Name
1111
Somchai
2222
Wichit
3333
Somjai
4444
Yongyut

Job
Programmer
DBA
Programmer
Programmer

Salary
15000
13500
16500
20000

departmentID
128
42
128
130

EmployeeSkills: ( )
employeeID
skill
1111
JAVA
1111
PHP
2222
Linux
3333
JSP
4444
VB
4444
MySQL
Client: ( )
clientID
Name
1
ABC Company Limited
2
Imperial Industry

Address
1 Silom Rd.
100 Samutprakarn

contactPerson contactNumber
Vera
02-1234567
Mongkol
02-3456789

www.codingthailand.com

19

Assignment: ( )
clientID
employeeID
Workdate
1
1111
2010-04-10
2
2222
2010-04-20
1
1111
2010-04-25

hours
8.5
7
5


SELECT

SELECT 1, 2, 3,
FROM
1 SELECT Department
SELECT departmentID,Name
FROM Department
1
departmentID
Name
42
Finance
128
Research and Development
130
Marketing
(*)

2 Department

SELECT *
FROM Department

www.codingthailand.com

20

2
departmentID
42
128
130

Name
Finance
Research and Development
Marketing


3 employeeID Name Salary Employee
SELECT employeeID,Name,Salary
FROM Employee
3
employeeID
Name
Salary
1111
Somchai
15000
2222
Wichit
13500
3333
Somjai
16500
4444
Yongyut
20000
3.2 SELECT
SELECT
SELECT


SELECT 1, 2, 3,
FROM
WHERE
4 SELECT
Programmer
SELECT *
FROM Employee
WHERE job=Programmer
www.codingthailand.com

21

4
employeeID
Name
1111
Somchai
3333
Somjai
4444
Yongyut

Job
Programmer
Programmer
Programmer

Salary
15000
16500
20000

departmentID
128
128
130

5
16000
SELECT Name,Salary
FROM Employee
WHERE Salary > 16000
5
Name
Salary
Somjai
16500
Yongyut
20000
6 (contactPerson)
(contactNumber) Mongkol
SELECT contactPerson,contactNumber
FROM Client
WHERE contactPerson = Mongkol
6
contactPerson contactNumber
Mongkol
02-3456789
3.3 SELECT
(Operators)
SELECT SELECT

(=), (>), (<)

www.codingthailand.com

22

AND
OR
NOT
LIKE
BETWEEN

AND
OR

NOT

3.3.1 AND
7 Programmer 16000
SELECT name,salary
FROM Employee
WHERE job = Programmer AND salary < 16000
7
employeeID
Name
Job
Salary
departmentID
1111
Somchai
Programmer
15000
128
3.3.2 OR
8 (skill) JAVA PHP
SELECT *
FROM EmployeeSkills
WHERE skill = JAVA OR skill = MySQL
8
employeeID
skill
1111
JAVA
4444
MySQL

www.codingthailand.com

23

3.3.3 NOT
9 20000
SELECT employeeID,Name,Salary
FROM Employee
WHERE NOT Salary = 20000
9
employeeID
Name
Job
1111
Somchai
Programmer
2222
Wichit
DBA
3333
Somjai
Programmer
3.3.4 LIKE
10 S
SELECT name
FROM employee
WHERE name LIKE S%
10
Name
Somchai
Somjai
% (percent sign)
10 S
11 i
SELECT name
FROM employee
WHERE name LIKE %i%
11
Name
Somchai
Wichit
Somjai
www.codingthailand.com

24

_ (underscore) 1

12 (skill) 1
SP
SELECT skill
FROM Employeeskills
WHERE skill LIKE _SP
12
Name
JSP
3.3.5 BETWEEN
BETWEEN
AND
13 15000 20000
SELECT name,salary
FROM employee
WHERE salary BETWEEN 15000 AND 20000
13
Name
Salary
Somchai
15000
Somjai
16500
Yongyut
20000
14 (hours) (workdate)
(workdate) 20 .. 53 25 .. 53
SELECT hours,workdate
FROM Assignment
WHERE workdate BETWEEN 2010-04-20 AND 2010-04-25

www.codingthailand.com

25

14
hours
Workdate
7
2010-04-20
5
2010-04-25
BETWEEN DBMS
MySQL

ORDER BY 2
1. ORDER BY ASC
2. ORDER BY DESC
15

SELECT *
FROM client
ORDER BY name DESC
15
Name
contactNumber
Imperial Industry
02-3456789
ABC Company Limited
02-1234567
DESC ASC
ORDER BY ASC


SELECT (Query)


www.codingthailand.com

26

4

SELECT

1 (Joins) SELECT
(Subqueries)

1. 1 Join
2. SELECT (Subqueries)

www.codingthailand.com

27

4.1 1 Join

1

1
Join

Department ():
departmentID
Name
42
Finance
128
Research and Development
130
Marketing
Employee ():
employeeID
Name
Job
Salary
departmentID
1111
Somchai
Programmer
15000
128
2222
Wichit
DBA
13500
42
3333
Somjai
Programmer
16500
128
4444
Yongyut
Programmer
20000
Null
EmployeeSkills: ( )
employeeID
skill
1111
JAVA
1111
PHP
2222
Linux
3333
JSP
4444
VB
4444
MySQL
Client: ( )
clientID
Name
Address
contactPerson contactNumber
1
ABC Company Limited 1 Silom Rd.
Vera
02-1234567
2
Imperial Industry
100 Samutprakarn
Mongkol
02-3456789

www.codingthailand.com

28

Assignment: ( )
clientID
employeeID
Workdate
1
1111
2010-04-10
2
2222
2010-04-20
1
1111
2010-04-25

hours
8.5
7
5

Join
1. INNER JOIN

SELECT . ,
FROM 1
INNER JOIN 2
ON 1. 1=2. 2
1 2
1
SELECT employee.Name,department.Name
FROM Employee
INNER JOIN Department
ON Employee.departmentID = Department.departmentID
1
Name
Name
Somchai
Research and Development
Wichit
Finance
Somjai
Research and Development
INNER JOIN
1 departmentID Employee
departmentID Department

www.codingthailand.com

29

Employee

Department

4.1 INNER JOIN


2. LEFT JOIN

SELECT . ,
FROM 1
LEFT JOIN 2
ON 1. 1=2. 2
1 2
2

SELECT employee.Name,department.Name
FROM Employee
LEFT JOIN Department
ON Employee.departmentID = Department.departmentID
2
employeeName
departmentName
Somchai
Research and Development
Wichit
Finance
Somjai
Research and Development
Yongyut
Null

www.codingthailand.com

30

LEFT JOIN ( employee)


( Department) departmentID
employee departmentID Department
Employee

Department

4.2 LEFT JOIN


3. RIGHT JOIN

SELECT . ,
FROM 1
RIGHT JOIN 2
ON 1. 1=2. 2
1 2
3

SELECT employee.Name,department.Name
FROM Employee
RIGHT JOIN Department
ON Employee.departmentID = Department.departmentID

www.codingthailand.com

31

3
employeeName
departmentName
Somchai
Research and Development
Somjai
Research and Development
Wichit
Finance
RIGHT JOIN ( Department)
( Employee)
departmentID employee departmentID Department

Employee

Department

4.3 RIGHT JOIN


join join
AND
join
4 Research
and Development
SELECT employee.Name,department.Name
FROM Employee
INNER JOIN Department
ON Employee.departmentID = Department.departmentID
AND Department.Name = Research and Development

www.codingthailand.com

32

4
Name
Name
Somchai
Research and Development
Somjai
Research and Development
4.2 SELECT (Subqueries)
SELECT

5 (Assignment) Somchai
SELECT *
FROM Assignment
WHERE employeeID =
(SELECT employeeID
FROM employee
WHERE name=Somchai)
5
clientID
employeeID
Workdate
hours
1
1111
2010-04-10
8.5
1
1111
2010-04-25
5
SELECT SELECT
WHERE 1 5 WHERE
(employeeID) Subquery
Subquery

join 1 join INNER
JOIN join
LEFT JOIN INNER
JOIN ( Null
) RIGHT JOIN (
Null ) SELECT

www.codingthailand.com

33

5
SQL Function
(DBMS) SQL Function
SQL Function


SQL Function DBMS
SQL Function DBMS

1. (Aggregate Function)
2. GROUP BY
3. HAVING

www.codingthailand.com

34

5.1 (Aggregate Function)





AVG

COUNT
(query)
MAX


MIN


SUM



Department ():
departmentID
Name
42
Finance
128
Research and Development
130
Marketing
Employee ():
employeeID
Name
Job
Salary
departmentID
1111
Somchai
Programmer
15000
128
2222
Wichit
DBA
13500
42
3333
Somjai
Programmer
16500
128
4444
Yongyut
Programmer
20000
Null
EmployeeSkills: ( )
employeeID
skill
1111
JAVA
1111
PHP
2222
Linux
3333
JSP
www.codingthailand.com

35

4444
VB
4444
MySQL
Client: ( )
clientID
Name
Address
1
ABC Company Limited 1 Silom Rd.
2
Imperial Industry
100 Samutprakarn
Assignment: ( )
clientID
employeeID
Workdate
1
1111
2010-04-10
2
2222
2010-04-20
1
1111
2010-04-25

contactPerson contactNumber
Vera
02-1234567
Mongkol
02-3456789
hours
8.5
7
5

5.1.1 AVG

SELECT AVG( )
FROM
1
SELECT AVG(salary)
FROM Employee
1
AVG(salary)
16250.0000
5.1.2 (query) COUNT

SELECT COUNT( )
FROM

www.codingthailand.com

36

2
SELECT COUNT(*)
FROM Department
2
COUNT(*)
3
5.1.3 MAX

SELECT MAX( )
FROM
3
SELECT MAX(salary)
FROM Employee
3
MAX(salary)
20000
5.1.4 MIN

SELECT MIN( )
FROM
4
SELECT MIN(salary)
FROM Employee
4
MIN(salary)
13500

www.codingthailand.com

37

5.1.5 SUM

SELECT SUM( )
FROM
5
SELECT SUM(salary)
FROM Employee
5
SUM(salary)
65000
WHERE

6 15000
SELECT AVG(salary)
FROM Employee
WHERE salary <= 15000
6
AVG(salary)
14250.0000
5.2 GROUP BY
Aggregate
Function (set) 1

GROUP BY

www.codingthailand.com

38


SELECT , ( )
FROM
WHERE
GROUP BY
WHERE
7 (skill)
SELECT employeeID, COUNT(skill)
FROM EmployeeSkills
GROUP BY employeeID
7
employeeID
COUNT(skill)
1111
2
2222
1
3333
1
4444
2
7 employeeID

8 3333
(skill)
SELECT employeeID, COUNT(skill)
FROM EmployeeSkills
WHERE employeeID >= 3333
GROUP BY employeeID
8
employeeID
COUNT(skill)
3333
1
4444
2

www.codingthailand.com

39

5.3 HAVING

HAVING

SELECT , ( )
FROM
WHERE
GROUP BY
HAVING ( )
WHERE
9 1
SELECT employeeID, COUNT(skill)
FROM EmployeeSkills
GROUP BY employeeID
HAVING COUNT(skill) > 1
9
employeeID
COUNT(skill)
1111
2
4444
2
9 COUNT
HAVING

(DBMS) SQL Function

Aggregate Function
SUM AVG COUNT
MIN MAX

www.codingthailand.com

40

6
Data Control Language



Data Control Language DCL
2 GRANT REVOKE

1. (Privileges)
2. GRANT
3. REVOKE

www.codingthailand.com

41

6.1 (Privileges)
(DBMS)

(Privilege)
(Privileges)
SELECT
INSERT
UPDATE
DELETE
ALTER
ALL

(Privileges)

6.2 (Privileges) GRANT
GRANT (Privileges)


GRANT 1, 2,
ON
TO 1, 2,



GRANT ALL PRIVILEGES
ON
TO 1, 2,

www.codingthailand.com

42

1 Employee user1
GRANT SELECT
ON Employee
TO user1
2

Employee user1
GRANT ALL PRIVILEGES

ON Employee
TO user1
3 Employee user1
GRANT SELECT,UPDATE,DELETE
ON Employee
TO user1
6.3 (Privileges) REVOKE
REVOKE (Privileges)


REVOKE 1, 2,
ON
FROM 1, 2,



REVOKE ALL PRIVILEGES
ON
FROM 1, 2,

www.codingthailand.com

43

4 Employee user1
REVOKE SELECT
ON Employee
FROM user1
5 Employee user1
GRANT SELECT,UPDATE,DELETE
ON Employee
FROM user1
6

Employee user1
REVOKE ALL PRIVILEGES

ON Employee
FROM user1


Data Control Language DCL
GRANT
REVOKE

www.codingthailand.com

You might also like