1. 程式人生 > >mysql-10臨時表、複製表

mysql-10臨時表、複製表

mysql臨時表在我們需要儲存一些臨時資料時非常有用。
臨時表只在當前連線可見,當關閉連線時,mysql會自動刪除表並釋放所有空間。
如果使用客戶端建立臨時表,只有在管不客戶端程式時才會銷燬臨時表,當然也可以手動銷燬。

建立臨時表

create TEMPORARY table `SalesSummary`(`producnt name` varchar(50) null,
    `total_sales` DECIMAL(12,2) NOT NULL DEFAULT 0.00, 
    `avg_unit_price` DECIMAL(7,2) NOT NULL DEFAULT 0.00,
    `total_units_sold` INT UNSIGNED NOT NULL DEFAULT 0);
insert into SalesSummary values('cucumber',100.25,90,2);
select * from SalesSummary;


使用臨時表

刪除臨時表

drop table SalesSummary;

mysql複製表:複製mysql的資料表,包括表的結構、索引、預設值

複製表有3種情形:

  • 1.完整複製
  • 2.部分複製
  • 3.額外欄位+複製表

完全複製

方法1:獲取表結構,建立資料表,複製資料

步驟:

  • 方法1:先獲取表結構,在建立資料包

-- 1.獲取資料表的完整結構 
show create table csj_tbl \G;

-- 2.建立資料表
CREATE TABLE `clone_csj_tbl` (
  `csj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `csj_title` varchar(100) NOT NULL,
  `csj_author` varchar(40) NOT NULL,
  `submission_date` date DEFAULT NULL,
  PRIMARY KEY (`csj_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- 3.複製資料
insert into clone_csj_tbl select * from csj_tbl;
select * from clone_csj_tbl;

方法2:直接依照原表建立,再插入資料

-- 根據模版,建立新表
create table clone_csj_tbl like csj_tbl;
-- 插入資料
insert into clone_csj_tbl select * from csj_tbl;

方法3:使用as語句直接建立表

create table clone_csj_tb1 as (select * from csj_tbl);

複製表中的一部分欄位

create table clone_csj_tbl1 as (select csj_id,csj_title from csj_tbl);
select * from clone_csj_tbl1;

-- 將列重新命名
create table clone_csj_tbl1  as (select csj_id, csj_title as title from csj_tbl);
-- 拷貝一部分資料
create table clone_csj_tbl1 as (select csj_id,csj_title from csj_tbl where csj_id <4);

建立表時額外定義一些欄位

create table clone_csj_tbl1 as (select csj_id,csj_title from csj_tbl);