Anyè Atik
Kijan pou kopye estrikti yon tablo nan yon baz done MySQL ? Ki deklarasyon yo itilize pou kopye done yon tablo?
Misklkopye tab la
Si nou bezwen kopye yon tab MySQL nèt, ki gen ladan estrikti li, endèks li yo, valè defo li yo, elatriye, nou pa ka fè sa tou senpleman lè nou sèvi ak kòmandman `CREATE TABLE … SELECT` la .
Chapit sa a pral entwodui ki jan yo konplètman kopye tab done MySQL, etap sa yo se jan sa a:
- 使用MONTRE CREATE TABLElòd jwenn kreye tab done (KREYE TAB) deklarasyon, ki gen estrikti, endèks, elatriye nan tablo done orijinal la.
- Kopi deklarasyon SQL ki parèt nan kòmandman sa a, modifye non tab done a, epi egzekite deklarasyon SQL la. Estrikti tab done a pral konplètman kopye atravè kòmandman ki anwo a.
- Si ou vle kopye kontni tab la, ou ka itilizeANTRE NAN … CHWAZI deklarasyon pou reyalize.
Enstans
Eseye egzanp sa a pou repwodui tab chenweiliang_tbl.
premye etap la:
Jwenn estrikti a konplè nan tab la done.
mysql > SHOW CREATE TABLE chenweiliang_tbl \ G ; *************************** 1. row ******************** ******* Table :chenweiliang_tbl Create Table :CREATE TABLE`chenweiliang_tbl` (`chenweiliang_id` int (11 )NOT NULL auto_increment ,`chenweiliang_title` varchar (100 )NOT NULL default '' ,'chenweiliang_author` varchar (40 )NOT NULL 默认'' , `submission_date` 日期默认NULL , PRIMARY KEY (`chenweiliang_id` ), UNIQUE KEY `AUTHOR_INDEX` (`chenweiliang_author` ))ENGINE = InnoDB的1 行中集合(0.00 秒) 错误:没有指定查询
Etap de:
Modifye non tab done deklarasyon SQL la epi egzekite deklarasyon SQL la.
mysql > CREATE TABLE`clone_tbl` (- > `chenweiliang_id` int (11 )NOT NULL auto_increment ,- > `chenweiliang_title` varchar (100 )NOT NULL default '' ,- > `chenweiliang_author` varchar (40 )NOT NULL default '' ,- > `submission_date` 日期默认为NULL ,- > PRIMARY KEY (`chenweiliang_id` ),- > UNIQUE KEY `AUTHOR_INDEX` (`chenweiliang_author` )- > )ENGINE = InnoDB ; 查询OK ,0 行受影响(1.80 秒)
Etap twa:
Apre ou fin fè dezyèm etap la, ou pral kreye yon nouvo tab klon ki rele clone_tbl nan baz done a. Si ou vle kopye done ki soti nan tab la, ou ka itilize deklarasyon INSERT INTO … SELECT la.
mysql > INSERT INTO clone_tbl (chenweiliang_id ,- > chenweiliang_title ,- > chenweiliang_author ,- > submission_date )- > SELECT chenweiliang_id ,chenweiliang_title ,- > chenweiliang_author ,submission_date - > FROM chenweiliang_tbl ; 查询OK ,3 行受影响(0.07 秒)记录:3 重复:0 警告:0
Apre w fin fè etap ki anwo yo, w ap gen yon kopi konplè tab la, ki gen ladan estrikti tab la ak done tab la.
Yon lòt fason pou kopye yon tab
Yon lòt fason pou fè yon kopi konplè tablo a:
CREATE TABLE targetTable LIKE sourceTable ; INSERT INTO targetTable SELECT * FROM sourceTable ;
lòt:
Ou ka kopye kèk nan jaden sa yo nan yon tablo:
CREATE TABLE newadmin AS ( SELECT用户名,密码从管理员 )
Ou ka chanje non jaden yo ki fèk kreye tab la:
CREATE TABLE newadmin AS ( SELECT id ,username AS uname ,password AS pass FROM admin )
Yon pati nan done yo ka kopye:
CREATE TABLE newadmin AS ( SELECT * FROM admin WHERE LEFT (username ,1 )= 's' )
Enfòmasyon sou jaden nan tablo a ka defini pandan y ap kreye tab la:
CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) 如 ( SELECT * FROM admin )
Espere ke atik "Kijan pou kopye estrikti tablo nan baz done MySQL? Deklarasyon pou kopye done tablo" ki pataje sou blog Chen Weiliang la ( https://www.chenweiliang.com/ ) ap itil ou.
Pa ezite pataje lyen atik sa a: https://www.chenweiliang.com/cwl-490.html
