Làm cách nào để đặt tên cho các trường trong MySQL?

Đôi khi tên cột của chúng ta không có nghĩa nên buộc phải đổi tên hoặc đổi tên cột. MySQL cung cấp một cú pháp hữu ích có thể đổi tên một hoặc nhiều cột trong bảng. Một vài đặc quyền là cần thiết trước khi đổi tên cột, chẳng hạn như đặc quyền câu lệnh ALTER và DROP

MySQL có thể đổi tên tên cột theo hai cách

  1. Sử dụng câu lệnh CHANGE
  2. Sử dụng câu lệnh RENAME

Sử dụng Tuyên bố CHANGE

Sau đây là cú pháp minh họa việc đổi tên cột bằng câu lệnh CHANGE

Trong cú pháp này, chúng ta có thể thấy rằng chúng ta có thể yêu cầu xác định lại tất cả các thuộc tính cột. Cú pháp này cũng có thể cho phép chúng ta thay đổi kiểu dữ liệu của cột. Tuy nhiên, đôi khi câu lệnh CHANGE có thể có những nhược điểm sau

  • Tất cả thông tin của các thuộc tính cột có thể không có sẵn cho ứng dụng đổi tên
  • Có nguy cơ thay đổi loại dữ liệu ngẫu nhiên có thể dẫn đến mất dữ liệu của ứng dụng

Thí dụ

Hãy cho chúng tôi hiểu cách thức hoạt động của câu lệnh CHANGE trong MySQL để đổi tên một cột thông qua các ví dụ khác nhau. Giả sử chúng ta có một bảng tên là balance chứa dữ liệu như sau

Làm cách nào để đặt tên cho các trường trong MySQL?

Vì một số lý do, chúng tôi cần thay đổi tên cột account_num cùng với kiểu dữ liệu của nó. Trong trường hợp đó, trước tiên chúng ta kiểm tra cấu trúc của bảng bằng cách sử dụng câu lệnh MÔ TẢ như sau

Làm cách nào để đặt tên cho các trường trong MySQL?

Trong hình ảnh này, chúng ta có thể thấy kiểu dữ liệu của tên cột account_num là int. Và chúng tôi muốn thay đổi tên cột này là account_no và kiểu dữ liệu của nó là int thành varchar. Vì vậy, chúng ta có thể thực hiện câu lệnh dưới đây để làm điều này

Sau khi thực hiện lệnh trên, chúng ta có thể xác minh lại bằng cách sử dụng lại câu lệnh DESCRIBE. Trong hình bên dưới, tên cột account_num và kiểu dữ liệu của nó đã thay đổi thành công

Làm cách nào để đặt tên cho các trường trong MySQL?

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

Để loại bỏ nhược điểm của câu lệnh CHANGE, MySQL đã đề xuất cú pháp sau minh họa việc thay đổi tên cột bằng cách sử dụng câu lệnh RENAME

Thí dụ

Hãy cho chúng tôi hiểu cách câu lệnh RENAME hoạt động trong MySQL để thay đổi tên cột thông qua các ví dụ khác nhau. Giả sử chúng ta có một bảng có tên khách hàng chứa dữ liệu sau

Làm cách nào để đặt tên cho các trường trong MySQL?

Giả sử chúng ta muốn thay đổi tên cột account bằng account_no mà không thay đổi kiểu dữ liệu của nó. Chúng ta có thể làm điều này bằng cách thực hiện câu lệnh dưới đây

Sau khi thực hiện lệnh trên, chúng ta có thể xác minh lại bằng cách sử dụng lại câu lệnh SELECT. Trong hình ảnh bên dưới, cột tên tài khoản đã thay đổi thành công

Làm cách nào để đặt tên cho các trường trong MySQL?

Đổi tên nhiều cột

MySQL cũng cho phép chúng tôi thay đổi nhiều tên cột trong một câu lệnh. Nếu chúng ta muốn đổi tên nhiều tên cột, chúng ta có thể sử dụng cú pháp dưới đây

HOẶC LÀ

Thí dụ

Giả sử chúng ta muốn thay đổi tên cột id và customer_name từ bảng khách hàng. Để thay đổi nhiều tên cột trong một câu lệnh, chúng ta có thể sử dụng câu lệnh như sau

Sau khi thực hiện lệnh trên, chúng ta có thể xác minh lại bằng cách sử dụng lại câu lệnh SELECT. Trong hình bên dưới, tên cột id và customer_name đã thay đổi thành công

Làm cách nào để đặt tên cho các trường trong MySQL?

Chúng ta hãy thay đổi lại tên cột hiện đang sửa đổi thông qua câu lệnh RENAME COLUMN như sau

Sau khi thực hiện lệnh trên, chúng ta có thể xác minh lại bằng cách sử dụng lại câu lệnh DESCRIBE. Trong hình bên dưới, tên cột cust_id và cust_name đã thay đổi thành công

Làm cách nào để đặt tên cho các trường trong MySQL?

Trong bài viết này, chúng ta đã tìm hiểu phần giới thiệu về cột RENAME trong MySQL và cách thay đổi tên cột trong một bảng cụ thể, cùng với một ví dụ truy vấn để hiểu rõ hơn

Để đổi tên một cột hiện có trong bảng MySQL, bạn cần kết hợp câu lệnh

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
3 với mệnh đề
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
4 hoặc
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
5

Hướng dẫn này sẽ giúp bạn học cách viết câu lệnh

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
3 với cả hai mệnh đề

Ví dụ: giả sử bạn có bảng

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
7 với cấu trúc sau

mysql> DESCRIBE students;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int      | NO   | PRI | NULL    |       |
| name    | tinytext | YES  |     | NULL    |       |
| subject | tinytext | YES  |     | NULL    |       |
| score   | float    | YES  |     | NULL    |       |
| gender  | tinytext | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
5 rows in set (0.01 sec)

Như bạn có thể thấy từ tập hợp kết quả ở trên, bảng

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
7 có 5 cột (hoặc trường)

Mệnh đề

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
4 cho phép bạn thay đổi tên cột và kiểu dữ liệu của bảng bằng cú pháp sau

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];

Giả sử bạn muốn đổi tên cột

ALTER TABLE students CHANGE id students_id INT;
0 thành
ALTER TABLE students CHANGE id students_id INT;
1. Câu lệnh SQL bên dưới sẽ hoạt động

ALTER TABLE students CHANGE id students_id INT;

Mặc dù chúng tôi không thay đổi loại dữ liệu của cột

ALTER TABLE students CHANGE id students_id INT;
0, mệnh đề
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
4 yêu cầu bạn chuyển loại dữ liệu nếu không nó sẽ gây ra lỗi

Bắt đầu từ phiên bản MySQL

ALTER TABLE students CHANGE id students_id INT;
4, MySQL đã thêm mệnh đề
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
5 để bạn có thể đổi tên tên cột mà không cần phải chuyển kiểu dữ liệu của nó

Cú pháp của

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
5 như hình bên dưới

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];

Ví dụ: hãy đổi tên cột

ALTER TABLE students CHANGE id students_id INT;
7 thành
ALTER TABLE students CHANGE id students_id INT;
8

ALTER TABLE students RENAME COLUMN name TO first_name;

Khi câu lệnh trên đã được thực thi, bạn có thể chạy lại câu lệnh

ALTER TABLE students CHANGE id students_id INT;
9 để kiểm tra cột đã đổi tên

mysql> DESCRIBE students;
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| students_id | int      | NO   | PRI | NULL    |       |
| first_name  | tinytext | YES  |     | NULL    |       |
| subject     | tinytext | YES  |     | NULL    |       |
| score       | float    | YES  |     | NULL    |       |
| gender      | tinytext | YES  |     | NULL    |       |
+-------------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Như bạn có thể thấy từ đầu ra ở trên, chúng tôi đã thành công trong việc đổi tên tên cột của bảng

Khi muốn đổi tên nhiều cột, bạn có thể thêm nhiều mệnh đề

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
4 hoặc
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
5 cách nhau bởi dấu phẩy

Hãy xem câu lệnh sql ví dụ bên dưới

ALTER TABLE students 
  CHANGE id students_id INT,
  CHANGE name first_name TINYTEXT,
  CHANGE subject topic TINYTEXT;

-- OR

ALTER TABLE students 
  RENAME COLUMN id TO students_id,
  RENAME COLUMN name TO first_name,
  RENAME COLUMN subject TO topic;

Xin lưu ý rằng bạn cần có đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 để chạy hoạt động
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
3

Tiếp theo, hãy tìm hiểu cách kiểm tra và thêm đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 khi nó bị thiếu cho người dùng MySQL của bạn

Kiểm tra đặc quyền ALTER cho người dùng MySQL của bạn

Để kiểm tra xem người dùng MySQL của bạn đã có đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 hay chưa, bạn cần chạy câu lệnh
ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
6 từ Terminal

SHOW GRANTS FOR [user@];

Ví dụ: đây là kết quả tôi nhận được khi thực hiện câu lệnh cho người dùng của mình

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
7

mysql> SHOW GRANTS FOR nathan@localhost;
+----------------------------------------------------------------+
| Grants for nathan@localhost                                    |
+----------------------------------------------------------------+
| GRANT USAGE ON *.* TO `nathan`@`localhost`                     |
| GRANT SELECT ON `school_db`.`students` TO `nathan`@`localhost` |
+----------------------------------------------------------------+
2 rows in set (0.00 sec)

Như bạn có thể thấy, người dùng

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
7 chỉ có đặc quyền
ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
9 đối với bảng
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
7 trong cơ sở dữ liệu
ALTER TABLE students RENAME COLUMN name TO first_name;
1

Nếu không có đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2, thì câu lệnh
ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
3 sẽ khiến MySQL ném một
ALTER TABLE students RENAME COLUMN name TO first_name;
4 như hình bên dưới

ALTER TABLE students CHANGE id students_id INT;
ERROR 1142 (42000): ALTER command denied 
to user 'nathan'@'localhost' for table 'students'

Để trao đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 cho người dùng, bạn cần thực thi câu lệnh
ALTER TABLE students RENAME COLUMN name TO first_name;
6 có cú pháp sau

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
0

Đây là một ví dụ về việc cấp đặc quyền

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 cho người dùng
ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
7. Bạn cần thay đổi tên người dùng thành tên người dùng thực của mình

ALTER TABLE [table_name] 
  CHANGE [current_column_name] [new_column_name] [data_type];
1

Bây giờ hãy chạy lại câu lệnh

ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
6. Lần này, bạn sẽ thấy các đặc quyền
ALTER TABLE [table_name] 
  RENAME COLUMN [current_column_name] TO [new_column_name];
2 xuất hiện cho người dùng MySQL của bạn

Làm cách nào để thêm tên cột trong MySQL?

Sử dụng THÊM để thêm các cột mới vào bảng và DROP để xóa các cột hiện có. DROP col_name là một phần mở rộng MySQL cho SQL tiêu chuẩn. Để thêm một cột tại một vị trí cụ thể trong một hàng của bảng, hãy sử dụng FIRST hoặc AFTER col_name. Mặc định là thêm cột cuối cùng.

Làm cách nào để thay đổi tên cột trong MySQL?

Để đổi tên một cột trong MySQL, sử dụng cú pháp sau. ALTER TABLE table_name RENAME COLUMN old_column_name THÀNH new_column_name ; .

Làm cách nào để đặt tên cho các thành phần của cơ sở dữ liệu trong MySQL?

Đặt tên cho các phần tử của cơ sở dữ liệu . Nếu bạn đang sử dụng máy chủ được lưu trữ, máy chủ Web của bạn có thể sẽ cung cấp tên cơ sở dữ liệu có thể bao gồm hoặc không bao gồm tài khoản hoặc tên miền của bạn. make sure that the database name is unique for that MySQL server. If you're using a hosted server, your Web host will likely provide a database name that may or may not include your account or domain name.

Làm cách nào để hiển thị tên cột trong MySQL?

Bạn có thể liệt kê các cột của bảng bằng lệnh mysqlshow db_name tbl_name . Câu lệnh MÔ TẢ cung cấp thông tin tương tự như SHOW COLUMNS.