Cơ sở dữ liệu MySQL trong lập trình PHP

Cơ sở dữ liệu MySQL trong lập trình PHP

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

Cơ sở dữ liệu (CSDL) là tập hợp các thông tin được tổ chức sắp xếp có hệ thống về cá nhân con người (tên, tuổi, giới tính, nghề nghiệp,năm sinh,…), sự vật, sự việc, hình ảnh,…có liên quan mật thiết với nhau.

Vì sao cơ sở dữ liệu là quan trọng?

CSDL quan trọng là vì chúng là những con số biết nói nếu ta chịu khó phân tích chúng. Lấy một ví dụ đơn giản là ở một khu phố có 100 người, trong khu phố đó có một cửa hàng bán kem, cửa hàng này bán kem qua hình thức quẹt thẻ ngân hàng. Dữ liệu quẹt thẻ được ghi nhận trong phần mềm quản lý khách hàng của cửa hàng. Dữ liệu của mỗi khách mua bao gồm các thông tin như tên, tuổi, giới tính,…Cửa hàng bán liên tục từ đầu năm đến cuối năm thì tổng kết doanh thu và phân tích dữ liệu khách hàng.

Khi phân tích, cửa hàng thấy được người dân khu phố này đa phần mua kem là trẻ con và thanh thiếu niên, mùa hè thì mua kem nhiều nhất, khẩu vị thích loại kem chocolate hơn kem dâu,…Đây là những con số biết nói vì đã cho khách hàng thấy được đối tượng mua kem là ai, họ thích ăn kem gì, mùa nào là mua nhiều nhất,…Từ đó, qua năm sau cửa hàng có phương án bán hàng hợp lý hơn

Tạo cơ sở dữ liệu quan hệ

Chọn dòng MySQL Databases
Nhấn vào dòng gạch dưới màu đỏ
Tạo CSDL trước rồi vào quản lý sau
Tạo CSDL trước rồi vào quản lý sau
Đặt tên cho cơ sở dữ liệu mới
Đặt tên cho cơ sở dữ liệu mới
Các thông số quan trọng của CSDL
Các thông số quan trọng của CSDL
Khi bấm vào PHP MyAdmin sẽ chuyển qua trang quản lý CSDL
Khi bấm vào PHP MyAdmin sẽ chuyển qua trang quản lý CSDL

Như trong hình trên, ta thấy có 1 bảng có tên là MyGuests trong Cơ sở dữ liệu chúng ta mới tạo. Vậy bảng là gì?

Trong hệ quản trị cơ sở dữ liệu MySQL, bảng (TABLE) được sử dụng để lưu trữ các thông tin (dữ liệu) liên quan đến một loại đối tượng cụ thể nào đó.

– Ví dụ: Cái bảng bên dưới có tên là SinhVien, nó dùng để lưu trữ thông tin của các sinh viên.

MSSVHoTenNamSinhGioiTinh
1Nguyễn Thành Nhân1993Nam
2Vũ Văn Thành Đô1988Nam
3Phạm Thị Tuyết Nhung1995Nữ
4Dương Văn Gánh1990Nam

Cách tạo một cái bảng trong MySQL

– Để tạo một cái bảng thì chúng ta sử dụng lệnh CREATE TABLE với cú pháp như sau:

CREATE TABLE table_name(
	column1 DATA TYPE,
	column2 DATA TYPE,
	column3 DATA TYPE
);

– Trong đó:

  • table_name là tên của cái bảng mà chúng ta muốn tạo.
  • column1, column2, column3 lần lượt là tên của cột thứ nhất (MSSV), cột thứ hai (HoTen), cột thứ ba (NamSinh), cột thứ tư (Giới Tính) trên cái bảng.
  • DATA TYPE là kiểu của dữ liệu được lưu trữ bên trong cột 

– Kiểu dữ liệu (DATA TYPE) được dùng để đại diện cho một “thể loại” dữ liệu nào đó.

– Mỗi kiểu dữ liệu sẽ có một cái tên bằng tiếng Anh, ví dụ:

  • Kiểu dữ liệu TEXT dùng để đại diện cho những dữ liệu có dạng chuỗi ký tự.
  • Kiểu dữ liệu INT dùng để đại diện cho những dữ liệu có dạng số nguyên.
  • Kiểu dữ liệu DECIMAL dùng để đại diện cho những dữ liệu có dạng số thập phân.
  • . . . .

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

– Trong hệ quản trị cơ sở dữ liệu MySQL, khi tạo một cái bảng, việc xác định chính xác kiểu dữ liệu của từng cột đóng một vai trò hết sức quan trọng, nó giúp cho dữ liệu đầu vào được minh bạch, tránh nhận phải những giá trị không hợp lệ. Ngoài ra thì việc xác định chính xác kiểu dữ liệu của từng cột còn giúp tiết kiệm được tài nguyên, cải thiện tốc độ truy vấn dữ liệu, . . . .

– Trong bài học này, tôi sẽ giới thiệu tất cả những kiểu dữ liệu được hỗ trợ trong MySQL cho các bạn tham khảo, điều đó sẽ giúp các bạn biết & chọn được chính xác kiểu dữ liệu mà mình cần trong quá trình tạo bảng, nhằm để đạt được hiệu quả tối ưu nhất.

Các kiểu dữ liệu liên quan đến chuỗi ký tự

CHAR(size)– Một chuỗi ký tự (có thể chứa các chữ cái, số, ký tự đặc biệt). Trong đó, tham số size là tùy chọn, nó dùng để xác định độ dài tối đa của chuỗi tính theo đơn vị số lượng ký tự, nó có thể nhận một giá trị trong phạm vi từ 0 đến 255. Mặc định là 1.
VARCHAR(size)– Gần giống với kiểu chữ liệu CHAR. Tuy nhiên, tham số size là bắt buộc, nó cần phải nhận một giá trị nằm trong phạm vi từ 0 đến 4,294,967,295- Lưu ý:Nếu size = 21,845 thì kiểu dữ liệu sẽ tự động chuyển thành TEXTNếu size >= 21,846 thì kiểu dữ liệu sẽ tự động chuyển thành MEDIUMTEXTNếu size >= 5,592,406 thì kiểu dữ liệu sẽ tự động chuyển thành LONGTEXT
TYNYTEXT– Một chuỗi ký tự có độ dài tối đa 255 ký tự.
TEXT– Một chuỗi ký tự có độ dài tối đa 65,535 ký tự.
MEDIUMTEXT– Một chuỗi ký tự có độ dài tối đa 16,777,215 ký tự.
LONGTEXT– Một chuỗi ký tự có độ dài tối đa 4,294,967,295 ký tự.
ENUM(str1, str2, str3)– Một danh sách các chuỗi (có thể lên đến 65,535 chuỗi). Khi chèn vào bảng, dữ liệu phải là một trong số các chuỗi nằm trong danh sách, nếu không sẽ bị thay thế bằng một chuỗi rỗng.- Ví dụ, nếu các bạn muốn trường nhận một trong các chuỗi X, Y, Z thì kiểu dữ liệu cần phải xác định là ENUM(“X”, “Y”, “Z”)

Các kiểu dữ liệu liên quan đến số

TINYINT– Một số nguyên nằm trong phạm vi:-128  127 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)0  255 (khi thiết lập thuộc tính UNSIGNED)
SMALLINT– Một số nguyên nằm trong phạm vi:-32768  32767 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)0  65535 (khi thiết lập thuộc tính UNSIGNED)
MEDIUMINT– Một số nguyên nằm trong phạm vi:-8388608  8388607 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)0  16777215 (khi thiết lập thuộc tính UNSIGNED)
INT– Một số nguyên nằm trong phạm vi:-2147483648  2147483647 (mặc định, hoặc khi thiết lập thuộc tính SIGNED)0  4294967295 (khi thiết lập thuộc tính UNSIGNED)
BIGINT– Một số nguyên nằm trong phạm vi:-9223372036854775808  92233720368547758070  18446744073709551615 (khi thiết lập thuộc tính UNSIGNED)
DECIMAL(size,d)– Một số thập phân, trong đó:Tham số size chỉ định tổng số lượng chữ số của số thập phân, nó có thể nhận giá trị tối đa là 65 (mặc định là 10)Tham số d chỉ định tổng số lượng chữ số của phần thập phân, nó có thể nhận giá trị tối đa là 30 (mặc định là 0)

Các kiểu dữ liệu liên quan đến ngày tháng

DATE– Một ngày với định dạng là YYYY-MM-DD(giá trị hợp lệ nằm trong phạm vi từ 1000-01-01 đến 9999-12-31)
DATETIME– Một ngày & thời gian với định dạng là YYYY-MM-DD hh:mm:ss(giá trị hợp lệ nằm trong phạm vi từ 1000-01-01 00:00:00 đến 9999-12-31 23:59:59)
TIME– Thời gian với định dạng là hh:mm:ss(giá trị hợp lệ nằm trong phạm vi từ -838:59:59 đến 838:59:59)
YEAR– Một năm với định dạng bốn chữ số (giá trị hợp lệ trong phạm vi từ 1901 đến 2155)

– Trong quá trình tạo bảng, khi xác định kiểu dữ liệu từng cột, các bạn chỉ nên chọn kiểu dữ liệu vừa đủ đáp ứng nhu cầu công việc (như thế sẽ giúp tiết kiệm tài nguyên, cải thiện tốc độ truy vấn dữ liệu)

– Ví dụ như khi xác định kiểu dữ liệu cho cột HoTen (trong cái bảng SinhVien ở mục một), thường thì họ tên của sinh viên sẽ không vượt quá 100 ký tự, cho nên tôi chỉ cần dùng kiểu dữ liệu CHAR(100) là đủ rồi, nếu dùng những kiểu dữ liệu khác như TEXT, MEDIUMTEXT, LONGTEXT thì quá dư thừa.

– Để tạo một cái bảng SinhVien giống như trong phần giới thiệu thì tôi sử dụng đoạn mã như sau:

CREATE TABLE SinhVien(
	MSSV INT,
	HoTen VARCHAR(255),
	NamSinh YEAR,
	GioiTinh VARCHAR(10)
);

2) Cách chỉnh sửa bảng trong MySQL

– Thông thường thì việc chỉnh sửa bảng được chia làm năm trường hợp chính: sửa tên bảng, thêm một cột mới, xóa một cột, sửa tên cột, thay đổi kiểu dữ liệu của cột.

Sửa tên bảng

– Để sửa tên (đặt lại tên) cho một cái bảng thì chúng ta sử dụng lệnh RENAME TABLE với cú pháp như sau:

RENAME TABLE old_name TO new_name;

– Ví dụ, để đặt lại tên cho cái bảng SinhVien thành Student thì tôi sử dụng câu lệnh bên dưới.

RENAME TABLE SinhVien TO Student;

Thêm một cột mới

– Để thêm một cột mới vào bên trong cái bảng thì chúng ta sử dụng lệnh ADD COLUMN với cú pháp như sau:

ALTER TABLE table_name ADD COLUMN column_name DATA TYPE;

– Ví dụ, để thêm cột ThanhPho vào bên trong cái bảng SinhVien thì tôi sử dụng câu lệnh bên dưới.

ALTER TABLE SinhVien ADD COLUMN ThanhPho VARCHAR(100);

Xóa một cột

– Để xóa một cột nào đó ra khỏi bảng thì chúng ta sử dụng lệnh DROP COLUMN với cú pháp như sau:

ALTER TABLE table_name DROP COLUMN column_name;

– Ví dụ, để xóa cột ThanhPho ra khỏi bảng SinhVien thì tôi sử dụng câu lệnh bên dưới.

ALTER TABLE SinhVien DROP COLUMN ThanhPho;

Sửa tên cột

– Để sửa tên (đặt lại tên) cho cột thì chúng ta sử dụng lệnh CHANGE COLUMN với cú pháp như sau:

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name DATA TYPE;

– Ví dụ, để đặt lại tên cho cột HoTen (trong bảng SinhVien) thành FullName thì tôi sử dụng câu lệnh bên dưới.

ALTER TABLE SinhVien CHANGE COLUMN HoTen FullName VARCHAR(255);

Thay đổi kiểu dữ liệu của cột

– Để thay đổi kiểu dữ liệu của một cột thì chúng ta sử dụng lệnh MODIFY COLUMN với cú pháp như sau:

ALTER TABLE table_name MODIFY COLUMN column_name DATA TYPE;

– Ví dụ, để đổi kiểu dữ liệu của cột GioiTinh (trong bảng SinhVien) thành TEXT thì tôi dùng câu lệnh bên dưới.

ALTER TABLE SinhVien MODIFY COLUMN GioiTinh TEXT;

Cách xóa một cái bảng trong MySQL

– Để xóa một cái bảng thì chúng ta sử dụng lệnh DROP TABLE với cú pháp như sau:

DROP TABLE table_name;

– Ví dụ, để xóa cái bảng SinhVien thì tôi sử dụng câu lệnh bên dưới.

DROP TABLE SinhVien;

– Việc xóa một cái bảng sẽ xóa hết tất cả những dữ liệu nằm ở bên trong cái bảng. Cho nên, các bạn cần phải cân nhắc thật kỹ trước khi thực hiện hành động này.

– Đối với trường hợp muốn xóa hết dữ liệu bên trong bảng, nhưng giữ lại cái bảng thì các bạn có thể thay thế lệnh DROP TABLE bằng việc sử dụng lệnh TRUNCATE TABLE.

– Cú pháp như sau:

TRUNCATE TABLE table_name;