Câu lệnh CREATE TABLE trong MySQL

Câu lệnh CREATE TABLE trong MySQL
Câu lệnh CREATE TABLE trong MySQL

Chức năng của Câu lệnh CREATE TABLE trong MySQL

Câu lệnh CREATE TABLE trong MySQL được sử dụng để tạo ra bảng chứa id khóa chính, khóa ngoại và nhiều cột kiểu dạng số, chữ,... để chứa nhiều hàng dữ liệu.

Code Câu lệnh CREATE TABLE trong MySQL

CREATE TABLE `tb_nhanvien` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `tuoi` int(11) DEFAULT 0,
  `luong` bigint(20) DEFAULT 0,
  `gioitinh` tinyint(1) DEFAULT 0,
  `noidung` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // CREATE TABLE `tb_nhanvien`
   echo "<b>CREATE TABLE `tb_nhanvien`</b><br>";
   $sql ="CREATE TABLE `tb_nhanvien` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `tuoi` int(11) DEFAULT 0,
  `luong` bigint(20) DEFAULT 0,
  `gioitinh` tinyint(1) DEFAULT 0,
  `noidung` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
  ";
  //Cột id: kiểu int giới hạn 11 ký tự, không cho phép null, PRIMARY KEY là tạo khóa chính, AUTO_INCREMENT là tự động tăng dần sau mỗi lần thêm một hàng
  // Cột ten: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
  // Cột tuoi: kiểu int dạng số giới hạn 11 ký tự, mặc định là 0
  // Cột luong: kiểu bigint dạng số giới hạn 20 ký tự, mặc định là 0, có thể chọn int 11 ký tự
  // Cột gioitinh: để tinyint dạng số chỉ 1 ký tự, mặc định là 0, thường giới tính Nam sẽ lưu là 1, Nữ lưu là 0
  // Cột noidung: kiểu chữ text, dành cho bài viết dài, kiểu utf-8, cho phép null
  // Cột title: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
  // Cột description: kiểu chữ text, độ dài gần bằng một bài viết nhưng không dài quá, kiểu utf-8, cho phép null
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể tạo bảng: ' . mysql_error());  
   }else{
	  echo "Tạo tb_nhanvien thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

CREATE TABLE `tb_nhanvien`
Tạo tb_nhanvien thành công!

Các thành phần quan trọng khi tạo bảng MySQL

Khi sử dụng CREATE TABLE, việc hiểu rõ từng thành phần trong câu lệnh giúp bạn thiết kế bảng đúng ngay từ đầu, hạn chế lỗi khi thêm dữ liệu và thuận tiện hơn khi phát triển ứng dụng.

Tên bảng và tên các cột

Tên bảng dùng để xác định nơi lưu trữ dữ liệu, còn tên cột đại diện cho từng thuộc tính của dữ liệu. Nên đặt tên ngắn gọn, dễ hiểu và thống nhất cách viết trong toàn bộ cơ sở dữ liệu.

CREATE TABLE users (
    id INT,
    name VARCHAR(100),
    email VARCHAR(150)
);

Trong ví dụ trên, users là tên bảng, còn id, nameemail là các cột.

Kiểu dữ liệu của từng cột

Mỗi cột cần được xác định kiểu dữ liệu phù hợp với giá trị sẽ lưu. Chọn đúng kiểu dữ liệu giúp dữ liệu nhất quán và tránh sử dụng bộ nhớ không cần thiết.

  • INT: phù hợp với số nguyên.
  • VARCHAR: phù hợp với chuỗi có độ dài thay đổi.
  • DATE: dùng để lưu ngày tháng.
  • DECIMAL: phù hợp với giá trị cần độ chính xác như giá tiền.
CREATE TABLE products (
    id INT,
    name VARCHAR(150),
    price DECIMAL(10,2),
    created_at DATE
);

Không nên chọn kiểu dữ liệu chỉ dựa trên độ dài. Hãy căn cứ vào bản chất của dữ liệu và cách dữ liệu được sử dụng trong thực tế.

PRIMARY KEY và AUTO_INCREMENT

PRIMARY KEY giúp xác định duy nhất mỗi bản ghi trong bảng. Với các bảng sử dụng số nguyên làm mã định danh, có thể kết hợp AUTO_INCREMENT để MySQL tự tăng giá trị khi thêm bản ghi mới.

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100)
);

Cách thiết kế này giúp mỗi người dùng có một mã riêng mà không cần tự tạo giá trị cho cột id trong từng lần thêm dữ liệu.

NOT NULL và DEFAULT

NOT NULL dùng khi một cột bắt buộc phải có giá trị. Ngược lại, DEFAULT cho phép thiết lập giá trị mặc định nếu câu lệnh thêm dữ liệu không cung cấp giá trị cho cột đó.

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    status INT DEFAULT 1
);

Trong trường hợp này, name không được để trống, còn status sẽ nhận giá trị 1 nếu không được chỉ định khi thêm dữ liệu.

UNIQUE và các ràng buộc dữ liệu

UNIQUE được sử dụng để ngăn các bản ghi có cùng giá trị ở một cột hoặc một nhóm cột. Đây là lựa chọn phù hợp với những dữ liệu cần duy nhất như email, mã sản phẩm hoặc tên tài khoản.

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(150) UNIQUE,
    username VARCHAR(100) UNIQUE
);

Ngoài UNIQUE, các ràng buộc như PRIMARY KEYNOT NULL giúp kiểm soát dữ liệu ngay tại tầng cơ sở dữ liệu. Xác định các ràng buộc phù hợp ngay khi tạo bảng sẽ giảm nguy cơ phát sinh dữ liệu sai trong quá trình sử dụng.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Câu lệnh CREATE TABLE trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Câu lệnh CREATE TABLE trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !