MySQL là gì? Xây dựng và thiết kế cơ sở dữ liệu với MySQL

(Ngày: 16/08/2019)
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở rất được ưa chuộng trên thế giới. Trong bài này sẽ giúp bạn bỏ túi cách xây dựng, thiết cơ sở dữ liệu và một số cú pháp trong MySQL.

MySQL là gì?

MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ.

Xây dựng và thiết kế cơ sở dữ liệu với MySQL

Thiết kế 1 cơ sở dữ liệu demo

Lý thuyết thiết kế cơ sở dữ liệu

- Thực thể là một sự vật, sự việc tồn tại và phân biệt được. Ví dụ: nhân viên Nguyễn Thị Hồng Nhung, môn học Cơ Sở Dữ Liệu.

- Thuộc tính là các đặc điểm riêng của thực thể.

- Liên kết là những ánh xạ giữa tập dữ liệu của thực thể này với tập dữ liệu của thực thể khác.

- Liên kết 1-1 (một-một): liên kết 1-1 giữa 2 thực thể là liên kết mà ứng với mỗi dữ liệu trong thực thể này có nhiều nhất một dữ liệu trong thực thể kia và ngược lại.

- Liên kết 1-n (một-nhiều): là liên kết mà ứng với mỗi dữ liệu trong thực thể này có một hoặc nhiều hoặc không có dữ liệu nào trong thực thể kia nhưng ngược lại thì không đúng.

- Liên kết n-n (nhiều-nhiều): là liên kết mà ứng với mỗi dữ liệu trong thực thể này có một hoặc nhiều hoặc không có dữ liệu nào trong thực thể kia và ngược lại.

Tạo 1 database tên QuanLyBanHang gồm các bảng sau:

v Bảng NhanVien (Mục đích: Lưu trữ thông tin tài khoản của từng nhân viên quản trị website).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaNhanVien Nvarchar (50) Không Mã nhân viên 2 HoTen Nvarchar (50) Không Họ và tên 3 MatKhau Nvarchar (50) Không Mật khẩu 4 DiaChi Nvarchar (60) Không Địa chỉ 5 Email Nvarchar (50) Không Email 6 SoDienThoai Nvarchar (50) Không Số điện thoại

v Bảng NguoiDung (Mục đích: Lưu trữ thông tin tài khoản của người dùng).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaNguoiDung Nvarchar (50) Không Mã khách hàng 2 HoTen Nvarchar (30) Không Họ tên 3 MatKhau Nvarchar (50) Không Mật khẩu 4 DiaChi Nvarchar (60) Không Địa chỉ 5 Email Nvarchar (50) Không Email 6 Anh Nvarchar (50) Ảnh hiển thị 7 SoDienThoai Nvarchar (24) Không Số điện thoại

v Bảng TinTuc (Mục đích: Lưu trữ dữ liệu thông tin tin tức).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaTin Int Không Mã tin 2 ChuDe Nvarchar (50) Không Tiêu đề 3 NoiDung Nvarchar (max) Không Nội dung 4 NguoiDang Nvarchar (50) Không Người đăng 5 NgayDang DateTime Không Ngày đăng

v Bảng ThamDoYKien (Mục đích: Lưu trữ thông tin của khách hàng góp ý về thẩm mỹ, nội dung website).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 XuatSac Int Xuất sắc 2 Tot Int Tốt 3 BinhThuong Int Bình thường 4 TrungBinh Int Trung Bình 5 Xau Int Xấu

v Bảng PhanHoi (Mục đích: lưu trữ thông tin thắc mắc và góp ý của khách hàng về thẩm mỹ website và thái độ phục vụ của nhân viên).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaPhanhoi Int Không Mã phản hồi 2 HoTen Nvarchar (50) Họ tên 3 Email Nvarchar (50) Không Email 4 ChuDe Nvarchar (50) Không Chủ đề 5 NoiDung Nvarchar (4000) Không Nội dung 6 NgayBinh Datetime Ngày bình

v Bảng NhaSanXuat (Mục đích: Lưu trữ thông tin của các hãng sản xuất).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaNSX Int Không Mã nhà sản xuất 2 TenNSX Nvarchar (50) Không Tên nhà sản xuất 3 DiaChi Ntext Địa chỉ của nhà sản xuất 4 HinhAnh Nvarchar (50) Ảnh nhà sản xuất

v Bảng SanPham (Mục đích: Lưu trữ thông tin của sản phẩm).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaSP Int Không Mã sản phẩm 2 MaNSX Int Không Mã nhà sản xuất 3 DonGia money Không Đơn giá 4 TenSP Nvarchar (40) Không Tên sản phẩm 5 HinhAnh Nvarchar (50) Không Hình ảnh sản phẩm 6 MiêuTa Ntext Không Thông số kỹ thuật 7 TinhTrang Nvarchar (50) Không Tình trạng còn hay hết hàng 8 GiamGia Float Giảm giá

v Bảng HoaDon (Mục đích: Lưu trữ thông tin đơn hàng của khách hàng).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaHD Int Không Mã hóa đơn 2 MaNguoiDung Nvarchar (50) Không Mã người dùng 3 NgayNhan Datetime Không Ngày nhận hàng 4 DiaChiNhan Nvarchar (60) Không Địa chỉ nhận 5 NgayLap Datetime Không Ngày lập hóa đơn

v Bảng Chi TietHoaDon (Mục đích: Lưu trữ thông tin chi tiết về từng đơn hàng. Sản phẩm trong các đơn hàng được lưu trữ ở bảng này).

Cấu trúc bảng:

Số thứ tự Tên trường Kiểu dữ liệu Rỗng Diễn giải 1 MaHD Int Không Mã hóa đơn 2 MaSP Int Không Mã sản phẩm 3 SoLuongMua Smallint Không Số lượng mua 4 DonGia Money Không Đơn giá 5 GiamGia Float Không Giảm giá.

Các cú pháp trong MySQL

1. Create Database

CREATE DATABASE được sử dụng để tạo ra một cơ sở dữ liệu.

Cú pháp:

      CREATE DATABASE dbname;

Ví dụ:

Create database QuanLyBanHang;

Hoặc trong Workbench bạn có thể sử dụng cú pháp:

CREATE SCHEMA quanlybanhang ;

Để tạo ra 1 database có tên là quanlybanhang.

Chú ý: Ở Workbench chúng convert tất cả các ký tự viết hoa trong database sang các ký tự thường.

2. Drop database

Các câu lệnh DROP Database được sử dụng để xóa một DB

Cú pháp:

DROP DATABASE dbname;

Ví dụ: DROP DATABASE quanlybanhang;

Xóa DB quanlybanhang;

Hoặc trong Workbench chúng ta có thể sử dụng cú pháp:

DROP SCHEMA quanlybanhang ;

3. Create Table

CREATE TABLE được sử dụng để tạo ra một bảng trong một cơ sở dữ liệu. Bảng được tổ chức thành các hàng và cột; và mỗi bảng phải có một cái tên duy nhất.

Cú pháp:

CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... );

Ví dụ:

CREATE TABLE NhanVien ( MaNhanVien Nvarchar (50) NOT NULL,

HoTen Nvarchar (50) NOT NULL,

MatKhau Nvarchar (50) NOT NULL,

DiaChi Nvarchar (60) NOT NULL,

Email Nvarchar (50) NOT NULL,

SoDienThoai Nvarchar (50) NOT NULL,

PRIMARY KEY (MaNhanVien)

);

4. Update table

Các câu lệnh UPDATE được sử dụng để cập nhật bản ghi hiện có trong một bảng.

Cú pháp:

UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;

5. Drop table

Các câu lệnh DROP TABLE được sử dụng để xóa một bảng

Cú pháp:

DROP TABLE table_name;

Ví dụ:

Drop table HoaDon;

Xóa bảng hóa đơn trong DB quanlybanhang;

6. Alter table

Các câu lệnh ALTER TABLE được sử dụng để thêm, xóa, hoặc sửa đổi các cột trong một bảng hiện tại.

Cú pháp:

ALTER TABLE table_name MODIFY COLUMN column_name datatype

Ví dụ:

ALTER TABLE NhanVien MODIFY COLUMN MaNhanVien INT

Sửa cột MaNhanvien từ kiểu Nvarchar sang kiểu integer.

Hoặc :

ALTER TABLE NhanVien DROP COLUMN DiaChi

Xóa cột DiaChi của bảng Nhân viên

Hoặc:

ALTER TABLE NhanVien ADD NgaySinh date

Thêm cột địa chỉ vào bảng Nhân viên

Hoặc:

ALTER TABLE NhanVien ALTER COLUMN NgaySinh year

Chuyển data type của cột ngày sinh từ kiểu date sang kiểu year.

7. Select

Câu lệnh SELECT được sử dụng để lấy dữ liệu từ một cơ sở dữ liệu. Kết quả được lưu trữ trong một bảng kết quả, gọi là các kết quả đề ra.

Cú pháp:

SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;

Ví dụ:

Với câu lệnh SELECT * ta sẽ select tất cả dữ liệu có trong bảng Nhân viên

SELECT * FROM NhanVien;

bai3_2_2

Bai3-2_3

8. Insert Into

Các câu lệnh INSERT INTO được dùng để chèn liệu mới vào bảng.

Cú pháp:

Có thể viết các câu lệnh INSERT INTO trong hai hình thức.

Hình thức đầu tiên: không ghi rõ tên cột mà dữ liệu sẽ được đưa vào, chỉ có giá trị của chúng: Cách này SQL sẽ hiểu là ta sẽ insert dữ liệu vào các cột theo lần lượt từng cột trong bảng:

INSERT INTO tên_bảng

VALUES (value1, value2, value3, ...);

Hình thức thứ hai:chỉ rõ cả tên cột và các giá trị được chèn vào:

INSERT INTO tên_bảng (column1, column2, cột3, ...)

VALUES (value1, value2, value3, ...);

Ví dụ:

INSERT INTO NhanVien

VALUES (NV0001, Nguyễn Nhung, 123456, Tầng 1 nhà 27, nguyennhung@mail.com, 0912345678 ...);

Hoặc:

INSERT INTO NhanVien (MaNhanVien, HoTen, MatKhau, DiaChi, Email, SoDienThoai)

VALUES (NV0001, Nguyễn Nhung, 123456, Tầng 1 nhà 27, nguyennhung@mail.com, 0912345678 ...);

bai3_2_2

9. Select Distinct

Trong một bảng, một cột có thể chứa nhiều giá trị Duplicate; và đôi khi bạn chỉ muốn liệt kê các giá trị (khác biệt) khác nhau. Các từ khóa DISTINCT có thể được sử dụng để chỉ trả lại những giá trị riêng biệt (khác nhau).

Cú pháp:

SELECT DISTINCT column_name,column_name FROM table_name;

Ví dụ:

SELECT DISTINCT Hoten FROM Nhanvien;

Ban đầu ta có 3 nhân viên có cùng họ tên là Nguyễn Van, nhưng khi sử dụng câu lênh trên thì nó sẽ lọc ra và chỉ lấy theo 1 tên là Nguyễn Van thôi

Kết quả:

Bai3_2_3

10. Where

Mệnh đề WHERE được dùng để trích xuất chỉ những bản ghi mà thực hiện một điều kiện quy định.

Cú pháp:

SELECT column_name,column_name FROM table_name WHERE column_name operator value;

Ví dụ:

SELECT Hoten,MaNhanVien

FROM NhanVien

WHERE Hoten Like 'Nguyễn Van';

Câu lệnh này sẽ lấy ra 2 cột là Mã nhân viên và họ tên với điều kiện là họ tên nhân viên là “Nguyễn Van”

Kết quả:

11. AND và OR

The AND operator sẽ lấy ra các bản ghi nếu cả 2 điều kiện trong mênh đề AND đều đúng. The OR operator sẽ lấy ra các bản ghi nếu 1 trong 2 điều kiện trong mênh đề OR là đúng.

Cú pháp:

SELECT * FROM Table_name WHERE column 1='A' AND column 2='B';

SELECT * FROM Table_name WHERE column 1='A' OR column 2='B';

Ví dụ:

SELECT * FROM NhanVien WHERE MaNhanVien='NV0001' AND HoTen='Nguyễn Nhung';

Câu lệnh trên sẽ lấy được bản ghi nào thỏa mãn cả 2 điều kiện là có mã nhân viên là NV0001 và họ tên nhân viên Nguyễn Nhung.

Kết quả truy vấn:

Bai3_2_4

SELECT * FROM NhanVien WHERE MaNhanVien='NV0001' OR HoTen='Nguyễn Van';

Câu lệnh trên sẽ lấy được bản ghi nào thỏa mãn 1 trong điều kiện hoặc là có mã nhân viên là NV0001 và hoặc là họ tên nhân viên Nguyễn Van.

Kết quả truy vấn:

Bai3_2_5

12. ORDER BY

ORDER BY từ khóa được sử dụng để sắp xếp các kết quả thiết lập bởi một hoặc nhiều cột. Các từ khóa ORDER BY sắp xếp các bản ghi trong thứ tự tăng dần theo mặc định. Để sắp xếp các bản ghi trong một thứ tự giảm dần, bạn có thể sử dụng các từ khóa DESC, để sắp xếp theo thứ tự giảm dần thì sử dụng từ khóa ASC.

Cú pháp:

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

Ví dụ:

SELECT MaNhanVien,HoTen FROM NhanVien ORDER BY MaNhanVien DESC;

Câu lệnh sẽ truy vấn ra mã nhân viên và họ tên của những nhân viên đó, sắp xếp theo mã nhân viên giảm dần.

Kết quả truy vấn:

Bai3_2_6

13. DELETE

Câu lệnh DELETE được dùng để xóa các hàng trong một bảng.

Cú pháp:

DELETE FROM table_name WHERE some_column=some_value;

Ví dụ:

DELETE FROM NhanVien WHERE MaNhanVien = “NV0004”;

Câu lệnh sẽ thực hiện xóa bản ghi có Mã nhân viên là NV0004 ra khỏi bảng Nhân viên.

14. SELECT TOP

Mệnh đề SELECT TOP được sử dụng để xác định số lượng bản ghi để trả lại. Các mệnh đề SELECT TOP có thể rất hữu ích trên bảng lớn với hàng ngàn bảng ghi. Trả về một số lượng lớn các bản ghi có thể ảnh hưởng đến hiệu suất.

Cú pháp:

SELECT column_name(s) FROM table_name LIMIT number;

Ví dụ:

SELECT * FROM NhanVien LIMIT 3;

Lấy ra 3 nhân viên theo thứ tự của Mã nhân viên

Kết quả truy vấn:

Bai3_2_6

15. LIKE

Mệnh đề LIKE được dùng để tìm kiếm bản ghi có cột giống với điều kiện được chưa ra

Cú pháp:

SELECT * FROM table_name WHERE column_name LIKE pattern;

Ví dụ:

SELECT * FROM NhanVien WHERE HoTen LIKE ‘Nguyễn Nhung’;

Câu lệnh trên sẽ lấy ra các bản ghi có họ tên có từ Nguyễn

SELECT * FROM NhanVien WHERE HoTen LIKE 'N%';

Câu lệnh trên sẽ lấy ra các bản ghi mà họ tên bắt đầu = chữ N

SELECT * FROM NhanVien WHERE HoTen LIKE '%N';

Câu lệnh trên sẽ lấy ra các bản ghi mà họ tên kết thúc = chữ N

SELECT * FROM NhanVien WHERE HoTen LIKE '%an%';

Câu lệnh trên sẽ lấy ra các bản ghi mà họ tên bao gồm ký tự an

SELECT * FROM NhanVien WHERE HoTen NOT LIKE '%N';

Câu lệnh trên sẽ lấy ra các bản ghi mà họ tên không bao gồm ký tự N

16. IN

Các điều hành IN cho phép bạn xác định nhiều giá trị trong một mệnh đề WHERE.

Cú pháp:

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);

Ví dụ:

SELECT *

FROM NhanVien

WHERE MaNhanVien IN ("NV0001","NV0002","NV0006");

Câu lệnh trên sẽ lấy ra các bản ghi cáo mã nhân viên thuộc khoảng điều kiện trên.

Kết quả truy vấn:

Bai3_2_7

viblo.asia