MySql 数据与表结构操作SQL

一、任务

在这里插入图片描述


  • result 备份
1. ALTER TABLE result RENAME TO result_2021_8;
2. CREATE TABLE result  LIKE   result_2021_8
  • result_ddr 备份
1. ALTER TABLE result_ddr RENAME TO result_ddr_2021_8;
2. CREATE TABLE result_ddr LIKE  result_ddr_2021_8
  • php 应用
	//测试ddr失败设备数据统计
	public function  backupFaildDdrData(){
			
			$total = $this -> getDdrTotal(-1,-1,null);
			if($total < MAX_TABLE_ROWNUM){//总数据不超过120w,数据不需要备份和重置!
			  return array('code'=>-2,'total'=>$total);	
			}	
			$dataStr = date('Y')."_".date('m');
			$sqlTbExist = "SHOW TABLES LIKE  'result_ddr_$dataStr';";
			$resTbExist= $this->db_getOne($sqlTbExist);
			if(!$resTbExist){
				//重命名表 result_ddr
				$sqlRename = "ALTER TABLE result_ddr RENAME TO result_ddr_$dataStr";
				$code = $this->db_update($sqlRename);
				//复制表结构
				if($code){
					$sqlCopy = "CREATE TABLE result_ddr LIKE result_ddr_$dataStr";
					$this->db_query($sqlCopy);
				}
				return array('code'=>1,'total'=>$total);
			}else{
				return array('code'=>-3,'total'=>$total);
			}
 		
	}


二、SQL 场景

1、只复制表结构到新表

CREATE TABLE 新表SELECT * FROM 旧表WHERE 1=2

或CREATE TABLE 新表LIKE 旧表

2、复制表结构及数据到新表

CREATE TABLE 新表SELECT * FROM 旧表

这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。

不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。

3、复制旧表的数据到新表(假设两个表结构一样)

INSERT INTO 新表SELECT * FROM 旧表

4、复制旧表的数据到新表(假设两个表结构不一样)

INSERT INTO 新表(字段1,字段2,…) SELECT 字段1,字段2,… FROM 旧表

5、可以将表1结构复制到表2

SELECT * INTO 表2 FROM 表1 WHERE 1=2

6、可以将表1内容全部复制到表2

SELECT * INTO 表2 FROM 表1

10、表不在同一数据库中(如,db1 table1, db2 table2)

sql: insert into db1.table1 select * from db2.table2 (完全复制)
insert into db1.table1 select distinct * from db2.table2(不复制重复纪录)
insert into tdb1.able1 select top 5 * from db2.table2 (前五条纪录)

11、重命名表

ALTER TABLE result_ddr RENAME TO result_ddr_9;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛气凌人的仙人掌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值