정보보안공부

DBMS_day20 본문

데이터베이스

DBMS_day20

Steady_sp 2017. 8. 7. 17:32

# Left join ( 왼쪽 테이블만 존재하는 것 출력)
-> select * from A left join B on A.userID = B.userID where B.userID is null 
 - A 테이블과 B 테이블에서 userID라는 컬럼에 값이 B에는 없고 A에만 존재하는 행을 출력한다.
 - 물건을 사지않은 사람의 회원정보만 조회할수있다. ( A : 회원테이블, B : 구매 테이블 )

 

# Right join ( 오른쪽 테이블만 존재하는 것 출력 )
-> select * from A right join B on A.userID = B.userID where B.userID is null

 

############################################################################

# 엑셀파일로 저장할때 저장 법 : Export아이콘 클릭

 

# 엑셀파일로 저장되있는 것을 불러오는 법 : import아이콘 클릭 ( 코딩은 utf-8 )

 

# 엑셀파일로 저장할때 쿼리로 저장하는 법
-> select * into outfile 'C:\\test_backup.csv' fields terminated by ',' from sqlDB.userTBL;
-> 에러

 

# 엑셀파일로 저장되있는 것을 쿼리를 통해 가져오는 법 ( 진행할 때 가져오기할 csv파일이 리눅스 서버에 있어야한다. )
-> winscp이용
-> load data local infile '/Data/test.csv' into table sqlDB.userID fields terminated by

 

# 데이터베이스에 있는 테이블을 파일로 저장하는 것은 우리 회사에 중요한 고객정보가 유출될 수 있는 매우 위험한 일이다.

 

# MySQL에서는 outfile 쿼리로 테이블에 값을 파일로 저장하는 것을 막고 있다.

 

# MySQL 외부 파일 저장 기능 허용하는 방법
1. vi /etc/my.cnf
2. [mysqld] 아래에 내용으로 secure_file_priv='/Data'
3. vi /etc/selinux/config -> SELINUX=enforcing -> SELINUX=disabled 로 변경하고 저장한다.
4. reboot
5. mkdir /Data -> chown root.mysql /Data -> chmod 730 /Data -> systemctl restart mysqld
6. select * into outfile '/Data/backup.csv' fields terminated by ',' from sqlDB.userTBL;
7. Winscp사용
8. 메모장을이용해 코딩을바꿔 다른이름으로 저장


# secure_file_priv='/Data'
-> 위 설정은 최상위에 Data라는 디렉터리로 파일로 저장을 허용하겠다.

 

# outfile을 통해 테이블 데이터를 파일로 저장하는 것은 서버실에 있는 mysql 서버로만 저장이 가능하지, 사무실에 있는 내 업무 PC로 저장할 수는 없다.
-> 업무 PC = 실제PC
-> 

 

# 리눅스 운영체제에 selinux라는 것이 자동으로 가동되고 있고 이 프로그램이 MySQL 파일 내보내기 하는 것을 막고있다.

 

# outfile로 내보내기 할 디렉터리는 리눅스 운영체제에 root라는 관리자 계정만 접근할 수 있게 디렉터리 권한 설정을 해서 운영해야 데이터 유출을 최대한 줄일 수 있다.

 

# oufile로 내보내기 할 경우 한글이 보이지않는데 메모장으로 저장된것을 불러온뒤 ANSI로 코딩을바꿔 저장한다.

 

# outfile 로 내보내기하면 컬럼명은 함께 내보내기 되지 않는다.

 

# union 쿼리는 두 테이블에 값을 join처럼 하나로 합칠 수 있는데 , join은 옆으로 union은 아래로 합친다.

 

# union 쿼리는 두 테이블을 하나에 테이블로 합쳐서 출력할 때 값이 중복되면 한개만 출력한다.

 

# union all 쿼리는 중복을 제거하지 않는다.

 

<join SQL>

'데이터베이스' 카테고리의 다른 글

DBMS_day19  (0) 2017.08.04
DBMS_day18  (0) 2017.08.03
DBMS_day17  (0) 2017.08.02
DBMS_day16  (0) 2017.08.01
DBMS_day15  (0) 2017.08.01
Comments