Lỗi: Hoạt động không hợp lệ: Các loại thời gian của Liên minh không có múi giờ và số nguyên không thể được khớp
Bạn phải chọn NULL trong trình điều khiển phụ của liên minh để biết kiểu dữ liệu thích hợp. I E. cái gì đó như
SELECT col1, CAST[null AS DATETIME] as col2, CAST[null AS CHAR] as col3 from table1
UNION ALL
...
Tôi đã thay đổi câu hỏi của mình một chút. Tôi nhận được kết quả từ chỉ số 1 chọn các cột từ Bảng1 trong bảng mới. Bạn có thể giúp tôi hiểu những gì sai ở đây, hoặc làm thế nào tôi có thể nhận được tất cả các cột? - Ros
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
2 cần trong truy vấn "vô hướng" dưới dạng dữ liệu. Vì vậy, sử dụngCREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
PS. Tôi khuyên bạn nên xác định các mẫu dữ liệu chính xác trong phần Created Bable. Ngoài ra, điều này sẽ làm cho việc casting cho nulls trong Union không cần thiết.
13.1.20.4 & NBSP; Tạo bảng ... Chọn câu lệnh
Bạn có thể tạo một bảng này từ một bảng khác bằng cách thêm câu lệnh
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 vào cuối câu lệnh CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
4:CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
MySQL tạo các cột mới cho tất cả các phần tử trong
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3. Ví dụ:mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
Điều này tạo ra một bảng
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
6 với ba cột, CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
7, CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
8 và CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
9. Tùy chọn CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
0 là một phần của câu lệnh CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
4 và không nên được sử dụng theo sau CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3; Điều này sẽ dẫn đến một lỗi cú pháp. Điều tương tự cũng đúng với các tùy chọn CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
4 khác như CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
4.Lưu ý rằng các cột từ câu lệnh
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 được thêm vào phía bên phải của bảng, không chồng lên nó. Lấy ví dụ sau:mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
Đối với mỗi hàng trong bảng
CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
6, một hàng được chèn vào CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
7 với các giá trị từ CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
6 và các giá trị mặc định cho các cột mới.Trong một bảng kết quả từ
CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
9, các cột chỉ có tên trong phần CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
4 xuất hiện trước. Các cột có tên trong cả hai phần hoặc chỉ trong phần CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 đến sau đó. Kiểu dữ liệu của các cột CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 có thể được ghi đè bằng cách chỉ định cột trong phần CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
4.Nếu lỗi xảy ra trong khi sao chép dữ liệu vào bảng, bảng sẽ tự động bị hủy và không được tạo. Tuy nhiên, trước MySQL 8.0.21, khi sử dụng sao chép dựa trên hàng, một câu lệnh
mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
4 được ghi lại trong nhật ký nhị phân là hai giao dịch, một để tạo bảng và cái còn lại để chèn dữ liệu. Khi câu lệnh được áp dụng từ nhật ký nhị phân, lỗi giữa hai giao dịch hoặc trong khi sao chép dữ liệu có thể dẫn đến việc sao chép một bảng trống. Giới hạn đó được loại bỏ trong MySQL 8.0,21. Trên các công cụ lưu trữ hỗ trợ DDL nguyên tử, mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
4 hiện được ghi lại và áp dụng dưới dạng một giao dịch khi sử dụng sao chép dựa trên hàng. Để biết thêm thông tin, xem Phần & NBSP; 13.1.1, Câu lệnh xác định dữ liệu nguyên tử hỗ trợ.Kể từ MySQL 8.0.21, trên các công cụ lưu trữ hỗ trợ cả DDL nguyên tử và các ràng buộc khóa nước ngoài, việc tạo các khóa nước ngoài không được phép trong các tuyên bố ____34 khi sử dụng sao chép dựa trên hàng. Các ràng buộc khóa nước ngoài có thể được thêm vào sau đó bằng cách sử dụng
mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
7.Bạn có thể đi trước
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 bằng mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
9 hoặc mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
0 để chỉ ra cách xử lý các hàng sao chép các giá trị khóa duy nhất. Với mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
9, các hàng sao chép một hàng hiện có trên một giá trị khóa duy nhất bị loại bỏ. Với mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
0, các hàng mới thay thế các hàng có cùng giá trị khóa duy nhất. Nếu cả mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
9 và mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
0 đều không được chỉ định, hãy sao chép các giá trị khóa duy nhất dẫn đến lỗi. Để biết thêm thông tin, hãy xem ảnh hưởng của việc bỏ qua đối với việc thực thi tuyên bố.Trong MySQL 8.0.19 và sau đó, bạn cũng có thể sử dụng câu lệnh
mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
5 trong phần CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 của mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
4; Phần mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
5 của câu lệnh phải bao gồm một bí danh bảng bằng mệnh đề mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
9. Để đặt tên cho các cột đến từ mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
5, cung cấp bí danh cột với bí danh bảng; Mặt khác, tên cột mặc định mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
1, mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
2, mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
3, ..., được sử dụng.Mặt khác, việc đặt tên các cột trong bảng do đó được tạo tuân theo các quy tắc tương tự như được mô tả trước đây trong phần này. Ví dụ:
mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
Khi chọn tất cả các cột và sử dụng tên cột mặc định, bạn có thể bỏ qua
mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
4, vì vậy câu lệnh chỉ được sử dụng để tạo Bảng mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
5 cũng có thể được viết như thể hiện ở đây:mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
Khi sử dụng
mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
5 làm nguồn của CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3, tất cả các cột luôn được chọn vào bảng mới và các cột riêng lẻ không thể được chọn vì chúng có thể khi chọn từ một bảng được đặt tên; Mỗi câu sau đây tạo ra một lỗi [mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
8]:CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
Tương tự, bạn có thể sử dụng câu lệnh
mysql> CREATE TABLE tv1
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v;
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
mysql> CREATE TABLE tv2
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv2;
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+---+---+---+
mysql> CREATE TABLE tv3 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv3;
+------+------+------+----------+----------+----------+
| a | b | c | column_0 | column_1 | column_2 |
+------+------+------+----------+----------+----------+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+----------+----------+----------+
mysql> CREATE TABLE tv4 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
mysql> TABLE tv4;
+------+------+------+---+---+---+
| a | b | c | x | y | z |
+------+------+------+---+---+---+
| NULL | NULL | NULL | 1 | 3 | 5 |
| NULL | NULL | NULL | 2 | 4 | 6 |
+------+------+------+---+---+---+
mysql> CREATE TABLE tv5 [a INT, b INT, c INT]
> SELECT * FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[a,b,c];
mysql> TABLE tv5;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+------+------+------+
9 thay cho CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3. Điều này tuân theo các quy tắc tương tự như với mysql> SELECT * FROM foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> CREATE TABLE bar [m INT] SELECT n FROM foo;
Query OK, 1 row affected [0.02 sec]
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set [0.00 sec]
5; Tất cả các cột của bảng nguồn và tên của chúng trong bảng nguồn luôn được đưa vào bảng mới. Ví dụ:mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
Bởi vì thứ tự của các hàng trong các câu lệnh
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 cơ bản luôn luôn được xác định, các câu lệnh mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
3 và mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
4 được gắn cờ là không an toàn cho sao chép dựa trên câu lệnh. Các câu lệnh như vậy tạo ra cảnh báo trong nhật ký lỗi khi sử dụng chế độ dựa trên câu lệnh và được ghi vào nhật ký nhị phân bằng định dạng dựa trên hàng khi sử dụng chế độ mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
5. Xem thêm Phần & NBSP; 17.2.1.1, Ưu điểm và nhược điểm của bản sao dựa trên tuyên bố và dựa trên hàng.
CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
9 không tự động tạo bất kỳ chỉ mục nào cho bạn. Điều này được thực hiện có chủ ý để làm cho tuyên bố linh hoạt nhất có thể. Nếu bạn muốn có các chỉ mục trong bảng đã tạo, bạn nên chỉ định những điều này trước câu lệnh CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3:mysql> CREATE TABLE bar [UNIQUE [n]] SELECT n FROM foo;
Đối với
mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
8, bảng đích không lưu giữ thông tin về việc các cột trong bảng được chọn-từ có được tạo ra hay không. Phần CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 của câu lệnh không thể gán các giá trị cho các cột được tạo trong bảng đích.Đối với
mysql> CREATE TABLE tv1 VALUES ROW[1,3,5], ROW[2,4,6];
mysql> TABLE tv1;
+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
| 1 | 3 | 5 |
| 2 | 4 | 6 |
+----------+----------+----------+
8, bảng đích không lưu giữ các giá trị mặc định biểu thức từ bảng gốc.Một số chuyển đổi các loại dữ liệu có thể xảy ra. Ví dụ, thuộc tính
CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
1 không được bảo tồn và các cột CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
2 có thể trở thành cột CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
3. Các thuộc tính được đào tạo là CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
4 [hoặc CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
5] và, đối với các cột có chúng, CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
6, CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
7, CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
8 và mệnh đề CREATE TABLE tvx
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
CREATE TABLE tvx [a INT, c INT]
SELECT [x,z] FROM [VALUES ROW[1,3,5], ROW[2,4,6]] AS v[x,y,z];
9.Khi tạo một bảng với
mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
4, hãy đảm bảo bí danh bất kỳ cuộc gọi hoặc biểu thức chức năng nào trong truy vấn. Nếu bạn không, câu lệnh mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
1 có thể thất bại hoặc dẫn đến tên cột không mong muốn.CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
0Bạn cũng có thể chỉ định rõ ràng kiểu dữ liệu cho một cột trong bảng đã tạo:
CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
1Đối với
mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
2, nếu mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
3 được đưa ra và bảng đích tồn tại, không có gì được chèn vào bảng đích và câu lệnh không được ghi lại.Để đảm bảo rằng nhật ký nhị phân có thể được sử dụng để tạo lại các bảng gốc, MySQL không cho phép chèn đồng thời trong
CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
9. Tuy nhiên, trước MySQL 8.0.21, khi hoạt động CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
9 được áp dụng từ nhật ký nhị phân khi sao chép dựa trên hàng được sử dụng, các phần chèn đồng thời được cho phép trên bảng sao chép trong khi sao chép dữ liệu. Giới hạn đó được loại bỏ trong MySQL 8.0.21 trên các công cụ lưu trữ hỗ trợ DDL nguyên tử. Để biết thêm thông tin, xem Phần & NBSP; 13.1.1, Câu lệnh xác định dữ liệu nguyên tử hỗ trợ.Bạn không thể sử dụng
mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
6 như một phần của CREATE TABLE datetime_test
AS
SELECT *
FROM [ SELECT col1, null as col2, null as col3 from table1
union all
select col1, col2, col3 from table2
union all
select col1, col2, null as col3 from table3 ] AS total_data;
3 trong một câu lệnh như mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
8 Chọn ... từ mysql> TABLE t1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt1 TABLE t1;
mysql> TABLE tt1;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 10 | -4 |
| 14 | 6 |
+----+----+
mysql> CREATE TABLE tt2 [x INT] TABLE t1;
mysql> TABLE tt2;
+------+----+----+
| x | a | b |
+------+----+----+
| NULL | 1 | 2 |
| NULL | 6 | 7 |
| NULL | 10 | -4 |
| NULL | 14 | 6 |
+------+----+----+
9 .... Nếu bạn cố gắng làm như vậy, câu lệnh không thành công.
mysql> CREATE TABLE test [a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY [a], KEY[b]]
-> ENGINE=InnoDB SELECT b,c FROM test2;
4 Các hoạt động chỉ áp dụng các giá trị mysql> CREATE TABLE bar [UNIQUE [n]] SELECT n FROM foo;
1 và mysql> CREATE TABLE bar [UNIQUE [n]] SELECT n FROM foo;
2 cho các cột. Bảng và chỉ mục mysql> CREATE TABLE bar [UNIQUE [n]] SELECT n FROM foo;
1 và mysql> CREATE TABLE bar [UNIQUE [n]] SELECT n FROM foo;
2 không được áp dụng cho bảng mới trừ khi được chỉ định một cách rõ ràng.