Các lệnh tạo - xóa - sửa cơ sở dữ liệu và bảng


tự học mysql 11/09/2015 Cùng chuyên mục

Tìm hiểu các lệnh tạo (create) và xóa (drop) cho cơ sở dữ liệu (database) - bảng (table) - sửa một bảng (alter)...

TẠO CƠ SỞ DỮ LIỆU

Tạo cơ sở dữ liệu là một thao tác cơ bản trong các công việc xử lý dữ liệu liên quan đến mysql server. Bạn phải tạo 1 cơ sở dữ liệu trước rồi mới có thể tạo được bảng - theo quan hệ: bảng thuộc cơ sở dữ liệu - phải có cơ sở dữ liệu rồi mới có bảng. Cú pháp tạo cơ sở dữ liệu trong mysql:

CREATE DATABASE [IF NOT EXISTS] <tên cơ sở dữ liệu> [DEFAULT] CHARACTER SET [=] charset_name
 [DEFAULT] COLLATE [=] collation_name

Trong đó các thành phần trong ngoặc [] là tùy chọn ( không bắt buộc):

  • [IF NOT EXISTS] : Kiểm tra xem đã có cơ sở dữ liệu với tên truyền vào - nếu đã có thì không tạo mới - nếu bỏ tùy chọn này, cơ sở dữ liệu đã có mà bạn thực hiện lệnh tạo cơ sở dữ liệu sẽ báo lỗi.
  • [DEFAULT CHARACTER SET = charset_name] : quy định kiểu dữ liệu cho cho các ký tự như utf8i ( thuộc COLLATE unicode)
  • [COLLATE = collation_name]  - một nhóm các kiểu cho ký tự như  utf8_unicode_ci

Khi bạn thiết lập 2 tùy chọn character và collate - các bảng trong cơ sở dữ liệu sẽ lấy thông tin tùy chọn đó để lưu trữ dữ liệu - khi tạo cơ sở dữ liệu, bạn hãy thiết lập 2 thông số này để không phải thiết lập cho bảng.

Ví dụ: tạo một bảng có tên my_db - (*) lưu trữ ký tự unicode để có thể hiển thị tiếng việt

CREATE DATABASE IF NOT EXISTS my_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Kết quả trả ra thành công sẽ là: Query OK, 1 row affected,..

XÓA CƠ SỞ DỮ LIỆU

Sử dụng câu lệnh:

DROP DATABASE [IF EXISTS] <tên cơ sở dữ liệu>

Lưu ý: Phải xóa hết bảng trong cơ sở dữ liệu mới xóa được cơ cở dữ liệu - tùy chọn IF EXIST: xóa cơ sở dữ liệu nếu tồn tại - nếu không thêm tùy chọn này - khi thực hiện lệnh xóa mà không tồn tại cơ sở dữ liệu sẽ có thông báo lỗi
Ví dụ: xóa cơ sở dữ liệu my_db

DROP DATABASE IF EXITS my_db;

TẠO BẢNG

Trước khi tạo một bảng bạn cần phải xác định nó thuộc DATABASE nào. Để lựa chọn 1 DATABASE làm việc, sử dụng câu lệnh:

USE <tên cơ sở dữ liệu>;
//ví dụ chọn cơ sở dữ liệu my_db
USE my_db;

(*) Quản trị bằng phpmyadmin bạn có thể chọn bằng click vào list database
Bạn cần phải quan tâm đến: tên thuộc tính (field name) - (kiểu dữ liệu cho thuộc tính). VÍ dụ Xem bảng user:

user_id user_name user_birth
1 Nguyễn Văn A 2000-10-20
2 Lê Văn B 2008-08-18

bảng user có 3 trường là user_id, user_name, user_birth.

user_id là số nguyên - tùy theo mức độ của ứng dụng ( ví dụ một trường THCS) thì có khoảng dưới vài ngàn học sinh => bạn có thể chọn kiểu dữ liệu mediumint - user id không được bỏ trống - thêm ràng buộc NOT NULL - là khóa chính thêm ràng buộc PRIMARY KEY - máy tính tự động tăng AUTO_INCREMENT, chỉ bao gồm số nguyên dương thêm UNSIGNED.

user_name: tên của học sinh - thường không dưới 60 ký tự, tên thay đổi về độ dài => chọn kiểu dữ liệu VARCHAR(60)

user_birth: ngày sinh ( không cần thiết phải chính xác tới cả giờ sinh) => chọn kiểu lưu trữ DATE, (*) nếu cần chính xác tới ngờ sinh bạn có thể chọn TIMESTAMP ( nhưng không chọn DATETIME vì nhu cầu không cần tới, kích thước dữ liệu lại lớn hơn nhiều)

Cú pháp tạo bảng:

CREATE TABLE <tên bảng>(
<tên thuộc tính> <kiểu dữ liệu> [các ràng buộc toàn vẹn],
<tên thuộc tính> <kiểu dữ liệu> [các ràng buộc toàn vẹn],
...
[<ràng buộc toàn vẹn>]
) [ENGINE = MyISAM, InnoDB,...]

Các ràng buộc toàn vẹn cho thuộc tính như NOT NULL ( Không được bỏ trống), UNIQUE - dữ liệu không được phép trùng, PRIMARY KEY - chỉ định làm khóa chính

Ví dụ: tạo bảng user

CREATE TABLE user(
	user_id mediumint unsigned not null primary key AUTO_INCREMENT,
	user_name varchar(60) not null,
	user_birth DATE
);

Kết quả trả ra: Query OK... nếu tạo bảng thành công

(*) mysql không phân biệt chữ hoa-chữ thường

Tạo ràng buộc toàn vẹn cho bảng:

Cú pháp:

CONSTRAINT <tên RBTV> <RBTV>;

Ví dụ: khóa ngoại teacher liên kết giữa bảng teacher và bảng student
(*) - bảng tham chiếu cần phải được tạo ra trước rồi mới có thể tham chiếu
Bảng teacher:

teacher_id teacher_name user_birth
1 Nguyễn Văn C 1990-10-20
2 Lê Văn D 1989-08-18

Tạo bảng user - khóa ngoại là teacher, tham chiếu từ bảng teacher - với tên của ràng buộc là fk_teacher

Bước 1: Tạo bảng teacher 

CREATE TABLE teacher(
	teacher_id mediumint unsigned not null primary key AUTO_INCREMENT,
	teacher_name varchar(60) not null,
	teacher_birth DATE
);

Bước 2: Tạo bảng student

CREATE TABLE student(
	student_id mediumint unsigned not null primary key AUTO_INCREMENT,
	teacher mediumint unsigned not null,
	student_name varchar(60) not null,
	student_birth DATE,	
	CONSTRAINT FK_TEACHER FOREIGN KEY (teacher) REFERENCES teacher(teacher_id)	
);

(*) - trường teacher - phải cùng khai báo với trường teacher_id

XÓA BẢNG

Cú pháp:

DROP TABLE [IF EXISTS] < tên bảng>;
//Ví dụ - xóa bảng user
DROP TABLE IF EXISTS user;

SỬA BẢNG:

Đôi khi bạn đã tạo bảng nhưng có yêu cầu mới phải thay đổi cấu trúc bảng như sửa tên thuộc tính, thay đổi kiểu dữ liệu cho thuộc tính - thêm thuộc tính mới - xóa một thuộc tính - xóa một ràng buộc toàn vẹn - thêm ràng buộc toàn vẹn. 

(*) - một thuộc tính (field) trong bảng là một COLUMN

Thêm thuộc tính

Cú pháp: 

ALTER <tên bảng> ADD COLUMN <tên thuộc tính> <kiểu dữ liệu > [< RBTV>]
/*Ví dụ: thêm thuộc tính user_hight (chiều cao) cho bảng user
tính bằng cm như 158.5*/
ALTER TABLE user ADD COLUMN user_hight DECIMAL(5,1);

Xóa thuộc tính

ALTER <tên bảng> DROP COLUMN <tên thuộc tính>
/*Ví dụ: xóa thuộc tính user_birth của bảng user*/
ALTER TABLE user DROP COLUMN user_birth;

Sửa thuộc tính

ALTER <tên bảng> MODIFY COLUMN <tên thuộc tính> <kiểu dữ liệu mới> 
/*Ví dụ: sửa thuộc tính student_birth kiểu DATE sang TIMESTAMP của bảng student */

ALTER TABLE student MODIFY COLUMN student_birth TIMESTAMP;

Xóa ràng buộc toàn vẹn

ALTER <tên bảng> DROP (FOREIGN KEY, PRIMARY KEY)<tên RBTV>;

Ví dụ: Xóa ràng buộc khóa ngoại (FOREIGN KEY) của bảng student với bảng teacher

ALTER student DROP FOREIGN KEY FK_teacher;

Thêm ràng buộc toàn vẹn

ALTER TABLE <tên bảng> ADD CONSTRANT <FOREIGN KEY, PRIMARY KEY, UNIQUE> <tên RBTV> [<RBTV>]
//ví dụ RBTV
/* tham chiếu tới bảng teacher - thuộc tính teacher id
REFERENCES teacher(teacher_id);

Ví dụ: Thêm ràng buộc toàn vẹn khóa ngoại (vừa xóa) với bảng teacher.

ALTER TABLE student ADD CONSTRANT FOREIGN KEY FK_teacherREFERENCES teacher(teacher_id);

TỔNG KẾT

Bài này cần nắm được cú pháp tạo - xóa - sửa cho bảng và database. Biết thực hành chuyển từ yêu cầu (tạo bảng có các trường...) - phân tích lựa chọn kiểu dữ liệu phù hợp cho bảng. Bài kế tiếp - các bạn sẽ tìm hiểu về các thao tác trên dữ liệu trong bảng: thêm (INSERT) - XÓA (DELETE) - SỬA (UPDATE)....



Bài liên quan:



Bình luận:


cơ sở dữ liệu mysql