TRƢỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN

PHÁT TRIỂN PHẦN MỀM MÃ NGUỒN MỞ

Chƣơng 3: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MYSQL

Thời gian: 3 tiết

Giảng viên: ThS. Dƣơng Thành Phết

Email: phetcm@gmail.com

Website: http://www.thayphet.net

Tel: 0918158670 – facebook..com/DuongThanhPhet

1

http://www.thayphet.net

NỘI DUNG

1. Tổng quan về MySQL

3. Truy cập MySQL

2. Khởi động và tắt dịch vụ MySQL

4. Các thao tác trên CSDL

5. Định nghĩa bảng

6. Truy vấn dữ liệu

7. Import và Export dữ liệu

2

8. Công cụ đồ họa MySQL GUI TOOLS

http://www.thayphet.net

1. TỔNG QUAN VỀ MYSQL

 Là một hệ QT CSDL đa luồng, mã nguồn mở.

cho mọi mức độ.

 Chứ năng như SQL Server, Oracle…Chuyên dụng

 MySQL được phát triển phổ biến cho HĐH Linux, tuy nhiên hiện nay, đã sử dụng trên cả HĐH Windows.

 Phát triển bởi Cty tư vấn và phát triển ứng dụng của Thụy Điển TcX sau đổi tên thành MySQL AB. Hiện MySQL đã được Oracle mua.

3

 MySQL có nhiều phiên bản: Cá nhân có thể được dùng miễn phí. Tuy nhiên, các doanh nghiệp thì cần phải trả phí.

http://www.thayphet.net

1. TỔNG QUAN VỀ MYSQL

Đặc điểm MySQL

 Có tính khả chuyển, hoạt động trên nhiều nền tảng

 Tốc độ truy xuất nhanh, ổn định, dễ sử dụng.

HĐH.

 Cung cấp hệ thống thư viện hàm lớn.

 Khả năng bảo mật tốt

 Hoạt động như một hệ client/server hoặc trong hệ

thống nhúng.

Alcatel, Google, Nokia, YouTube…)

 Thích hợp cho các hệ thống trên Internet (Yahoo!,

4

 Được hỗ trợ bởi nhiều ngôn ngữ lập lập trình

http://www.thayphet.net

1. TỔNG QUAN VỀ MYSQL

Lịch sử phát triển MySQL

David Axmark thuộc công ty TcX.

 1994: Được phát triển bởi Michael Widenius và

 05-1995: Phiên bản đầu tiên  01-1998: Phiên bản 2 trên Windows 95, NT  01-2001: Phiên bản 3  03-2003: Phiên bản 4  02-2008: Sun MicroSystem mua lại MySQL AB.  11-2008: Ver 5.0, 5.1 phát hành, chứa khá nhiều lỗi

và hoạt động không hiệu quả.

 01-2010: Oracle mua lại Sun MicroSystem và phát

5

hành Ver 5.4, 5.5 hoạt động tốt hơn.

http://www.thayphet.net

2. KHỞI ĐỘNG VÀ TẮT DỊCH VỤ MYSQL

 Khi được cài đặt cùng WAMP Server, mỗi lần khởi động WAMP thì dịch vụ MySQL cũng tự động được kích hoạt.

6

 Để tắt và mở dịch vụ, ta có thể sử dụng biểu tượng WAMP Server ở khay hệ thống, chọn mục MySQL

http://www.thayphet.net

3. TRUY CẬP MYSQL

 Tài khoản mặc định của MySQL Server

7

 User : root  Password :

http://www.thayphet.net

3. TRUY CẬP MYSQL

 Đăng nhập bằng PhpMyAdmin

 Vào biểu tương WAMP Server, click PhpMyAdmin  Wamp đăng nhập vào MySQL bằng tài khoản root  Nếu thay đổi password chương trình sẽ không

8

đăng nhập được, cần chỉnh lại pass trong file c:\wamp\apps\phpmyadmin3.5.1\config.inc.php Mục : $cfg['Servers'][$i]['password'] = ‘…';

http://www.thayphet.net

3. TRUY CẬP MYSQL

 Đăng nhập bằng MySQL Console

 Tại icon WAMP Server, chọn mục MySQL, chọn

9

MySQL Console

http://www.thayphet.net

4. CÁC THAO TAC TRÊN CSDL

 Thay đổi mật khẩu set password for acount_name@server_name

= password("new_password");

 Xem tình trạng Server

status;

10

 Xem các cơ sở dữ liệu show databases;

http://www.thayphet.net

4. CÁC THAO TAC TRÊN CSDL

 Tạo CSDL mới

create database database_name;

 Sử dụng CSDL

use database_name;

 Xóa CSDL

11

drop database database_name;

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Các kiểu dữ liệu trong MySQL

12

 Kiểu số

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Các kiểu dữ liệu trong MySQL

13

 Kiểu chuỗi

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Các kiểu dữ liệu trong MySQL

14

 Kiểu ngày giờ

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

Enum : kiểu dữ liệu liệt kê, cho phép định nghĩa trước các giá trị cho một cột, cột sẽ chỉ lưu trữ một trong các giá trị định sẵn đó.

Vd : CREATE TABLE Test(

Return ENUM('Y','N') DEFAULT 'N', Size ENUM('S','M','L','XL','XXL'), Color ENUM('Black','Red','White')

)

Set : kiểu dữ liệu liệt kê, tương tự enum nhưng cho phép cột lưu trữ nhiều giá trị trong các giá trị định sẵn, mỗi giá trị cách nhau bởi dấu ', ' Vd :

Advertiser SET('Web Page','Television','Newspaper')

CREATE Table Test( )

15

 Các kiểu dữ liệu trong MySQL  Hỗn hợp (Miscellaneous)

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

16

 Các từ khóa khai báo cột

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Tạo bảng

Create table table_name ( column_names datatypes modifiers)

Vd: Tạo bảng Customers (khách hàng) CREATE TABLE Customers ( Customer_ID INT NOT NULLPRIMARY KEY AUTO_INCREMENT, First_Name VARCHAR(20)NOT NULL, Last_Name VARCHAR(30) NOT NULL,

Address VARCHAR(50), City VARCHAR(20), State VARCHAR(2), Zip VARCHAR(20), E_Mail VARCHAR(20), Age INT, Race VARCHAR(20), Gender ENUM('M', 'F') DEFAULT 'F', Favorite_Activity ENUM('Programming', 'Eating', 'Biking', 'Running', 'None') DEFAULT 'None', Occupation VARCHAR(30), Smoker CHAR(0)

);

17

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Thay đổi tên cột

 Thay đổi cấu trúc bảng

Alter table table_name

CHANGE old_column_name new_column_name old_datatype;

Vd:

ALTER TABLE Customers

CHANGE First_Name FirstName VARCHAR(20);

 Thay đổi kiểu dữ liệu

Alter table table_name

CHANGE column_name column_name

new_datatype;

Vd:

ALTER TABLE Customers

CHANGE Last_Name Last_Name VARCHAR(50);

18

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Đổi tên bảng

 Thay đổi cấu trúc bảng

Alter table table_name RENAME new_table_name;

Vd :

ALTER TABLE Customers RENAME Customer_Table;

 Thêm cột vào bảng

Alter table table_name ADD column_name datatype;

Vd :

ALTER TABLE Customer ADD Last_Name VARCHAR(30);

19

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Xoá một cột

 Thay đổi cấu trúc bảng

Alter table table_name DROP column_name;

Vd :

ALTER TABLE Customers DROP Last_Name;

 Thêm khoá chính

Alter table table_name

ADD Primary Key (column_names);

Vd :

ALTER TABLE Customers

ADD PRIMARY KEY (Customer_ID);

 Xoá khoá chính

Alter table table_name DROP Primary Key;

20

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Chèn dữ liệu

values (column_values);

Insert into table_name (column_names)

 Xóa dữ liệu

 Cập nhật dữ liệu

Delete From table_name Where condition

Update table_name

21

set filename=newvalue where condition

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Import & Export dữ liệu

Import từ file text

Mysqlimport.exe database_name table_name.txt Vd : mysqlimport QLBanHang Customer.txt

Lưu ý :

 Mỗi dòng dữ liệu được trình bày trên 1 dòng.  Giá trị text được đặt trong nháy đơn hoặc nháy kép.  Các giá trị cách bởi dấu phẩy (,).  Các giá trị phải được sắp theo thứ tự tương ứng Vd: Khi import vào bảng có các cột sau Customer_ID int, Last_Name varchar(25), First_Name varchar(15), dữ liệu file text như sau :

1, "Nguyen Minh","Thanh"

22

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Import & Export dữ liệu

Import từ file text

23

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Import & Export dữ liệu

Import từ file sql

Load Data Infile filename.sql Into Table table_name;

Để thực thi file sql ta sẽ sử dụng lệnh sau : Vd: LOAD DATA INFILE "C:\MyDocs\data.sql" INTO TABLE Orders;

24

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Import & Export dữ liệu

Nếu muốn chỉ định file sql nằm trên máy cục bộ, cá nhân :

Import từ file sql

Load Data Local Infile filename.sql Into Table table_name;

Để thay thế các dòng giá trị trùng nhau :

Load Data Local Infile filename.sql Replace

Into Table table_name;

Tuy nhiên, ta cũng có thể sử dụng phương thức Load Data

này cho các file text LOAD DATA INFILE "Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ',' ENCLOSED BY '"';

25

http://www.thayphet.net

5. ĐỊNH NGHĨA BẢNG

 Import & Export dữ liệu

- Để export cấu trúc và cả dữ liệu trong bảng ra file .txt ta dùng

chương trình mysqldump trong thư mục Bin của MySQL.

- File kết xuất sẽ nằm trên server.

Export dữ liệu : Chƣơng trình mysqldump

Mysqldump.exe –u username –p database_name table_name

> filename.txt

vd : mysqldump –u root –p qlBanHang Customers

> C:\Customer.txt

- Sau khi gõ lệnh, ta sẽ nhập password của tài khoản sử dụng.

- Nếu không muốn tạo từng file .txt cho từng bảng, mà muốn làm cho

cả CSDL, ta sử dụng lệnh

Mysqldump.exe –u username –p database_name > filename.txt

26

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

27

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

Mod (số bị chia, số chia) : Lấy phần dư của phép chia.

Hàm toán học

Vd :

Round(số, vị trí làm tròn) : hàm làm tròn số.

Select Mod(ThanhTien,2) From Orders as HoaDon;

Vd :

28

Select Round(ThanhTien,1) From Orders as HoaDon;

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

Hàm điều kiện

IF(logic_expression,true_result,false_result)

 Hàm kiểm tra điều kiện đúng/sai.

Vd :

Select If(SoLuong>20,5%,2%) as GiamGia From Orders;

IFNULL(result_1,result_2)

 Hàm trả về kết quả result_1 nếu nó không null ngược

lại sẽ trả về result_2.

Vd :

Select IfNull(10/0,1) as Exam

29

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

CASE value WHEN expression THEN result_1

ELSE result_2

 Hàm trả về result_1 khi expression đúng, ngược lại trả

về result_2.

Vd :

Select CASE 1 WHEN Column1="Y" THEN 1

WHEN Column2="Y" THEN 2

WHEN Column3="Y" THEN 3

ELSE "NONE";

30

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

SUBSTRING(chuỗi, vị trí bắt đầu)

Hàm chuỗi LTRIM, RTRIM, TRIM  Cắt bỏ những khoảng trắng thừa. Vd : Select LTRIM(" ABC") → "ABC" Vd : Select RTRIM("ABC ") → "ABC" Vd : Select TRIM(" ABC ") → "ABC"  Lấy một chuỗi con từ vị trí bắt đầu Vd : Select Substring("Hello World",7) → "World"

31

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

LOCATE(chuỗi 1, chuỗi 2, vị trí bắt đầu)

Hàm chuỗi  Xác định vị trí chuỗi 1 trong chuỗi 2 từ vị trí bắt đầu. Vd : Select Locate("lo","Hello World",1)

→ 4

REPLACE(chuỗi 1, chuỗi 2, chuỗi 3)

→ "Filename.123"

UCASE, LCASE

REVERSE

 Thay thế chuỗi 2 bằng chuỗi 3 trong chuỗi 1. Vd : select Replace("Filename.xxx","xxx","123")  Chuyển chữ thường thành in hoa và ngược lại.  Đảo ngược chuỗi.

32

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

MONTHNAME(date)

DAYOFYEAR(date)

DAYOFMONTH(date)

33

Hàm thời gian  Trả về tên tháng của date. Vd : Select monthname(20000105) → January  Trả về số ngày tính từ đầu năm đến date. Vd : Select dayofyear(20000201) → 32 Vd : Select dayofyear("2000/02/01") → 32  Trả về số ngày tính từ đầu tháng đến date. Vd : Select dayofyear(20000201) → 1 Vd : Select dayofyear("2000/02/01") → 1 Vd : Select dayofyear("00-02-01") → 1

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

DAYOFWEEK(date)

34

Hàm thời gian  Trả về số ngày tính từ đầu tuần đến date. Vd : Select dayofyear(20000201) → 3 Vd : Select dayofyear("0-2-1") → 3 YEAR(date) Trả về năm của date. QUARTER(date)  Trả về quý của date.

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

MONTH(date)

WEEK(date)

YEARWEEK(date)

NOW() , SYSDATE(), CURRENT_TIMESTAMP

 Các hàm sử dụng trong truy vấn

Hàm thời gian  Trả về tháng của date. DAY(date)  Trả về ngày của date.  Trả về số tuần của date tính từ ngày đầu tiên của năm.  Trả về số tuần của date tính từ ngày đầu tiên của năm.  Trả về ngày giờ hệ thống. Vd : Select NOW() → 2009-10-28 18:05:11 Vd : Select NOW()+0 → 20091028180511

35

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

CURDATE() , CURRENT_DATE

CURTIME() , CURRENT_TIME

MINUTE(time)

DATE_FORMAT(date,format)

TIME_FORMAT(time,format)

36

 Các hàm sử dụng trong truy vấn

Hàm thời gian  Trả về ngày của hệ thống.  Trả về ngày của hệ thống. HOUR(time)  Trả về giờ của time.  Trả về phút của time. SECOND(time)  Trả về giây của time.  Định dạng date theo format.  Định dạng date theo format.

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

37

Các tham số thời gian

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

Hàm thời gian

TO_DAYS(date)

 Trả về số ngày từ ngày đầu tiên sau Công Nguyên

đến date.

Vd : TO_DAYS("2000-01-01") → 730485

FROM_DAYS(number)

 Trả về ngày sau Công Nguyên number ngày.

Vd : FROM_DAYS(1000000) → 2737-11-28

 TIME_TO_SEC(time)

 Trả về thời gian tính bằng giây từ 0:00:00 đến time.

38

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

Hàm thời gian

SEC_TO_TIME(seconds)

 Trả về thời điểm sau 0:00:00 một khoảng thời gian là

seconds giây.

DATE_ADD(date, INTERVAL expression type)

 Cộng thêm một khoảng thời gian vào date.

 Cộng thêm một khoảng thời gian vào date.

39

ADDDATE(date, INTERVAL expression type)

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

 Các hàm sử dụng trong truy vấn

Hàm thời gian

DATE_SUB(date, INTERVAL expression type)

 Bớt đi một khoảng thời gian trong date.

SUBDATE(date, INTERVAL expression type)

 Bớt đi một khoảng thời gian trong date.

Vd: ADDDATE("1980-07-04",INTERVAL 15 YEAR)

→ 1995-07-04

Vd: SUBDATE(20001201, INTERVAL "10 4"

YEAR_MONTH)

→ 1990-08-01

40

http://www.thayphet.net

6.TRUY VẤN DỮ LIỆU

41

 Các hàm sử dụng trong truy vấn

http://www.thayphet.net

7. CÔNG CỤ ĐỒ HỌA MYSQL GUI TOOLS

 MySQL GUI Tool là bộ công cụ với giao diện đồ hoạ thân

thiện, dễ dàng thao tác trên MySQL hơn so với thao tác

bằng câu lệnh.

 Tải MySQL GUI Tools

trên web chính

thức của

MySQL(http://dev.mysql.com/downloads/gui-tools/5.0.html).

Bộ công cụ bao gồm 3 công cụ chính :

 MySQL Administrator: Quản trị MySQL Server.

 MySQL Query Browser: Thực hiện các câu truy vấn.

 MySQL Migration Toolkit: Chuyển đổi giữa các hệ CSDL.

42

http://www.thayphet.net

7. CÔNG CỤ ĐỒ HỌA MYSQL GUI TOOLS

 MySQL Administrator

43

http://www.thayphet.net

7. CÔNG CỤ ĐỒ HỌA MYSQL GUI TOOLS

 MySQL Administrator

44

http://www.thayphet.net

7. CÔNG CỤ ĐỒ HỌA MYSQL GUI TOOLS

 MySQL Administrator

45

TRƢỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN

PHÁT TRIỂN PHẦN MỀM MÃ NGUỒN MỞ

Chƣơng 3: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MYSQL

HẾT

46