Video DDL Căn bản
Video Alter Table
Lab 4
Một số câu lệnh DDL phổ biến:
I. CREATE:
- Tạo mới database có tên là "quan_ly_nhan_su" và chọn "quan_ly_nhan_su" là database mặt định
- Tạo mới bảng phong_ban, tạo khóa chính cho bảng phong_ban
- Tạo mới bảng nhan_vien, khóa chính (cách 2), khóa ngoại, thiết lập quan hệ giữa bảng phong_ban và bảng nhan_vien
- Tương tự tạo bảng quanly_duan, khóa chính, khóa ngoại, thiết lập quan hệ giữa 2 bảng quanly_duan và nhan_vien
II. ALTER:
- Chuẩn bị dữ liệu(Tạo mới bảng du_an)
- Thêm cột: ngay_batdau, ngay_kethuc, ghichu vào bảng du_an
- Thay đổi data type/kiểu dữ liệu của cột/trường ghichu
- Rename tên cột ghichu thành ghi_chu và thay đổi kiểu dữ liệu/data type
- Xóa cột ghi_chu
- Xóa khóa chính trong bảng du_an
- Thêm ràng buộc khóa chính cho bảng du_an
- Thêm ràng buộc khóa ngoại cho bảng quanly_duan và thiết lập quan hệ với bảng du_an
- Thêm ràng buộc kiểm tra - CHECK cho bảng nhan_vien
- Thêm trường email vào bảng nhan_vien
- Thêm ràng buộc UNIQUE
- Tìm trong bảng nhan_vien nếu có tên ràng buộc là "unq_email" thì xóa bỏ
- Tạo bảng mới có tên tao_bang_cmd
- Đổi tên bảng tao_bang_cmd thành tên mới là bang_moi_doi_ten
III. RENAME
Đổi tên một đối tượng trong Database
IV. TRUNCATE
Xóa tất cả các bảng ghi/record của một bảng/table.
V. DROP
Dùng để xóa các đối tượng ĐANG TỒN TẠI trong cơ sở dữ liệu như: database,
table, ...
How To Fix
THỰC HIỆN
Thực hiện trên MySQL Workbench 8.0
I. CREATE:
1. Tạo mới database có tên là "quan_ly_nhan_su" và chọn "quan_ly_nhan_su"
là database mặt định
CREATE DATABASE quan_ly_nhan_su;
USE quan_ly_nhan_su;
Kiểm tra:
-- Kiểm tra database đang tồn tại
SHOW DATABASES;
-- Xem database đang mặt định
SELECT DATABASE();
2. Tạo mới bảng phong_ban, tạo khóa chính cho bảng phong_ban
CREATE TABLE: Câu lệnh được sử dụng để
tạo một bảng mới trong cơ sở dữ liệu.
Cú pháp:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
- table_name: Tên bảng muốn đặt
- column1, column2,...: Tên cột cần đặt
- datatype: Kiểu dữ liệu của cột. Ví dụ: INT, CHAR, DATE,...
PRIMARY KEY/Khóa Chính: Ràng buộc xác
định duy nhất mỗi bản ghi trong một bảng
FOREIGN KEY/Khóa ngoại: là một trường
(hoặc tập hợp các trường) trong một bảng, tham chiếu đến PRIMARY KEY trong
một bảng khác.
- Bảng có khóa ngoại được gọi là bảng con
- Bảng có khóa chính được gọi là bảng tham chiếu hoặc bảng cha.
CREATE TABLE phong_ban (
ma_pb CHAR(5) PRIMARY KEY,
ten_pb VARCHAR(255) NOT NULL,
ma_truongphong INT
);
3. Tạo mới bảng nhan_vien, khóa chính (cách 2), khóa ngoại, thiết lập
quan hệ giữa bảng phong_ban và bảng nhan_vien
CREATE TABLE quan_ly_nhan_su.nhan_vien (
id_nhanvien INT AUTO_INCREMENT,
ho_nv VARCHAR(255),
ten_nv VARCHAR(10) NOT NULL,
nam_sinh DATE,
dia_chi VARCHAR(255),
gioi_tinh BOOLEAN,
luong INT NOT NULL,
phg CHAR(5),
PRIMARY KEY (id_nhanvien),
FOREIGN KEY (phg) REFERENCES phong_ban (ma_pb)
);
Kiểm tra:
-- Tiểm tra sau khi tạo bảng/table
SHOW TABLES;
-- Xem các thuộc tính của bảng nhan_vien
DESC quan_ly_nhan_su.nhan_vien;
SHOW CREATE TABLE quan_ly_nhan_su.nhan_vien;
4. Tương tự tạo bảng quanly_duan, khóa chính, khóa ngoại, thiết lập quan
hệ giữa 2 bảng quanly_duan và nhan_vien
CREATE TABLE quanly_duan (
ma_duan CHAR(5) NOT NULL,
ma_nhanvien INT NOT NULL,
ngay_thamgia DATE,
ngay_ketthuc DATE,
sogio INT,
vai_tro VARCHAR(255),
PRIMARY KEY (ma_duan, ma_nhanvien),
FOREIGN KEY (ma_nhanvien) REFERENCES nhan_vien (id_nhanvien)
);
II. ALTER:
ALTER TABLE: Câu lệnh được sử dụng để
thêm, xóa hoặc
sửa đổi các
cột trong bảng hiện có.
ALTER TABLE: Câu lệnh cũng được sử
dụng để thêm và
bỏ các
ràng buộc khác nhau trên một bảng hiện
có.
1. Chuẩn bị dữ liệu(Tạo mới bảng du_an)
CREATE TABLE du_an (
ma_duan CHAR(5),
ten_duan VARCHAR(100),
PRIMARY KEY (ten_duan)
);
2. Thêm cột: ngay_batdau, ngay_kethuc, ghichu vào bảng du_an
ALTER TABLE quan_ly_nhan_su.du_an
ADD ngay_batdau DATE,
ADD ngay_kethuc DATE,
ADD ghichu INT;
3. Thay đổi data type/kiểu dữ liệu của cột/trường ghichu
-- Thay đổi data type/kiểu dữ liệu của cột/trường ghichu
ALTER TABLE quan_ly_nhan_su.du_an
MODIFY COLUMN ghichu VARCHAR(15);
4. Rename tên cột ghichu thành ghi_chu và thay đổi kiểu dữ liệu/data
type
- Rename tên cột ghichu thành ghi_chu và thay đổi kiểu dữ liệu/data type
ALTER TABLE quan_ly_nhan_su.du_an
CHANGE COLUMN ghichu ghi_chu VARCHAR(100);
5. Xóa cột ghi_chu
-- Xóa cột ghi_chu
ALTER TABLE quan_ly_nhan_su.du_an
DROP COLUMN ghi_chu;
6. Xóa khóa chính trong bảng du_an
-- Xóa khóa chính trong bảng du_an
ALTER TABLE quan_ly_nhan_su.du_an
DROP PRIMARY KEY;
7. Thêm ràng buộc khóa chính cho bảng du_an
-- Thêm ràng buộc khóa chính cho bảng du_an
ALTER TABLE quan_ly_nhan_su.du_an
ADD CONSTRAINT pk_ma_duan
PRIMARY KEY (ma_duan);
8. Thêm ràng buộc khóa ngoại cho bảng quanly_duan và thiết lập quan hệ
với bảng du_an
-- Thêm ràng buộc khóa ngoại cho bảng quanly_duan và thiết lập quan hệ với bảng du_an
ALTER TABLE quan_ly_nhan_su.quanly_duan
ADD CONSTRAINT fk_quanly_duan_duan
FOREIGN KEY (ma_duan)
REFERENCES du_an(ma_duan);
9. Thêm ràng buộc kiểm tra - CHECK cho bảng nhan_vien
-- Thêm ràng buộc kiểm tra - CHECK cho bảng nhan_vien
ALTER TABLE quan_ly_nhan_su.nhan_vien
ADD CONSTRAINT chk_luong
CHECK (luong >= 100); -- không chấp nhận dữ liệu >= 100
10. Thêm trường email vào bảng nhan_vien
-- Thêm trường email vào bảng nhan_vien
ALTER TABLE quan_ly_nhan_su.nhan_vien
ADD email VARCHAR(100);
11. Thêm ràng buộc UNIQUE
-- Thêm ràng buộc UNIQUE
ALTER TABLE quan_ly_nhan_su.nhan_vien
ADD CONSTRAINT unq_email
UNIQUE (email); -- email là địa chỉ duy nhất
12. Tìm trong bảng nhan_vien nếu có tên ràng buộc là "unq_email" thì
xóa bỏ
-- Tìm trong bảng nhan_vien nếu có tên ràng buộc là "unq_email" thì xóa bỏ
ALTER TABLE quan_ly_nhan_su.nhan_vien
DROP CONSTRAINT unq_email;
13. Tạo bảng mới có tên tao_bang_cmd
Create taBLE tao_bang_cmd(
ma int primary key auto_INCREMENT,
ten VARchar(50) not NULL,
ngaySinh Date
);
Noted: Cố tình
gõ code như vậy để biết là SQL KHÔNG PHÂN BIỆT chữ HOA, chữ thường
14. Đổi tên bảng tao_bang_cmd thành tên mới là bang_moi_doi_ten
-- Đổi tên bảng tao_bang_cmd thành tên mới là bang_moi_doi_ten
ALTER TABLE quan_ly_nhan_su.tao_bang_cmd
RENAME bang_moi_doi_ten;
III. RENAME
Đổi tên một đối tượng trong Database
RENAME TABLE quan_ly_nhan_su.bang_moi_doi_ten TO quan_ly_nhan_su.bang_moi_doi_ten_LAI;
IV. TRUNCATE
Xóa tất cả các bảng ghi/record của một bảng/table.
TRUNCATE - Xóa tất cả các bảng ghi/record của một bảng/table
TRUNCATE TABLE quan_ly_nhan_su.bang_moi_doi_ten_LAI;
V. DROP
Dùng để xóa các đối tượng ĐANG TỒN TẠI trong cơ sở dữ liệu như: database,
table, ...
-- Dùng để xóa các đối tượng ĐANG TỒN TẠI trong cơ sở dữ liệu
DROP TABLE quan_ly_nhan_su.bang_moi_doi_ten_LAI;
-- hoặc
DROP TABLE IF EXISTS du_an; -- Kiểm tra nếu bảng đã tồn tại thì xóa bảng
DROP DATABASE quan_ly_nhan_su;
How To Fix
Trong quá trình xóa có khi gặp phải lỗi không thể xóa, các bạn tìm hiểu các
lệnh dưới
SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 0;
SET GLOBAL FOREIGN_KEY_CHECKS=0;
SHOW VARIABLES LIKE "sql_safe_updates";
SET SQL_SAFE_UPDATES = 0;
No comments:
Post a Comment