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;

猜你喜欢

转载自blog.csdn.net/oZiJing/article/details/119750439