/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

[Database-Tự Học SQL] COM2012_MySQL Bài 4: DDL - Data Definition Language/Ngôn Ngữ Định Nghĩa Dữ Liệu

DDL - Data Definition Language/Ngôn ngữ định nghĩa dữ liệu: Có thể hiểu DDL là được dùng để định hình dữ liệu, tổ chức dữ liệu. 

Video DDL Căn bản


Video Alter Table


Lab 4



Một số câu lệnh DDL phổ biến:

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
  2. Tạo mới bảng phong_ban, tạo khóa chính cho bảng phong_ban
  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
  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

II. ALTER:

  1. Chuẩn bị dữ liệu(Tạo mới bảng du_an)
  2. Thêm cột: ngay_batdau, ngay_kethuc, ghichu vào bảng du_an
  3. Thay đổi data type/kiểu dữ liệu của cột/trường ghichu
  4. Rename tên cột ghichu thành ghi_chu và thay đổi kiểu dữ liệu/data type
  5. Xóa cột ghi_chu
  6. Xóa khóa chính trong bảng du_an
  7. Thêm ràng buộc khóa chính cho bảng du_an
  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
  9. Thêm ràng buộc kiểm tra - CHECK cho bảng nhan_vien
  10. Thêm trường email vào bảng nhan_vien
  11. Thêm ràng buộc UNIQUE
  12. Tìm trong bảng nhan_vien nếu có tên ràng buộc là "unq_email" thì xóa bỏ
  13. Tạo bảng mới có tên tao_bang_cmd
  14. Đổ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êmbỏ 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;

xong!

No comments:

Post a Comment

/*header slide*/