📄 create.test
字号:
## Check some special create statements.#--disable_warningsdrop table if exists t1,t2,t3,t4,t5;drop database if exists mysqltest;--enable_warningscreate table t1 (b char(0));insert into t1 values (""),(null);select * from t1;drop table if exists t1;create table t1 (b char(0) not null);create table if not exists t1 (b char(0) not null);insert into t1 values (""),(null);select * from t1;drop table t1;create table t1 (a int not null auto_increment,primary key (a)) engine=heap;drop table t1;## Test of some CREATE TABLE'S that should fail#--error 1146create table t2 engine=heap select * from t1;--error 1146create table t2 select auto+1 from t1;drop table if exists t1,t2;--error 1167create table t1 (b char(0) not null, index(b));--error 1163create table t1 (a int not null,b text) engine=heap;drop table if exists t1;--error 1075create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap;-- error 1049create table not_existing_database.test (a int);create table `a/a` (a int);show create table `a/a`;create table t1 like `a/a`;drop table `a/a`;drop table `t1`;--error 1103create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);--error 1059create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);## Some wrong defaults, so these creates should fail too (Bug #5902)#--error 1067create table t1 (a datetime default now());--error 1294create table t1 (a datetime on update now());--error 1067create table t1 (a int default 100 auto_increment);--error 1067create table t1 (a tinyint default 1000);--error 1067create table t1 (a varchar(5) default 'abcdef');create table t1 (a varchar(5) default 'abcde');insert into t1 values();select * from t1;--error 1067alter table t1 alter column a set default 'abcdef';drop table t1;## test of dummy table names#create table 1ea10 (1a20 int,1e int);insert into 1ea10 values(1,1);select 1ea10.1a20,1e+ 1e+10 from 1ea10;drop table 1ea10;create table t1 (t1.index int);drop table t1;# Test that we get warning for thisdrop database if exists mysqltest;create database mysqltest;create table mysqltest.$test1 (a$1 int, $b int, c$ int);insert into mysqltest.$test1 values (1,2,3);select a$1, $b, c$ from mysqltest.$test1;create table mysqltest.test2$ (a int);drop table mysqltest.test2$;drop database mysqltest;--error 1103create table `` (a int);--error 1103drop table if exists ``;--error 1166create table t1 (`` int);--error 1280create table t1 (i int, index `` (i)); ## Test of CREATE ... SELECT with indexes#create table t1 (a int auto_increment not null primary key, B CHAR(20));insert into t1 (b) values ("hello"),("my"),("world");create table t2 (key (b)) select * from t1;explain select * from t2 where b="world";select * from t2 where b="world";drop table t1,t2;## Test types after CREATE ... SELECT#create table t1(x varchar(50) );create table t2 select x from t1 where 1=2;describe t1;describe t2;drop table t2;create table t2 select now() as a , curtime() as b, curdate() as c , 1+1 as d , 1.0 + 1 as e , 33333333333333333 + 3 as f;describe t2;drop table t2;create table t2 select CAST("2001-12-29" AS DATE) as d, CAST("20:45:11" AS TIME) as t, CAST("2001-12-29 20:45:11" AS DATETIME) as dt;describe t2;drop table t1,t2;## Test of CREATE ... SELECT with duplicate fields#create table t1 (a tinyint);create table t2 (a int) select * from t1; describe t1;describe t2;drop table if exists t2;--error 1060create table t2 (a int, a float) select * from t1; drop table if exists t2;--error 1060create table t2 (a int) select a as b, a+1 as b from t1; drop table if exists t2;--error 1060create table t2 (b int) select a as b, a+1 as b from t1; drop table if exists t1,t2;## Test CREATE ... SELECT when insert fails#CREATE TABLE t1 (a int not null);INSERT INTO t1 values (1),(2),(1);--error 1062CREATE TABLE t2 (primary key(a)) SELECT * FROM t1;--error 1146SELECT * from t2;DROP TABLE t1;DROP TABLE IF EXISTS t2;## Test of primary key with 32 index#create table t1 (a int not null, b int, primary key(a), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b));show create table t1;drop table t1;create table t1 select if(1,'1','0'), month("2002-08-02");drop table t1;create table t1 select if('2002'='2002','Y','N');select * from t1;drop table if exists t1;## Test default table type#SET SESSION storage_engine="heap";SELECT @@storage_engine;CREATE TABLE t1 (a int not null);show create table t1;drop table t1;--error 1286SET SESSION storage_engine="gemini";SELECT @@storage_engine;CREATE TABLE t1 (a int not null);show create table t1;SET SESSION storage_engine=default;drop table t1;## ISO requires that primary keys are implicitly NOT NULL#create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));insert into t1 values ("a", 1), ("b", 2);--error 1048insert into t1 values ("c", NULL);--error 1048insert into t1 values (NULL, 3);--error 1048insert into t1 values (NULL, NULL);drop table t1;## Bug # 801#create table t1 select x'4132';drop table t1;## bug #1434#create table t1 select 1,2,3;create table if not exists t1 select 1,2;--error 1136create table if not exists t1 select 1,2,3,4;create table if not exists t1 select 1;select * from t1;drop table t1;## Test create table if not exists with duplicate key error#create table t1 (a int not null, b int, primary key (a));insert into t1 values (1,1);create table if not exists t1 select 2;select * from t1;create table if not exists t1 select 3 as 'a',4 as 'b';--error 1062create table if not exists t1 select 3 as 'a',3 as 'b';select * from t1;drop table t1;## Test for Bug #2985 # "Table truncated when creating another table name with Spaces"#--error 1103create table `t1 `(a int);--error 1102create database `db1 `;--error 1166create table t1(`a ` int);## Test for Bug #3481 # "Parser permits multiple commas without syntax error"#--error 1064create table t1 (a int,);--error 1064create table t1 (a int,,b int);--error 1064create table t1 (,b int);## Test create with foreign keys#create table t1 (a int, key(a));create table t2 (b int, foreign key(b) references t1(a), key(b));drop table if exists t1,t2;## Test for CREATE TABLE .. LIKE ..#create table t1(id int not null, name char(20));insert into t1 values(10,'mysql'),(20,'monty- the creator');create table t2(id int not null);insert into t2 values(10),(20);create table t3 like t1;show create table t3;select * from t3;# Disable PS becasue of @@warning_countcreate table if not exists t3 like t1;--disable_ps_protocolselect @@warning_count;--enable_ps_protocolcreate temporary table t3 like t2;show create table t3;select * from t3;drop table t3;show create table t3;select * from t3;drop table t2, t3;create database mysqltest;create table mysqltest.t3 like t1;create temporary table t3 like mysqltest.t3;show create table t3;create table t2 like t3;show create table t2;select * from t2;create table t3 like t1;--error 1050create table t3 like mysqltest.t3;--error 1049create table non_existing_database.t1 like t1;--error 1051create table t3 like non_existing_table;--error 1050create temporary table t3 like t1;drop table t1, t2, t3;drop table t3;drop database mysqltest;## Test default table type#SET SESSION storage_engine="heap";SELECT @@storage_engine;CREATE TABLE t1 (a int not null);show create table t1;drop table t1;--error 1286SET SESSION storage_engine="gemini";SELECT @@storage_engine;CREATE TABLE t1 (a int not null);show create table t1;SET SESSION storage_engine=default;drop table t1;## Test types of data for create select with functions#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -