--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Hiển thị các bài đăng có nhãn Cơ bản về mySQL. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Cơ bản về mySQL. Hiển thị tất cả bài đăng

Ngu ngơ học làm web (106) - Kết hợp PHP – mySQL – thư viện PDO (tt)

Tiếp theo của: Ngu ngơ học làm web (105) - Kết hợp PHP – mySQL –  thư viện PDO
-----

Phần 106. Kết hợp PHP – mySQL –  thư viện PDO (tt)


Xem và làm theo clip số 13 của thầy Nguyễn Anh Tuấn:


Như vậy, tới đây đã biết được một số bước để làm việc với cơ sở dữ liệu, như:

- Tạo một đối tượng PDO, kết nối tới cơ sở dữ liệu mySQL

- Tạo câu truy vấn

- Dùng đối tượng PDO để thực thi câu truy vấn, kết quả của truy vấn được chứa trong một biến mảng của PHP

- Xuất biến mảng theo yêu cầu

- Đóng kết nối tới cơ sở dữ liệu mySQL

Trong clip 13 có sử dụng tới bảng user, vì vậy sẽ tạo thêm bảng này và thêm một số mẩu tin vào để thực hành.

user
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
id
int(11)


No
None
AUTO_INCREMENT
2
username
varchar(50)


No
None

3
password
varchar(50)


No
None

4
fullname
varchar(100)
utf8_unicode_ci




5
birthday
date


No
None

6
gender
boolean


No
None

7
address
varchar(200)
utf8_unicode_ci

No
None

8
email
varchar(50)


No
None

9
Identitycard
varchar(20)


No
None

10
Phonenumber
varchar(20)


No
None


Ghi lại đoạn mã để tham khảo, đoạn mã dưới đây có sử dụng try – catch để bẫy lỗi.

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Thông tin người dùng</title>
</head>
<?php
try
{
            //Khai báo đối tượng PDO
            $pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
            //Xuất tiếng Việt
            $pdo->query("SET NAMES UTF8");
            //Tạo câu truy vấn
            $sql = "SELECT * FROM user";
            //Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $nguoi_dung
            $nguoi_dung = $pdo->query($sql);
}
catch (PDOException $ex)
{
            die($ex->getMessage());
}
?>
<body>
<?php
            if($nguoi_dung->rowcount() > 0 ){
?>
<table width="800" border="0" cellspacing="5" cellpadding="5" align="center">
            <caption>
                        <h2>THÔNG TIN NGƯỜI DÙNG</h2>
            </caption>
            <tr>
                        <td>Họ tên</td>
                        <td>Địa chỉ</td>
                        <td>Email</td>
                        <td>Điện thoại</td>
                        <td>Ngày sinh</td>
            </tr>
<?php
            foreach ($nguoi_dung as $nd) {
?>
            <tr>
                        <td><?php echo $nd[fullname] ?></td>
                        <td><?php echo $nd[address] ?></td>
                        <td><?php echo $nd[email] ?></td>
                        <td><?php echo $nd[phonenumber] ?></td>
                        <td><?php echo $nd[birthday] ?></td>
            </tr>  
<?php } ?>
</table>
<?php }
            $pdo->NULL;
?>
</body>
</html>

Xem và làm theo clip số 14 của thầy Nguyễn Anh Tuấn:


Phần này sẽ tách đoạn mã kết nối cơ sở dữ liệu sang một tập tin riêng. Ví dụ, tập tin tên là connection.php.

<?php
try
{
            //Khai báo đối tượng PDO
            $pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
            //Xuất tiếng Việt
            $pdo->query("SET NAMES UTF8");
}
catch (PDOException $ex)
{
            die($ex->getMessage());
}
?>

Đây là đoạn mã trong tập tin hien_thi_tin_tuc.php.

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách tin tức</title>
</head>
<?php
            include("connection.php");
            //Tạo câu truy vấn
            $sql = "SELECT * FROM tin_tuc";
            //Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $tin_tuc
            $tin_tuc = $pdo->query($sql);
?>
<body>
<?php
            if($tin_tuc->rowcount() > 0 ){
?>
<table width="800" border="0" cellspacing="5" cellpadding="5" align="center">
            <caption>
                        <h2>THÔNG TIN TIN TỨC</h2>
            </caption>
            <tr>
                        <td>Tiêu đề</td>
                        <td>Tóm tắt</td>
                        <td>Tác giả</td>
                        <td>Ngày đăng</td>
                        <td>Số lượt xem</td>
            </tr>
<?php
            foreach ($tin_tuc as $item) {
?>
            <tr>
                        <td><?php echo $item[tieu_de] ?></td>
                        <td><?php echo $item[tom_tat] ?></td>
                        <td><?php echo $item[tac_gia] ?></td>
                        <td><?php echo $item[ngay_dang] ?></td>
                        <td><?php echo $item[so_luot_xem] ?></td>
            </tr>  
<?php } ?>
</table>
<?php }
            $pdo->NULL;
?>
</body>

</html>
-----------
Cập nhật 15/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (105) - Kết hợp PHP – mySQL – thư viện PDO

Tiếp theo của: Ngu ngơ học làm web (104) - mySQL – cập nhật dữ liệu
-----

Phần 105. Kết hợp PHP – mySQL –  thư viện PDO


Tới đây đã biết một chút về PHP, mySQL, phần này sẽ kết hợp PHP và mySQL để làm một số chức năng đơn giản.

Lưu ý phần này đang thực hiện lập trình ở phía server-side, nghĩa là các xử lý sẽ được biên dịch và thực thi tại web server. Khi dùng trình duyệt để xem kết quả nghĩa là đoạn mã đã được biên dịch và thực thi hai lần, lần một tại web server và lần hai tại trình duyệt của người dùng. Phía server-side xử lý mã của PHP, phía client-side xử lý mã HTML và CSS.

PDO viết tắt của PHP Data Objects, hiểu nôm na là các đối tượng dữ liệu, hay lớp truy cập cơ sở dữ liệu trong PHP. PDO là một thư viện được sử dụng để thao tác với cơ sở dữ liệu. Khi lập trình với PHP, ngoài PDO còn có hai thư viện khác có thể thao tác với cơ sở dữ liệu là MySQL (đã ngừng phát triển) và MySQLi.

Xem và làm theo clip số 11 của thầy Nguyễn Anh Tuấn:


Trong clip tác giả dùng Dreamweaver để lập trình, tuy nhiên có thể dùng editor bất kì, ví dụ Sublime text.

Các bước xử lý gồm:

- Kết nối cơ sở dữ liệu bằng PDO

- Đọc dữ liệu từ một bảng

- Duyệt qua từng dòng

- Đọc các trường (của mỗi dòng) để xuất ra giao diện

Kết nối tới cơ sở dữ liệu bằng PDO

Cú pháp:

$conn = new PDO("mysql:host=servername;dbname=myDB", username, password);

Trong đó,

- servername: tên của máy server chứa cơ sở dữ liệu.

- myDB: tên của cơ sở dữ liệu.

- username, password: tên và mật khẩu của tài khoản truy cập vào hệ quản trị cơ sở dữ liệu.

Ví dụ,

$pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");

Tạo câu truy vấn

$sql = "SELECT ma_loai,ten_loai,mo_ta FROM loai_mon_an";

Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $loai_mon

$loai_mon = $pdo->query($sql);

Xuất số lượng mẩu tin kết quả để kiểm tra

echo $loai_mon->rowcount();

Ngắt kết nối tới cơ sở dữ liệu (giải phóng đối tượng PDO)

$pdo->NULL;

Đoạn mã để chạy kiểm tra,

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách loại món ăn</title>
</head>
<?php
//Khai báo đối tượng PDO
$pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
//Tạo câu truy vấn
$sql = "SELECT ma_loai,ten_loai,mo_ta FROM loai_mon_an";
//Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $loai_mon
$loai_mon = $pdo->query($sql);
//Xuất số lượng mẩu tin kết quả để kiểm tra
echo $loai_mon->rowcount();
?>
<body>
</body>
</html>

Đoạn mã xuất các loại món ăn:

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách loại món ăn</title>
</head>
<?php
//Khai báo đối tượng PDO
$pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
//Xuất tiếng Việt
$pdo->query("SET NAMES UTF8");
//Tạo câu truy vấn
$sql = "SELECT ma_loai,ten_loai,mo_ta FROM loai_mon_an";
//Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $loai_mon
$loai_mon = $pdo->query($sql);
?>
<body>
<?php
            if($loai_mon->rowcount() > 0 ){
?>
<table width="500" border="0" cellspacing="5" cellpadding="5" align="center">
            <caption>
                        <h2>THÔNG TIN LOẠI MÓN ĂN</h2>
            </caption>
            <tr>
                        <td>Mã loại</td>
                        <td>Tên loại</td>
                        <td>Diễn giải</td>
            </tr>
<?php
            foreach ($loai_mon as $loai) {
?>
            <tr>
                        <td><?php echo $loai[0] ?></td>
                        <td><?php echo $loai[1] ?></td>
                        <td><?php echo $loai[2] ?></td>
            </tr>  
<?php } ?>
</table>
<?php } ?>
</body>
</html>

Xem và làm theo clip số 12 của thầy Nguyễn Anh Tuấn:


Đoạn mã hiển thị danh sách khách hàng, và ngắt kết nối tới cơ sở dữ liệu.

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách khách hàng</title>
</head>
<?php
//Khai báo đối tượng PDO
$pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
//Xuất tiếng Việt
$pdo->query("SET NAMES UTF8");
//Tạo câu truy vấn
$sql = "SELECT * FROM khach_hang";
//Thực thi câu truy vấn, các mẩu tin kết quả chứa trong biến $khach_hang
$khach_hang = $pdo->query($sql);
?>
<body>
<?php
            if($khach_hang->rowcount() > 0 ){
?>
<table width="800" border="0" cellspacing="5" cellpadding="5" align="center">
            <caption>
                        <h2>THÔNG TIN KHÁCH HÀNG</h2>
            </caption>
            <tr>
                        <td>Mã KH</td>
                        <td>Họ tên</td>
                        <td>Địa chỉ</td>
                        <td>Điện thoại</td>
                        <td>Email</td>
            </tr>
<?php
            foreach ($khach_hang as $khach) {
?>
            <tr>
                        <td><?php echo $khach[ma_khach_hang] ?></td>
                        <td><?php echo $khach[ten_khach_hang] ?></td>
                        <td><?php echo $khach[dia_chi] ?></td>
                        <td><?php echo $khach[dien_thoai] ?></td>
                        <td><?php echo $khach[email] ?></td>
            </tr>  
<?php } ?>
</table>
<?php }
//Ngắt kết nối tới cơ sở dữ liệu (giải phóng đối tượng PDO)
            $pdo->NULL;
?>
</body>

</html>
-----------
Cập nhật 14/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (104) - mySQL – cập nhật dữ liệu

Tiếp theo của: Ngu ngơ học làm web (103) - mySQL – truy vấn con (sub query)
-----

Phần 104. mySQL – cập nhật dữ liệu


Xem và làm theo clip số 8 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh UPDATE:

UPDATE <ten_bang>
SET ten_field = gia_tri, ten_field2 = gia_tri2
WHERE dieu_kien

Lưu ý: cẩn thận với các lệnh liên quan đến cập nhật dữ liệu, vì nó làm thay đổi giá trị của cơ sở dữ liệu.

Ví dụ,

1. Hãy cập nhật lại đơn giá cho món ăn có tên là Gà quay, giá mới là 60000 VNĐ.

UPDATE mon_an
SET don_gia = 60000
WHERE ten_mon = "Gà quay"

2. Hãy cập nhật lại đơn giá cho từng thực đơn là số tiền của các món ăn trong bảng mon_an.

UPDATE thuc_don td
SET don_gia = (SELECT sum(so_luong * don_gia) AS ThanhTien
FROM thuc_don_mon_an tdma INNER JOIN mon_an ma ON tdma.ma_mon = ma.ma_mon WHERE ma_thuc_don = td.ma_thuc_don ORDER BY 1)

3. Giảm 5% đơn giá cho hóa đơn có số hóa đơn là 2

UPDATE hoa_don
SET tong_tien = tong_tien * 0.95
WHERE ma_hoa_don = 2

4. Tạo thêm cột gia_tri cho bảng hoa_don, sau đó tính giá trị cho mỗi hóa đơn và cập nhật cho cột giá trị của bảng này.

UPDATE hoa_don hd
SET tri_gia = (SELECT sum(so_luong * don_gia) FROM chi_tiet_hoa_don WHERE ma_hoa_don = hd.ma_hoa_don)

Xem và làm theo clip số 9 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh DELETE:

DELETE FROM <ten_bang>
WHERE dieu_kien

1. Xóa khách hàng có mã khách hàng là 5 trong bảng khach_hang

DELETE FROM khach_hang WHERE ma_khach_hang = 5

Lưu ý: nếu có thiết lập ràng buộc khóa ngoại giữa các bảng thì cần xóa các mẩu tin ở các bảng có liên quan trước.

2. Xóa các món ăn có loại món ăn là “Cơm”

DELETE m.* FROM mon_an m INNER JOIN loai_mon_an l ON m.ma_loai = l.ma_loai WHERE l.ten_loai = "Cơm"

Lưu ý: sử dụng bí danh m.* để xác định là sẽ xóa dữ liệu trên bảng mon_an.

3. Xóa những món ăn có đơn giá nhỏ hơn 50000

DELETE FROM mon_an WHERE don_gia < 50000

4. Xóa những thực đơn chưa có món ăn nào

DELETE FROM thuc_don WHERE ma_thuc_don NOT IN (SELECT ma_thuc_don FROM thuc_don_mon_an)

5. Xóa những khách hàng không có hóa đơn

DELETE FROM khach_hang WHERE ma_khach_hang NOT IN (SELECT ma_khach_hang FROM hoa_don)

Xem và làm theo clip số 10 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh:

- Thêm một dòng: INSERT INTO <ten_bang> VALUES(các giá trị tương ứng với các field)

- Thêm nhiều dòng: INSERT INTO <ten_bang> SELECT danh_sach_field FROM <bang> [WHERE GROUP BY]; lưu ý: danh_sach_field phải tương ứng với các field của ten_bang.

Ví dụ,

1. Thêm thực đơn mới, thông tin gồm:

Tên thực đơn: Thực đơn 13
Đơn giá: 0
Nội dung: Súp cua, lẩu thái, tôm nướng, gà quay
Hình: thuc-don13.jpg

Câu lệnh:

INSERT INTO thuc_don
VALUES("NULL", "Thực đơn 13", 0, 0, "Súp cua, lẩu thái, tôm nướng, gà quay", "thuc-don13.jpg")

2. Sao chép cấu trúc bảng hoa_don ra bảng hoa_don_backup

Chọn bảng hoa_don, chọn mục Operations, trong mục Copy table to… đặt tên cho bảng mới là hoa_don_backup, chọn mục Structure only, bấm nút Go.

3. Thêm tất cả hóa đơn được lập trong tháng 1 năm 2017 từ bảng hoa_don vào hoa_don_backup

INSERT INTO hoa_don_backup
SELECT * FROM hoa_don WHERE MONTH(ngay_dat) = 1 AND YEAR(ngay_dat) = 2017

4. Thêm năm món ăn mới vào bảng mon_an

Chèn từng món ăn với các thông tin tương ứng với từng trường như sau:

INSERT INTO mon_an

VALUES(‘ma_mon’, ‘ma_loai’, ‘ten_mon’, ‘noi_dung_tom_tat’, ‘noi_dung_chi_tiet’, ‘don_gia’, ‘don_gia_khuyen_mai’, ‘khuyen_mai’, ‘hinh’, ‘ngay_cap_nhat’, ‘dvt’, ‘trong_ngay’)
-----------
Cập nhật 9/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (103) - mySQL - truy vấn con (sub query)

Tiếp theo của: Ngu ngơ học làm web (102) - mySQL – truy vấn có nhóm và thống kê
-----

Phần 103. mySQL – truy vấn con (sub query)


Xem và làm theo clip số 7 của thầy Nguyễn Anh Tuấn:

Truy vấn con là các truy vấn lồng nhau, chỉ liệt kê được một cột (field).

Cách làm: tạo câu lệnh truy vấn con > tạo câu lệnh truy vấn cha > lồng câu lệnh truy vấn con vào câu lệnh truy vấn cha.

Ví dụ,

1. Liệt kê loại món ăn chưa có món ăn nào

Sử dụng từ khóa distinct để loại bỏ các dòng tin trùng lặp trong kết quả truy vấn.

Câu truy vấn con: liệt kê tất cả các loại món ăn có xuất hiện trong bảng mon_an:

SELECT DISTINCT ma_loai
FROM mon_an

Câu truy vấn cha:

SELECT *
FROM loai_mon_an
WHERE ma_loai NOT IN (Câu truy vấn con)

Lồng câu truy vấn con vào câu truy vấn cha:

SELECT *
FROM loai_mon_an
WHERE ma_loai NOT IN (SELECT DISTINCT ma_loai FROM mon_an)

2. Liệt kê món ăn chưa có khách hàng nào mua

Tìm các món ăn đã có khách hàng mua.

Dựa vào bảng chi_tiet_mon_an.

Câu truy vấn con:

SELECT DISTINCT ma_mon FROM chi_tiet_hoa_don

Câu truy vấn cha:

SELECT ma_mon, ten_mon FROM mon_an
WHERE ma_mon NOT IN (câu truy vấn con)

Câu truy vấn kết quả:

SELECT ma_mon, ten_mon FROM mon_an
WHERE ma_mon NOT IN (SELECT DISTINCT ma_mon FROM chi_tiet_hoa_don)

3. Liệt kê món ăn có doanh thu cao nhất

Câu truy vấn con:

SELECT SUM(so_luong * don_gia) AS DoanhThu
FROM chi_tiet_hoa_don
GROUP BY ma_mon
ORDER BY 1 DESC
LIMIT 0, 1

Câu truy vấn kết quả:

SELECT m.ma_mon, ten_mon, SUM(so_luong * ct.don_gia) AS DoanhThu
FROM mon_an m INNER JOIN chi_tiet_hoa_don ct
ON m.ma_mon = ct.ma_mon
GROUP BY m.ma_mon, ten_mon
HAVING SUM(so_luong * ct.don_gia) = (SELECT SUM(so_luong * don_gia) AS DoanhThu
FROM chi_tiet_hoa_don
GROUP BY ma_mon
ORDER BY 1 DESC
LIMIT 0, 1
)

4. Liệt kê thực đơn chưa có món ăn nào

Do trong cơ sở dữ liệu chưa có bảng thuc_don_mon_an, nên sẽ tạo thêm bảng này.

thuc_don_mon_an
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_thuc_don
int(11)


No
None

2
ma_mon
int(11)


No
None

3
so_luong
int(11)


No
None


Lưu ý: ma_thuc_don và ma_mon là khóa ngoại, nên cần cấu hình ràng buộc khóa ngoại cho hai thuộc tính này.

Cách làm: đầu tiên thiết lập thuộc tính INDEX cho hai cột ma_thuc_don và ma_mon ở bảng thuc_don_mon_an.

Sau đó, chọn tab Structure, chọn tab Relation view, cấu hình trong mục Foreign key constraints.

Nhập một số thông tin cho bảng thuc_don_mon_an.

Câu lệnh truy vấn:

SELECT * FROM thuc_don
WHERE ma_thuc_don NOT IN (SELECT DISTINCT ma_thuc_don FROM thuc_don_mon_an)  

5. Liệt kê các thực đơn chưa có khách hàng mua

SELECT * FROM thuc_don
WHERE ma_thuc_don NOT IN (
SELECT DISTINCT ma_thuc_don FROM thuc_don_mon_an
WHERE ma_mon IN (SELECT DISTINCT ma_mon FROM chi_tiet_hoa_don)
ORDER BY 1)

6. Liệt kê khách hàng chưa đặt món

SELECT * FROM khach_hang
WHERE ma_khach_hang NOT IN (SELECT ma_khach_hang FROM hoa_don)

7. Liệt kê danh sách món ăn có cùng loại món ăn với món ăn có mã món ăn là 4

SELECT ma_loai, ma_mon, ten_mon FROM mon_an
WHERE ma_loai = (SELECT ma_loai FROM mon_an WHERE ma_mon=4)

8. Liệt kê các món ăn có đơn giá cao nhất theo từng loại món ăn

SELECT ma_loai, ten_mon, ma_mon, don_gia FROM `mon_an` as m
WHERE don_gia = (SELECT max(don_gia) FROM mon_an WHERE ma_loai = m.ma_loai)

ORDER BY 1
-----------
Cập nhật 7/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (98) - MySQL - khái niệm

Tiếp theo của: Ngu ngơ học làm web (97) - Stateless, stateful, connectionless
-----

Phần 98. MySQL - khái niệm


Vào lại trang index.php của ứng dụng Openemr, sẽ thấy dòng mã này:
require_once "sites/$site_id/sqlconf.php";

Mở theo đường dẫn sites/default/sqlconf.php sẽ thấy các thông tin cấu hình liên quan đến MySQL.

Để có thể đọc, hiểu được mã nguồn của Openemr, phần này sẽ học tiếp các kiến thức cơ bản về cơ sở dữ liệu, về hệ quản trị cơ sở dữ liệu MySQL.

Cơ sở dữ liệu là gì?


Cơ sở dữ liệu là một tập hợp thông tin có cấu trúc. Các thông tin này được duy trì dưới dạng một tập hợp các tập tin trong hệ điều hành, hoặc được lưu trữ trong các hệ quản trị cơ sở dữ liệu.

Ưu điểm của cơ sở dữ liệu:

  Giảm sự trùng lặp thông tin xuống mức thấp nhất

  Có thể truy xuất thông tin theo nhiều cách

  Cho phép nhiều người cùng sử dụng một lúc

Cơ sở dữ liệu phản ánh một phần của thế giới thật.

Có nhiều loại cơ sở dữ liệu, ví dụ:

Loại cơ sở dữ liệu
Đặc điểm
Cơ sở dữ liệu dạng tập tin
Dữ liệu được lưu trữ dưới dạng các tâp tin (text, ascii, .dbf).
Cơ sở dữ liệu quan hệ
Dữ liệu được lưu trữ trong các bảng dữ liệu gọi là các thực thể, giữa các thực thể này có mối liên hệ với nhau gọi là các quan hệ, mỗi quan hệ có các thuộc tính, trong đó có một thuộc tính là khóa chính. Các hệ quản trị hỗ trợ cơ sở dữ liệu quan hệ như: MS SQL server, Oracle, MySQL,…v.v.
Cơ sở dữ liệu hướng đối tượng
Dữ liệu cũng được lưu trữ trong các bảng dữ liệu, nhưng các bảng có bổ sung thêm các tính năng hướng đối tượng như lưu trữ thêm các hành vi, nhằm thể hiện hành vi của đối tượng. Mỗi bảng xem như một lớp dữ liệu, mỗi dòng dữ liệu trong bảng là một đối tượng. Các hệ quản trị có hỗ trợ cơ sở dữ liệu hướng đối tượng như: MS SQL server, Oracle, PostgreSQL (viết tắt Postgres).
Cơ sở dữ liệu bán cấu trúc
Dữ liệu được lưu dưới dạng XML, với định dạng này, thông tin mô tả về đối tượng thể hiện trong các thẻ (tag). Đây là cơ sở dữ liệu có nhiều ưu điểm, do lưu trữ được hầu hết các loại dữ liệu khác nhau. Đây là hướng mới trong nghiên cứu và ứng dụng. Ngoài ra, dữ liệu còn được lưu dưới dạng JSON, BSON.

Hệ quản trị cơ sở dữ liệu là gì?

Theo vi.wiki:

Hệ quản trị cơ sở dữ liệu (tiếng Anh: Database Management System – DBMS) là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu.

Các DBMS cho phép lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một cơ sở dữ liệu. Có nhiều loại DBMS khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân đến những hệ quản trị phức tạp chạy trên một hoặc nhiều siêu máy tính.

Đa số các DBMS đều sử dụng ngôn ngữ truy vấn theo cấu trúc, tiếng Anh gọi là Structured Query Language (SQL).

Các DBMS phổ biến gồm: MySQL, Oracle, PostgreSQL, SQL server, DB2, Infomix.

Phần lớn các DBMS hoạt động tốt trên nhiều hệ điều hành khác nhau như Linux, Unix mà MacOS, trừ SQL server của Microsoft chỉ chạy trên hệ điều hành Windows.

Cùng xem và làm thực hành theo loạt bài giảng của thầy Nguyễn Anh Tuấn, Trung tâm tin học – Đại học KHTN TP.HCM.

Đây là clip số 1:

Các kĩ năng đầu tiên cần làm được là:

 Tạo database

 Tạo table

 Import dữ liệu

 Export dữ liệu

Phần này thực hành trên phần mềm XAMPP.

Để thực hành với MySQL, vào trình duyệt nhập vào đường dẫn: http://localhost:8888/phpmyadmin/ (lưu ý: cổng 8888 là cổng của giao thức HTTP chạy trên XAMPP, vì vậy bạn có thể đổi cho phù hợp trên máy của bạn)

Vị trí lưu cơ sở dữ liệu trên máy local là: C:\xampp\mysql\data

Mỗi bảng trong cơ sở dữ liệu gồm ba tập tin: tập tin lưu cấu trúc (.frm), tập tin lưu nội dung (.MYD), và tập tin lưu chỉ mục (.MYI).

Chọn database, vào Operations để đổi tên, xóa một database.

Trong một bảng có thể có hoặc không có khóa chính (primary). Khóa chính là duy nhất. Khóa chính có thể chứa một hoặc nhiều hơn một trường (field).

Unique: không cho phép giá trị trùng nhau.

Ghi lại phần mô tả các bảng để tham khảo:

loai_mon_an (Loại món ăn)
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_loai
int(11)


No
None
AUTO_INCREMENT
2
ten_loai
varchar(200)
utf8_unicode_ci

No
None

3
mo_ta
varchar(500)
utf8_unicode_ci

No
None

4
hinh
varchar(100)
utf8_unicode_ci

No
None


mon_an (Món ăn)
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_mon
int(11)


No
None
AUTO_INCREMENT
2
ma_loai
int(11)


No
None

3
ten_mon
varchar(100)
utf8_unicode_ci

No
None

4
noi_dung_tom_tat
varchar(200)
utf8_unicode_ci

No
None

5
noi_dung_chi_tiet
varchar(500)
utf8_unicode_ci

No
None

6
don_gia
double


No
None

7
don_gia_khuyen_mai
double


No
None

8
khuyen_mai
varchar(200)
utf8_unicode_ci

No
nước ngọt, khăn lạnh

9
hinh
varchar(100)
utf8_unicode_ci

No
None

10
ngay_cap_nhat
date


No
None

11
dvt
varchar(50)
utf8_unicode_ci

No
đĩa

12
trong_ngay
boolean


No
0


khach_hang (Khách hàng)
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_khach_hang
int(11)


No
None
AUTO_INCREMENT
2
ten_khach_hang
varchar(100)
utf8_unicode_ci

No
None

3
email
varchar(50)
utf8_unicode_ci

No
None

4
dia_chi
varchar(100)
utf8_unicode_ci

No
None

5
dien_thoai
varchar(20)
utf8_unicode_ci

No
None

6
ghi_chu
varchar(200)
utf8_unicode_ci

No
None


hoa_don (Hóa đơn)
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_hoa_don
int(11)


No
None
AUTO_INCREMENT
2
ma_khach_hang
int(11)


No
None

3
ngay_dat
date


No
None

4
tong_tien
double


No
None

5
tien_dat_coc
double


No
None

6
con_lai
double


No
None

7
hinh_thuc_thanh_toan
varchar(100)
utf8_unicode_ci

No
None

8
ghi_chu
varchar(200)
utf8_unicode_ci

No
None


chi_tiet_hoa_don (Chi tiết hóa đơn)
#
Name
Type
Collation
Attributes
Null
Default
Extra
1
ma_hoa_don
int(11)


No
None

2
ma_mon
int(11)


No
None

3
so_luong
int(11)


No
None

4
don_gia
double


No
None

5
mon_thuc_don
boolean


No
1


-----------
Cập nhật [19/10/2020]
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web