Hướng dẫn tạo bảng trong mysql



Bảng dữ liệu là cấu trúc có vai trò quan trọng nhất trong cơ sở dữ liệu quan hệ. Toàn bộ dữ liệu của cơ sở dữ liệu được tổ chức trong các bảng, những bảng này có thể là những bảng hệ thống được tạo ra khi tạo cơ sở dữ liệu, và cũng có thể là những bảng do người sử dụng định nghĩa.

Hướng dẫn tạo bảng trong mysql

Trong các bảng, dữ liệu được tổ chức dưới dạng các dòng và cột. Mỗi một dòng là một bản ghi duy nhất trong bảng và mỗi một cột là một trường. Các bảng trong cơ sở dữ liệu được sử dụng để biểu diễn thông tin, lưu giữ dữ liệu về các đối tượng trong thế giới thực và/hoặc mối quan hệ giữa các đối tượng. Bảng trong hình trên bao gồm 7 bản ghi và 5 trường là ID, NAME, AGE, ADDRESS, SALARY.

Sau đây là cú pháp tạo bảng trong MySQL:

CREATE TABLE ten_bang (
    ten_cot thuoc_tinh_cot cac_rang_buoc_cot [,
    ...,
    ten_cot_n thuoc_tinh_cot_n cac_rang_buoc_cot_n],
    [cac_rang_buoc_tren_bang]
)

Trong đó:

ten_bang : Tên của bảng cần tạo. Tên phải tuân theo qui tắc định danh và không được vượt quá 128 ký tự.

ten_cot : Là tên của cột (trường) cần định nghĩa, tên cột phải tuân theo qui tắc định danh và không được trùng nhau trong mỗi một bảng. Mỗi một bảng phải có ít nhất một cột. Nếu bảng có nhiều cột thì định nghĩa của các cột (tên cột, thuộc tính và các ràng buộc) phải phân cách nhau bởi dấu phẩy.

thuoc_tinh_cot : Mỗi một cột trong một bảng ngoài tên cột còn có các thuộc tính bao gồm:

  • Kiểu dữ liệu của cột. Đây là thuộc tính bắt buộc phải có đối với mỗi cột.
  • Giá trị mặc định của cột: là giá trị được tự động gán cho cột nếu như người sử dụng không nhập dữ liệu cho cột một cách tường minh. Mỗi một cột chỉ có thể có nhiều nhất một giá trị mặc định.
  • Cột có tính chất IDENTITY hay không? tức là giá trị của cột có được tự động tăng mỗi khi có bản ghi mới được bổ sung hay không. Tính chất này chỉ có thể sử dụng đối với các trường kiểu số.
  • Cột có chấp nhận giá trị NULL hay không.

Ví dụ tạo bảng trong MySQL

Câu lệnh dưới đây định nghĩa bảng NHANVIEN với các trường MANV (mã nhân viên), HOTEN (họ và tên), NGAYSINH (ngày sinh của nhân viên), DIENTHOAI (điện thoại) và HSLUONG (hệ số lương)

CREATE TABLE nhanvien (
    manv INT NOT NULL AUTO_INCREMENT,
    hoten VARCHAR(50) NOT NULL,
    ngaysinh DATETIME NULL,
    dienthoai VARCHAR(11) NULL,
    hsluong DECIMAL(3, 2),
    PRIMARY KEY (manv)
);

Trong câu lệnh trên, trường MANV và HOTEN của bảng NHANVIEN không được NULL (tức là bắt buộc phải có dữ liệu), trường NGAYSINH và DIENTHOAI sẽ nhận giá trị NULL.

Thuộc tính ràng buộc NOT NULL của trường được sử dụng bởi vì chúng ta không muốn trường này là NULL. Vì thế, nếu người dùng cố gắng tạo một bản ghi có giá trị NULL, thì MySQL sẽ tạo một lỗi.

Thuộc tính AUTO_INCREMENT nói cho MySQL tự động tăng khóa chính và thêm giá trị có sẵn tiếp theo tới trường manv.

Từ khóa PRIMARY KEY được sử dụng để định nghĩa một cột là PRIMARY KEY (khóa chính). Bạn có thể sử dụng nhiều cột phân biệt nhau bởi dấu phảy để định nghĩa một PRIMARY KEY.

Insert dữ liệu vào bảng nhanvien

Nếu ta thực thi các câu lệnh dưới đây sau khi tạo bảng để bổ sung dữ liệu cho bảng nhanvien

INSERT INTO nhanvien (hoten, ngaysinh, dienthoai, hsluong)
    VALUES('Nguyen Van Vinh', '2020/10/03', '886963', 2.14);
INSERT INTO nhanvien(hoten)
    VALUES('Mai Thanh Toan');
INSERT INTO nhanvien(hoten,dienthoai)
    VALUES('Tran Thi C','849290');

Ta sẽ có được dữ liệu trong bảng nhanvien như sau:

Hướng dẫn tạo bảng trong mysql



Trong bài này chúng ta sẽ tìm hiểu một lệnh đầu tiên trong ngôn ngữ T-SQL nói riêng và trong MySQL nói chung đó là lệnh tạo mới một bảng (Create Table). Trong bài này chúng ta có sử dụng một số kiểu dữ liệu trong MySQL để thiết lập kiểu dữ liệu cho các field trong table.

Hướng dẫn tạo bảng trong mysql

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trước khi vào vấn đề chính thì chúng ta cần phải làm sáng tỏ một vài vấn đề. Như bạn biết trong các mô hình như mô hình thực thể mối kết hợp thì chúng ta có tìm hiểu khái niệm về loại thực thể (entity), nếu liên hệ với hệ CSDL thì ta sẽ gọi nó là một table. Ví dụ như trong mô hình quản lý sinh viên ta sẽ có bảng SINHVIEN, bảng LOP, bảng MONHOC và đây cũng chính là các loại thực thể.

Mỗi table chúng ta sẽ có một số thông tin riêng. Ví dụ như bảng SINHVIEN chúng ta có:

  • Tên sinh viên
  • Năm sinh
  • Đang học lớp
  • ...

Các thông tin này chúng ta gọi là thuộc tính của table, nghĩa là khi lưu trữ dữ liệu của sinh viên chính là lưu trữ thông tin của các thuộc tính này.

Bài viết này được đăng tại [free tuts .net]

Lưu ý:

  • Nếu bạn chạy nhiều lệnh cùng lúc thì bạn phải thêm dấu ; ở cuối mỗi lệnh.
  • Tất cả các đoạn code SQL này bạn copy và dán vào trình chạy và Execute nhé, nếu chưa biết nó ở đâu bạn quay lại bài cài đặt mysql để tìm hiểu thêm.

Bây giờ ta sẽ tìm hiểu chi tiết hơn về cú pháp tạo table nhé.

1. Lệnh tạo bảng (Create Table) trong MySQL

Trước tiên chúng ta cần sử dụng lệnh tạo database để tạo mới một database, sau đó sử dụng lệnh USE để chọn database này.

CREATE DATABASE QLSV;
USE QLSV;

Để tạo mới một bảng ta sử dụng cú pháp sau:

CREATE TABLE [IF NOT EXISTS] table_name(
        /*column_list*/
) ENGINE=table_type

Trong đó:

  • CREATE TABLE: là từ khóa tạo bảng
  • [IF NOT EXISTS]: dòng này có thể có hoặc không, ý nghĩa của nó là nếu table này chưa tồn tại thì thực hiện tạo table, còn nếu tồn tại rồi thì không tạo.
  • column_list: là danh sách các fields, ví dụ như TenSV, MaSV, ... Mỗi field gồm hai thông số là tên field và kiểu dữ liệu cho nó, nếu có nhiều field thì sẽ dùng dấu phảy (,) để ngăn cách.
    Ví dụ: TenSV varchar(255)
  • ENGINE=table_type: Là kiểu engine của bảng này, các kiểu này chúng ta đã được học ở bài MySQL Table Types & Storage Engines

Ví dụ: Cho bảng SINHVIEN gồm có các thông tin sau:

  • TenSV: Tên sinh viên, kiểu varchar và chiều dài tối đa 255 ký tự
  • MaSV: Mã sinh viên, kiểu INT và chiều dai là tối đa 11 số
  • NamSinh: Năm sinh, kiểu INT và chiều dài tối đa là 4 số

Lệnh tạo bảng như sau:

USE QLSV; 

CREATE TABLE SINHVIEN(
	TenSV VARCHAR(255),
	MaSV INT(11),
	NamSinh INT(4)
) ENGINE = InnoDB

2. Gán giá trị mặc định cho table

Giá trị mặc định tức là khi bạn thêm một record mà bạn không nhập dữ liệu vào thì nó sẽ lấy giá trị mặc định làm giá trị. Để gán giá trị mặc định thì ta sẽ dùng từ khóa DEFAULT đằng sau mỗi field.

Ví dụ

USE QLSV; 

CREATE TABLE SINHVIEN(
	TenSV VARCHAR(255) DEFAULT 'noname',
	MaSV INT(11),
	NamSinh INT(4)
) ENGINE = InnoDBsinhvien

3. Thiết lập Null và Not Null cho Column

Nếu bạn muốn một column bắt buộc nhập dữ liệu khi thêm mới thì bạn sẽ sử dụng từ khóa NOT NULL. Ngược lại thì bạn sẽ dùng từ khóa NULL (mặc định là NULL).

Vi dụ

USE QLSV; 

CREATE TABLE SINHVIEN(
	TenSV VARCHAR(255) DEFAULT 'noname',
	MaSV INT(11) NOT NULL,
	NamSinh INT(4)
) ENGINE = InnoDBsinhvien<br><br><br><br>

5. Xóa bảng (DROP TABLE)

Để xóa bảng ta sử dụng cú pháp: DROP TABLE tb_name.

khi bạn chạy lệnh này thì bảng sẽ được xóa khỏi database, đương nhiên toàn bộ dữ liệu nằm trong bảng cũng bị xóa theo.

6. Lời kết

Trong thực tế thì bạn có thể sử dụng các chương trình quản lý CSDL MySQL thông dụng như SQLYog hay thậm chí là PHPMyAdmin để tạo bảng thay vì sử dụng lệnh, nhưng nếu bạn muốn trở thành coder giỏi thì nên tìm hiểu, biết đâu sau này đi phỏng vấn thì còn biết đường trả lời. Bài này chúng ta tìm hiểu tới đây thôi, bài tiếp theo chúng ta sẽ tìm hiểu lệnh tạo khóa chính (primary key).