Dev Blog

스크립트 & 소스코드 공유

실무에서 유용하게 쓰는 스크립트와 코드 조각을 블로그 게시판으로 저장하고 공유합니다.

4건의 글

MySQL 데이터베이스 전체 백업과 복구 방법 (mysqldump)

mysqldump를 이용한 MySQL 백업과 복구 방법을 정리한 글이다. 특정 DB·특정 테이블 단위 백업/복구, 여러 DB를 한 번에 백업하는 --databases 옵션, 전체 DB를 백업하는 --all-databases, 기존 테이블을 삭제하고 복구하는 --add-drop-table 옵션의 차이를 명령어 예제로 설명한다.

  • 특정 데이타베이스 하나만을 백업

백업형식 : myslqdump -u DB계정명 -p 백업대상데이터베이스명 > 저장할파일명

복구형식 : mysql -u DB계정명 -p 복구할테이터베이스명 < 저장할파일명

./mysqldump -u root -p mysql > mysql.sql //mysql 디비 백업 예

./mysql -u root -p mysql < ./mysql.sql //mysql 디비 복구 예

// 위 백업결과물인 sql 파일은 디비를 생성하지는 않는다.. 다시말해 복구하려는 디비에 mysql이란 디비가 없다면 복구가 되지않는다.... 이점 유의

// 복구하려는 mysql 디비에 테이블이 이미 존재한다면 복구 실패... sql 파일에서 해당 디비의 테이블을 생성하므로.. 따라서 특정 데이타베이스 하나만을 복구 할 시에는 데이타베이스의 이름만 생성한 다음에 위 방법의 복구하여야 함

  • 특정 데이타베이스의 특정 테이블 하나만을 복구 백업

백업형식 : myslqdump -u DB계정명 -p 데이터베이스명 테이블명 > 저장할파일명

복구형식 : mysql -u DB계정명 -p 데이터베이스명 < 저장할파일명

./mysqldump -u root -p mysql user > user.sql

./mysql -u root -p mysql < user.sql

  • 여러개의 데이터베이스 한번에 백업과 복구

백업형식 : mysqldump -u root -p --databases [옵션] DB1 [DB2 DB3] > 파일명

복구방법 : mysql -u root -p < 파일명

./mysqldump -u root -p --databases mysql test > dbs.sql //mysql, test 디비를 백업

./mysql -u -root -p < dbs.sql //백업된 두 디비를 복구

//--databases 옵션 시 일반 백업과 달리 "CREATE DATABASE ..."문과 "USE DB .." 문이 추가됨

//달리 애기하면 DB를 생성할 필요가 없이 바루 디비가 생성되고 생성된 디비로 전환되고 테이블을 생성하고 인서트로 데이타를 붓는다.. 데이타베이스를 지정하면 안됨

  • Mysql 의 전체 데이타베이스 백업

백업형식 : ./mysqldump -u root -p --all-databases > 파일명.sql

복구형식 : mysql -u root -p < 파일명.sql

//원본 데이타베이스명과 동일한 디비가 생성됨

  • 기존 테이블 삭제후 백업된 파일로 복구를 위한 백업

(mysqldump문으로 데이타베이스 백업 시 각각의 create table문 앞에 drop table문을 삽입한 형태가 된다)

백업형식 : ./mysqldump -u root -p --add-drop-table test > test.sql

//test 데이타베이스를 기존 태이블 삭제문을 추가하여 백업한다

복구형식 : ./mysql -u root -p test < test.sql

//기존 테이블을 삭제하고 복구한다는것에 유의

1、查看库:show databases;

2、建立数据库: create database 库名;

3、选择数据库:use 库名;

4、查看库下的所有表:show tables;

5、查看表结构 :desc表名;(describe缩写)

6、建立数据表:

use 库名;

create table 表名 (字段名 varchar(20)字符串, 字段名 char(1));

7、修改表名:rename table oldname to newname;

8、往表中插入记录:insert into 表名values (‘hyq’,‘m’);

9、显示表中的记录:select * from 表名;

10、更新表中数据:

update 表名 set 字段名1=‘a’, 字段名2=‘b’ where 字段名3=‘c’;

多个字段更新,用逗号隔开

自增 update myTable set vipczz=vipczz+1 where vip=1;

11、将表中记录清空:delete from表名 where id=1;

12、删除数据表:drop table 表名;

13、删除数据库:drop database 库名;

MySQL 명령어 - 테이블 복사(구조·내용 포함)

MySQL에서 자주 쓰는 쿼리 메모다. mysql -u root -p로 데이터베이스에 접속한 뒤, create table ... like로 기존 테이블의 구조만 복사하고, create table ... select * from으로 구조와 데이터를 함께 복사하는 두 가지 방법을 예제와 함께 정리했다.

//链接数据库

[root@q352-1371 ~]# mysql -u root -p

//复制表格

mysql > create table dateBasesName.tableName_copy like dateBasesName.tableName;

//复制表格并且复制内容

mysql > create table dateBasesName.tableName_copy select * from dateBasesName.tableName;

phpMyAdmin으로 MySQL 데이터베이스 테이블 일괄 삭제하기

PHP 스크립트를 이용해 특정 접두어(v9_)가 붙은 MySQL 테이블을 한 번에 삭제하는 방법이다. 데이터베이스에 연결해 show tables로 전체 테이블을 조회한 뒤, 접두어가 일치하는 테이블만 drop table로 삭제하고 결과를 출력한다. 실행 전 반드시 데이터베이스 전체를 백업할 것을 권장한다.

使用这个方法前,强烈建议先备份整个数据库。至于怎么备份?你不会么?在本文下方留言吧。

具体方法:复制下面的php执行语句,保存为sql.php文件(注意配置数据库名称、密码、数据表头),通过ftp上传到网站跟目录,运行。

<?php
//设置数据库连接信息。数据库服务器地址,数据库用户名,数据密码
mysql_connect('localhost','root','123456');
//设置查询的数据库名称,比如CMSYOU当前设置的是phpcms
mysql_select_db('phpcms');
$rs=mysql_query('show tables');
while($arr=mysql_fetch_array($rs))
{
//设置要批量删除的数据库表前缀,如:v9_
$TF=strpos($arr[0],'v9_');
if($TF===0){
$FT=mysql_query("drop table $arr[0]");
if($FT){
echo "$arr[0] 删除成功!<br>";
}
}
}
?>

MySQL에서 중복 데이터 모두 찾기 (GROUP BY + HAVING)

MySQL에서 특정 필드의 중복된 값을 모두 찾아내는 방법을 정리했다. GROUP BY와 count()로 필드값별 건수를 집계하고, HAVING 절에서 count 결과가 n 이상인 항목만 거르는 쿼리 예제를 보여준다. 중복 횟수 2개 이상인 데이터를 확인하는 실제 실행 결과 표도 함께 포함되어 있다.

SELECT 필드명, count(*) FROM 테이블명 GROUP BY 필드명
mysql> SELECT t1, count(*) FROM test GROUP BY t1

중복된 갯수가 n개 이상인 것 찾기
SELECT 필드명, count(*) as 변수명 FROM 테이블명 GROUP BY 필드명 HAVING 변수명>n

mysql> SELECT t1, count(*) as num FROM test GROUP BY t1 HAVING num>1;
t1 num
tulip pink 2
라일라 2

2 rows in set (0.01 sec)



Let's create something great together.

프로젝트 문의 및 견적 요청은 언제든 환영합니다.