[Thực hành] Thao tác với bảng

Tổng quan

Mục tiêu

Luyện tập thao tác với bảng

Mô tả

Hướng dẫn nộp bài:

Up code lên github

Paste link github vào phần nộp bài

Tạo bảng mới

Câu lệnh CREATE TABLE được sử dụng để tạo một bảng mới.

Cú pháp rút gọn
CREATE TABLE table_name
( 
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...
);

Trong đó, table_name là tên của bảng. column1 và column2 là tên của các cột, datatype là kiểu dữ liệu của từng cột.

Lưu ý: Đây là cú pháp rút gọn, hãy xem cú pháp đầy đủ của câu lệnh CREATE TABLE ở đây: https://dev.mysql.com/doc/refman/5.5/en/create-table.html

Ví dụ

Hãy xem đoạn mã tạo bảng contacts trong MySQL:

CREATE TABLE contacts
( contact_id INT(11) NOT NULL AUTO_INCREMENT,
  last_name VARCHAR(30) NOT NULL,
  first_name VARCHAR(25),
  birthday DATE,
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

Bảng contacts sẽ có 5 cột và một cột là khoá chính:

  • Cột contact_id có kiểu dữ liệu số nguyên (với tối đa 11 chữ số) và không thể chứa giá trị NULL. Giá trị của cột này sẽ được tự động tăng dần (Giá trị đầu tiên là 1, tiếp theo là 2, 3…).
  • Cột last_name có kiểu dữ liệu VARCHAR (chuỗi – với tối đa 30 ký tự) và không thể chứa giá trị NULL.
  • Cột first_name có kiểu dữ liệu VARCHAR (chuỗi – với tối đa 25 ký tự) và có thể chứa giá trị NULL.
  • Cột birthday có kiểu dữ liệu ngày tháng và có thể chứa giá trị NULL.
  • Khoá chính của bảng này có tên là contacts_pk và được gán cho cột contact_id.

Trong ví dụ sau đây, chúng ta sử dụng từ khoá DEFAULT để gán giá trị mặc định cho một cột.

CREATE TABLE suppliers
( supplier_id INT(11) NOT NULL AUTO_INCREMENT,
  supplier_name VARCHAR(50) NOT NULL,
  account_rep VARCHAR(30) NOT NULL DEFAULT 'TBD',
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

Trong ví dụ này, cột account_rep có kiểu dữ liệu là chuỗi (với tối đa 30 ký tự), không thể chứa giá trị NULL và mặc định thì giá trị của cột này là ‘TBD’.

Xoá bảng

Câu lệnh DROP TABLE được sử dụng để xoá các bảng đã tạo trước đó.

Cú pháp rút gọn
DROP TABLE table_name1, table_name2, ...

Trong đó, table_name1 và table_name2 là tên của các bảng muốn xoá.
Lưu ý: Đây là cú pháp rút gọn, xem cú pháp đầy đủ ở đây: https://dev.mysql.com/doc/refman/5.5/en/drop-table.html

Ví dụ

Đoạn mã sau đây sẽ xoá bảng customers:

DROP TABLE customers;

Đoạn mã sau đây sẽ xoá 2 bảng là customers và suppliers:

DROP TABLE customers, suppliers;

Chỉnh sửa bảng

Câu lệnh ALTER TABLE được sử dụng để chỉnh sửa một bảng đang tồn tại.

Cú pháp rút gọn để thêm cột mới
ALTER TABLE table_name
  ADD new_column_name column_definition;

Trong đó, table_name là tên bảng, new_column_name là tên của cột mới, column_definition là các mô tả cho cột mới (chẳng hạn như kiểu dữ liệu, NULL, giá trị mặc định…).

Ví dụ

Đoạn mã trong ví dụ sau đây sẽ thêm cột last_name vào cho bảng contacts:

ALTER TABLE contacts
  ADD last_name varchar(40) NOT NULL
    AFTER contact_id;

Chúng ta cũng có thêm nhiều cột một lúc bằng cách sử dụng cú pháp:

ALTER TABLE table_name
  ADD new_column_name column_definition
    [ FIRST | AFTER column_name ],
  ADD new_column_name column_definition
    [ FIRST | AFTER column_name ],
  ...
;

Ví dụ:

ALTER TABLE contacts
  ADD last_name varchar(40) NOT NULL
    AFTER contact_id,
  ADD first_name varchar(35) NULL
    AFTER last_name;
Cú pháp để chỉnh sửa mô tả của một cột
ALTER TABLE table_name
  MODIFY column_name column_definition;

Trong đó table_name là tên của bảng, column_name là tên của cột, column_definition là mô tả mới của cột.

Ví dụ, đoạn mã sau sẽ sửa kiểu dữ liệu của cột last_name thành kiểu chuỗi (với tối đa 50 ký tự) và cho phép nó chứa giá trị NULL:

ALTER TABLE contacts
  MODIFY last_name varchar(50) NULL;

Chúng ta cũng có thể chỉnh sửa nhiều cột một lúc bằng cách sử dụng cú pháp:

ALTER TABLE table_name
  MODIFY column_name column_definition
    [ FIRST | AFTER column_name ],
  MODIFY column_name column_definition
    [ FIRST | AFTER column_name ],
  ...
;
Cú pháp để xoá một cột trong bảng
ALTER TABLE table_name
  DROP COLUMN column_name;

Trong đó, table_name là tên của bảng, column_name là tên của cột muốn xoá.

Ví dụ, đoạn mã sau sẽ xoá cột contact_type trong bảng contacts:

ALTER TABLE contacts
  DROP COLUMN contact_type;

Cú pháp để thay đổi tên cột

ALTER TABLE table_name
  CHANGE COLUMN old_name new_name 
    column_definition

Trong đó, table_name là tên bảng, old_name là tên hiện tại của cột, new_name là tên mới muốn đổi thành, column_definition là mô tả của cột.
Ví dụ, đoạn mã sau sẽ đổi tên cột contact_type thành ctype:

ALTER TABLE contacts
  CHANGE COLUMN contact_type ctype
    varchar(20) NOT NULL;
Cú pháp để đổi tên bảng
ALTER TABLE table_name
  RENAME TO new_table_name;

Trong đó, table_name là tên hiện tại của bảng, new_table_name là tên mới của bảng.
Ví dụ, đoạn mã sau sẽ đổi tên bảng contacts thành people:

ALTER TABLE contacts
  RENAME TO people;

Leave a Reply

Your email address will not be published.