Có, chúng ta có thể thêm một cột vào một bảng từ một bảng khác. Đầu tiên chúng ta hãy tạo hai bảng. Truy vấn để tạo bảng như sau -
mysql> create table FirstTable -> ( -> UserId int, -> UserName varchar(20) -> ); Query OK, 0 rows affected (1.48 sec)
Bây giờ tạo bảng thứ hai. Truy vấn để tạo bảng thứ hai như sau -
mysql> create table SecondTable -> ( -> UserId int, -> UserAge int -> ); Query OK, 0 rows affected (1.57 sec)
Bây giờ, thêm cột Tuổi vào bảng đầu tiên. Đầu tiên, thêm cột Tuổi, sau đó sử dụng lệnh UPDATE để đặt cột Tuổi này thành cột Tuổi người dùng của Bảng thứ hai. Truy vấn như sau -
mysql> ALTER TABLE FirstTable ADD COLUMN Age TINYINT UNSIGNED DEFAULT 0; Query OK, 0 rows affected (1.53 sec) Records: 0 Duplicates: 0 Warnings: 0
Bây giờ đây là truy vấn cập nhật bảng đầu tiên để đặt cột Tuổi thành cột Tuổi người dùng của Bảng thứ hai. Truy vấn như sau -
mysql> UPDATE FirstTable tbl1 -> INNER JOIN SecondTable tbl2 ON tbl1.UserId = tbl2.UserId -> SET tbl1.Age = tbl2.UserAge; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0
Bây giờ hãy kiểm tra mô tả của bảng đầu tiên với sự trợ giúp của lệnh DESC. Truy vấn như sau -
mysql> desc FirstTable;
Sau đây là kết quả hiển thị rằng chúng tôi đã thêm thành công một cột từ bảng khác -
+----------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+-------+ | UserId | int(11) | YES | | NULL | | | UserName | varchar(20) | YES | | NULL | | | Age | tinyint(3) unsigned | YES | | 0 | | +----------+---------------------+------+-----+---------+-------+ 3 rows in set (0.53 sec)