LIKE
运算符来匹配字符串模式。,,“sql,SELECT * FROM table_name WHERE column_name LIKE 'pattern';,
`,,
table_name 是表名,
column_name 是列名,
pattern` 是要匹配的模式。 在MySQL中,克隆表是一种常见的操作,用于创建具有相同结构的新表,本文将详细讨论如何使用CREATE TABLE ... AS
和CREATE TABLE ... LIKE
这两种方法来克隆表,并比较它们的不同之处。
使用CREATE TABLE ... AS
克隆表
CREATE TABLE ... AS
语句用于创建一个新表,并从现有表中复制数据,这个语句的语法如下:
CREATE TABLE new_table AS SELECT * FROM existing_table;
假设有一个名为user
的表,其结构如下:
CREATE TABLEuser
(id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',user_name
varchar(200) DEFAULT '',phone
varchar(200) DEFAULT '',b_code
varchar(255) DEFAULT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
插入一些测试数据:
INSERT INTOdb2020
.user
(id
,user_name
,phone
,b_code
) VALUES (1, '李明', '101', '2021001'); INSERT INTOdb2020
.user
(id
,user_name
,phone
,b_code
) VALUES (2, '赵慧', '456', '2020001'); INSERT INTOdb2020
.user
(id
,user_name
,phone
,b_code
) VALUES (3, '李凯', '123', '2021002'); INSERT INTOdb2020
.user
(id
,user_name
,phone
,b_code
) VALUES (6, '张三1', '123', '2022001'); INSERT INTOdb2020
.user
(id
,user_name
,phone
,b_code
) VALUES (7, '张三2', '123', '2021003');
我们使用CREATE TABLE ... AS
语句来克隆这个表:
CREATE TABLE user_bk AS SELECT * FROM user;
查询新表的数据和结构:
SELECT * FROM user_bk; DESCRIBE user_bk;
结果会发现,user_bk
表完整地复制了user
表的数据,但主键、自动递增和索引丢失了,如果只想复制部分数据,可以在后面添加WHERE
条件:
CREATE TABLE user_bk AS SELECT * FROM user WHERE b_code LIKE '2021%';
使用CREATE TABLE ... LIKE
克隆表
CREATE TABLE ... LIKE
语句用于创建一个新表,并从现有表中复制完整的表结构,但不复制数据,这个语句的语法如下:
CREATE TABLE new_table LIKE existing_table;
使用CREATE TABLE ... LIKE
语句来克隆user
表:
CREATE TABLE user_bk2 LIKE user;
查询新表的数据和结构:
SELECT * FROM user_bk2; DESCRIBE user_bk2;
结果会发现,user_bk2
表完整地复制了user
表的结构,但没有数据,如果需要复制数据,可以使用INSERT INTO ... SELECT
语句:
INSERT INTO user_bk3 SELECT * FROM user;
这样,通过两条语句即可完整地复制表结构和数据。
常见问题解答
Q1:CREATE TABLE ... AS
和CREATE TABLE ... LIKE
有什么区别?
A1:CREATE TABLE ... AS
语句用于创建一个新表,并从现有表中复制数据,但不复制索引和主键,而CREATE TABLE ... LIKE
语句用于创建一个新表,并从现有表中复制完整的表结构,但不复制数据,如果需要复制数据,可以使用INSERT INTO ... SELECT
语句。
Q2: 如果我只想克隆表的一部分数据,该怎么办?
A2: 如果只想克隆表的一部分数据,可以在CREATE TABLE ... AS
语句后面添加WHERE
条件,
CREATE TABLE user_bk AS SELECT * FROM user WHERE b_code LIKE '2021%';
这样可以只复制满足条件的部分数据。
小编有话说
在实际操作中,选择哪种方法取决于具体需求,如果只需要复制表结构,可以使用CREATE TABLE ... LIKE
;如果还需要复制数据,可以使用CREATE TABLE ... AS
或结合INSERT INTO ... SELECT
,了解这些方法的差异和应用场景,可以帮助我们更高效地进行数据库操作。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。