Xin chào các bạn, trong bài học hôm nay mình sẽ hướng dẫn các bạn sử dụng câu lệnh để thêm cột vào bảng
lục mục
Giới thiệu
Để thêm cột mới vào bảng hiện có, bạn sử dụng câu lệnh ALTER TABLE ADD COLUMN như sau
in which
- Đầu tiên, bạn chỉ định tên bảng sau mệnh đề ALTER TABLE
- Thứ hai, bạn đặt tên cột mới và định nghĩa nó sau mệnh đề ADD COLUMN. Lưu ý rằng từ khóa COLUMN là tùy chọn để bạn có thể bỏ qua nó
- Thứ ba, MySQL cho phép bạn thêm cột mới làm cột đầu tiên của bảng bằng cách chỉ định từ khóa FIRST. Nó cũng cho phép bạn thêm cột mới sau cột hiện có bằng cách sử dụng mệnh đề SAU KHI hiện tại_column. Nếu bạn không chỉ định rõ vị trí của cột mới, MySQL sẽ bổ sung nó làm cột cuối cùng
Để thêm hai hoặc nhiều cột vào một bảng cùng một lúc, bạn sử dụng cú pháp sau
Chúng ta hãy xem một số ví dụ về việc thêm cột mới vào bảng hiện có
Ví dụ về câu lệnh thêm cột trong mysql
Đầu tiên, chúng ta tạo một bảng có tên là nhà cung cấp
Thứ hai, chúng ta thêm cột mới có tên là điện thoại vào bảng nhà cung cấp. Bởi vì chúng ta xác định vị trí của cột phone một cách rõ ràng sau cột tên, MySQL sẽ tuân theo điều này
Thứ ba, chúng ta thêm một cột mới có tên vendor_group vào bảng vendors. Tại thời điểm này, chúng tôi không chỉ định vị trí của cột mới để MySQL thêm cột vendor_group làm cột cuối cùng của bảng nhà cung cấp
Bây giờ chúng ta hãy thêm một vài hàng vào trong bảng nhà cung cấp
Chúng tôi có thể truy cập dữ liệu của các nhà cung cấp bảng để xem các thay đổi
Thứ tư, thêm hai cột email và hourly_rate vào bảng nhà cung cấp cùng một lúc
Lưu ý rằng cả hai cột email và hourly_rate đều được gán cho giá trị NOT NULL, tuy nhiên, bảng nhà cung cấp đã có dữ liệu. Trong những trường hợp như vậy, MySQL sẽ sử dụng các giá trị mặc định cho những cột mới này
Kiểm tra dữ liệu trong bảng nhà cung cấp
Cột email được điền bằng các giá trị rỗng, không phải giá trị NULL. And column hourly_rate được điền bằng giá trị 0,00
Nếu bạn vô tình thêm một cột đã tồn tại trong bảng, MySQL sẽ thông báo lỗi. Ví dụ, nếu bạn thực hiện câu lệnh sau
bạn sẽ nhận được một thông báo lỗi
Mời bạn tham khảo các bài viết liên quan MySQL
- Mệnh đề like trong MySQL
- Mệnh đề WHERE trong MySQL
- Câu lệnh Chèn trong MySQL
Kết luận
Như vậy trong bài học hôm nay mình đã hướng dẫn các bạn sử dụng câu lệnh ADD COLUMN trong Mysql để thêm các cột vào trong bảng. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về câu lệnh DROP COLUMN trong MySQL
Kết nối với MySQL với tư cách người dùng bằng Create_user_priv và Grant_priv. Xác định người dùng nào có các đặc quyền này bằng cách chạy truy vấn sau. Người dùng của bạn sẽ cần có đặc quyền CHỌN trên MySQL. người dùng để chạy truy vấn
SELECT User, Host, Super_priv, Create_user_priv, Grant_priv from mysql.user WHERE Create_user_priv = 'Y' AND Grant_Priv = 'Y';
Chạy truy vấn sau để tạo câu lệnh GRANT cho người dùng bị hạn chế của bạn. Thay thế 'cơ sở dữ liệu', 'người dùng' và 'máy chủ lưu trữ' bằng thông tin cụ thể cho cơ sở dữ liệu của bạn
Lưu ý rằng các trích dẫn xung quanh myuser và mypassword là hai trích dẫn đơn, không phải kép. Các ký tự xung quanh myhost và, TABLE_NAME, là dấu ngược [phím nằm bên dưới phím thoát trên bàn phím của bạn]
SELECT CONCAT['GRANT SELECT, SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;']
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mydatabase';
Ví dụ: nếu bạn muốn kết nối người dùng 'chartio_read_only' với cơ sở dữ liệu 'Báo cáo' của mình bằng ứng dụng khách chartio_connect, bạn sẽ chạy như sau
SELECT CONCAT['GRANT SELECT, SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;']
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'Reports';
Nếu bạn muốn kết nối người dùng 'chartio_direct_connect' với cơ sở dữ liệu 'Analytics' của mình bằng kết nối trực tiếp từ máy chủ của Chartio, bạn sẽ chạy như sau
SELECT CONCAT['GRANT SELECT, SHOW VIEW ON Analytics.`', TABLE_NAME, '` to ''chartio_direct_connect''@`52.6.1.1`;']
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'Analytics';
Truy vấn sẽ có kết quả tương tự như sau
GRANT SELECT, SHOW VIEW ON mydatabase.`Activity` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Marketing` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Operations` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Payments` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Plans` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Services` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Subscriptions` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
Chỉ chọn các câu lệnh cho các bảng bạn muốn cấp quyền truy cập và chạy các truy vấn đó. Ví dụ: nếu chúng tôi chỉ muốn cấp quyền truy cập vào bảng Người dùng và Khách truy cập, chúng tôi sẽ chạy
GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
Cung cấp cho người dùng một mật khẩu an toàn
SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD['top$secret'];
hoặc
SET PASSWORD FOR 'chartio_direct_connect'@`52.6.1.1` = PASSWORD['top$secret'];
Bây giờ bạn có thể truy cập cơ sở dữ liệu của mình một cách an toàn với người dùng này và yên tâm rằng nó chỉ có quyền đối với các bảng được chỉ định
Cấp quyền cấp cột
Quy trình cấp quyền cấp cột trên một bảng cụ thể rất giống với cấp quyền cấp bảng
Tạo các câu lệnh GRANT cho các quyền cấp cột bằng truy vấn sau
________số 8
Ví dụ: nếu bạn muốn kết nối người dùng 'chartio_read_only' với các cột cụ thể trong bảng 'Người dùng' của cơ sở dữ liệu 'Báo cáo' bằng ứng dụng khách chartio_connect, bạn sẽ chạy như sau
SELECTCONCAT['GRANT SELECT [`', COLUMN_NAME, '`], SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;'] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'Reports' AND TABLE_NAME = 'Users';
Truy vấn sẽ dẫn đến kết quả tương tự như sau
0SELECT CONCAT['GRANT SELECT, SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;'] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'mydatabase';
Chỉ chọn các câu lệnh cho các cột bạn muốn cấp quyền truy cập và chạy các truy vấn đó. Ví dụ: nếu chúng tôi chỉ muốn cấp quyền truy cập vào cột 'User_ID' và 'Công ty', chúng tôi sẽ chạy