[SQL] 12. SQL File

hhyun·2024년 6월 11일

[SQL]

목록 보기
13/20

📖 SQL File

🌟 Workspace 생성

  • sql_ws 폴더를 만들고 그 하위에서 실습
Document> mkdir sql_ws
Document> cd sql_ws
sql_ws>

🌟 SQL File 생성 방법

  • sql_ws 폴더 하위에서 다음을 실행합니다.
sql_ws> code . -- 현재 폴더를 VSCode로 열라는 뜻
  • VSCode가 열리면 test01.sql파일을 생성한다.

🌟 SQL File

• SQL 쿼리를 모아놓은 파일

🌟 SQL File 실행1 - 로그인 이후

mysql> source /path/filename.sql
mysql> \. /path/filename.sql	-- source 대신 \. 사용가능
mysql> \. filename.sql 			-- 현재폴더에 파일이 있으면 path 생략가능
  • sql_ws로 이동 후 zerobase에 접속
C:\sql_ws>mysql -u root -p zerobase
-- 위와 같이 하면 데이터베이스로 바로 접속가능
C:\sql_ws>mysql -u root -p<비말번호>
C:\sql_ws>use zerobase;
-- 따로 접속

💭 SQL File 실행1 - 예제

  • 경찰서 정보를 테이블로 만들기

  • sql_ws로 이동 후 zerobase에 접속

 C:\sql_ws>mysql -u root -p zerobase
  • SQL File 실행
mysql> source test01.sql
  • 결과 확인
mysql> desc police_station;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| name    | varchar(16)  | YES  |     | NULL    |       |
| address | varchar(128) | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

🌟 SQL File 실행2 - 외부에서 바로 실행

mysql -u username -p database < /path/filename.sql

💭 SQL File 실행2 - 예제

  • 서울특별시 관서별 5대 범죄 현황 정보를 테이블로 만들기

  • zerobase Database 에 접속하면서 SQL File 을 실행

 C:\sql_ws>mysql -u root -p zerobase <test02.sql
  • zerobase에 접속 후 결과 확인
C:\sql_ws>mysql -u root -p zerobase
Enter password:
mysql> desc crime_status; 
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| year           | year        | YES  |     | NULL    |       |
| police_station | varchar(8)  | YES  |     | NULL    |       |
| crime_type     | varchar(16) | YES  |     | NULL    |       |
| status_type    | char(2)     | YES  |     | NULL    |       |
| case_number    | int         | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+

📖 Database Backup

🌟 Database Backup

  • SQL File로 Database를 백업할 수 있다.
mysqldump -u username -p dbname > backup.sql             # 특정 Database Backup
mysqldump -u username -p --all-databases > backup.sql    # 모든 Database Backup 

💭 Database Backup - 예제

  • zerobase Database Backup
mysqldump -u root -p zerobase > zerobase.sql

🌟 Database Restore

  • 데이터베이스를 백업한 SQL File을 실행하여 그 시점으로 복구하거나 이전으로 할 수 있다.
    (SQL File을 실행하는 방법과 동일함)
source backup.sql

💭 Database Restore - 예제

  • AWS RDS(database-1) 서비스가 사용가능한 상태에서 접속
C:\sql_ws> mysql -h "엔드포인트" -P 3306 -u admin -p
  • zerobase Database로 이동
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zerobase           |
+--------------------+
mysql> use zerobase;
Database changed
  • AWS RDS (database-1) 의 zerobase Database 를 복원
mysql> source zerobase.sql
Query OK, 0 rows affected (0.01 sec)
...
Query OK, 0 rows affected (0.01 sec)
  • 결과 확인
mysql> show tables;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| celeb              |
| crime_status       |
| police_station     |
| snl_show           |
+--------------------+

📖 Table Backup

🌟 Table Backup

  • Table 단위로도 백업할 수 있다.
mysqldump -u username -p dbname tablename > backup.sql

💭 Table Backup 예제

+Local Database에서 movie Table을 백업

mysqldump -u root -p zerobase celeb > celeb.sql

🌟 Table Restore

  • Table을 백업한 SQL File을 실행하여, 해당 테이블을 복구하거나 이전할 수 있다. (SQL File을 실행하는 방법과 동일함)
source backup.sql

💭 Table Restore 예제

  • AWS RDS(database-1)의 zerobase에서 celeb 테이블 삭제
C:\sql_ws> mysql -h "엔드포인트" -P 3306 -u admin -p zerobase
...
mysql> drop table celeb;
Query OK, 0 rows affected (0.01 sec)
  • AWS RDS (database-1) 의 zerobase 에서 celeb 테이블을 복구
mysql> source celeb.sql
Query OK, 0 rows affected (0.01 sec)
...
Query OK, 0 rows affected (0.01 sec)
  • 결과 확인
mysql> select * from celeb;
+----+-----------+------------+------+------+-------------------------+--------------------------+
| ID | NAME      | BIRTHDAY   | AGE  | SEX  | JOB_TITLE               | AGENCY                   |
+----+-----------+------------+------+------+-------------------------+--------------------------+
|  1 | 아이유    | 1993-05-16 |   29 | F    | 가수,텔런트             | EDAM엔터테이먼트         |
|  2 | 이미주    | 1994-09-23 |   28 | F    | 가수                    | 울림엔터테이먼트         |
|  3 | 송강      | 1994-04-23 |   28 | M    | 배우                  	| 나무엑터스               |
|  4 | 강동원    | 1981-01-18 |   41 | M    | 배우, 모델        		| YG엔터테이먼트           |
|  5 | 유재석    | 1972-08-14 |   50 | M    | MC, 개그맨              | 안테나                   |
|  6 | 차승원    | 1970-06-07 |   48 | M    | 배우, 모델          	| YG엔터테이먼트           |
|  7 | 이수현    | 1999-05-04 |   23 | F    | 가수                    | YG엔터테이먼트           |
+----+-----------+------------+------+------+-------------------------+--------------------------+

📖 Table Schema Backup

🌟 Table Schema Backup

  • 데이터를 제외하고 테이블 생성 쿼리만 백업할 수 있다.
mysqldump -d -u username -p dbname tablename > backup.sql   # 특정 Database Backup
mysqldump -d -u username -p dbname > backup.sql             # 모든 Database Backup

💭 Table Schema Backup 예제

  • Local Database에서 snl_show Table Schema 백업
C:\sql_ws> mysqldump -d -u root -p zerobase snl_show -r snl.sql 
  • VSCode에서 snl.sql 확인 (Data는 포함하지 X)

    📌 비교 : celeb.sql은 data 포함

0개의 댓글