본문 바로가기
빅데이터 부트캠프/MySQL

빅데이터 부트캠프 70일차

by Mecodata 2022. 10. 18.

cmd에서 MySQL 접속하는 방법

- 제어판 - 시스템 환경 변수 설정 - 시스템 변수 - Path에서 MySQL의 bin 폴더 경로 추가후 최상단으로 이동

(이 작업을 시행하지 않으면 cmd를 통해 MySQL로 접속 불가)

- cmd창에서 [mysql -u DB명 -p] 입력 후 비밀번호까지 입력해주면 해당 DB로 mysql 접속

※ [mysqladmin -u DB명 password 새로운 비밀번호] = DB 비밀번호 변경

- exit로 종료

 

MySQL 쿼리 실행 순서

- FROM -> WHERE -> (AS) -> GROUP BY -> HAVING -> SELECT -> ORDER BY

- AS로 설정한 컬럼의 별칭을 GROUP BY, HAVING, ORDER BY에 적용가능 (FROM, WHERE에서는 적용 X)

※ AS로 설정한 테이블의 별칭은 WHERE가 아닌 HAVING에서 적용 가능

 

그룹함수 조건문

- GROUP BY는 WHERE보다 실행 순서가 뒷 순서라서 GROUP BY 입력후 WHERE으로 조건 설정이 불가능

- 따라서 GROUP BY의 조건문 설정을 위해서는 WHERE가 아닌 HAVING을 이용함

- GROUP BY 다음으로 [HAVING 조건]을 입력하면 그룹화된 결과값에 입력한 조건이 적용되어 필터링됨

 

 

JOIN

출처 : https://chlgpdus921.github.io/basecamp/MySQL-JOIN/#reference

- JOIN = DB 내에서 여러 테이블들을 각 테이블들의 행을 조합하여 하나의 테이블로 합치는 방법

- JOIN을 사용함으로써 데이터 중복 최소화를 위해 여러개로 나누어진 테이블들을 하나로 합쳐 편리하게 표현할 수 있음

- JOIN은 여러 개의 테이블을 동시에 적용할 수 있지만 대체로 두 테이블 간의 JOIN을 사용

--------------------- 개념에 대한 이해를 위해 이후 내용은 두 테이블간의 JOIN에 대해서만 설명 ---------------------

- 기본적으로 JOIN은 두 테이블 사이에서 서로 공통으로 존재하는 컬럼 이용해서 사용

- 기본적으로 JOIN은 FROM으로 두 테이블의 데이터를 모두 불러옴

- 두 테이블 사이에서 공통으로 존재하는 컬럼에 한해서만 [테이블명.컬럼명]을 통하여 어떤 테이블의 컬럼의 사용할 것인지 설정해줘야 함

 

Inner Join

- 공통으로 존재하는 컬럼에서 같은 value를 갖고 있는 것을 이용하여 양쪽에서만 존재하는 레코드들을 목적에 따라 선택하여 출력하는 방법

- 형식 (대체로 상대적으로 간결한 1번으로 사용)

1. SELECT ename, empno, loc FROM emp e, dept d WHERE e.deptno = d.deptno AND ename = "KIM";
2. SELECT ename, empno, loc FROM emp e INNER JOIN dept d ON e.deptno = d.deptno WHERE ename = "KIM";

※ ename, empno = emp에만 존재하는 컬럼, loc = dept에만 존재하는 컬럼, deptno = emp, dept 모두에 존재하는 컬럼

 

Self Join

- 서로 다른 테이블이 아닌 서로 같은 테이블 2개로 JOIN을 실행하는 것

ex) SELECT m.ename FROM emp e, emp m WHERE e.ename = "SMITH" AND e.mgr = m.empno;

 

Outer Join

- 조건을 만족하지 않아도 기준이 되는 테이블모든 레코드를 포함시킨 상태에서 JOIN

- 기준으로 선택되지 않은 테이블데이터가 존재하지 않아도 NULL 처리되어 출력

-> 이때 출력되는 NULL 데이터를 공통적으로 하나의 데이터로 맞춰서 출력하고 싶을 경우 IFNULL 이용

- LEFT/RIGTH OUTER JOIN  ~ ON = JOIN 명령어 기준 왼쪽/오른쪽의 모든 데이터 선택 후, 이후 테이블의 데이터와 JOIN

- JOIN에 이용할 공통으로 존재하는 컬럼에 대한 조건WHERE가 아닌 ON을 이용

 

SubQuery

- SELECT ~ FROM ~ WHERE 구문에서 특정 컬럼의 조건값()안에 SELECT ~ FROM ~ WHERE를 입력함으로써 구체화하는 방법

ex) SELECT dname FROM dept WHERE deptno = (SELECT deptno FROM emp WHERE ename = "SMITH");

애초에 ename="SMITH"인 레코드의 deptno에 해당하는 value를 알면 그 값을 입력하면 되지만 그 값을 알지 못해 찾아야 알 수 있는 경우 직접 찾아야 하는 번거로움을 줄이기 위하여 (SELECT ~ FROM ~ WHERE)를 이용해 입력하면 편리하므로 사용  

 

- SUM, MIN, MAX, COUNT 같은 집계함수는 WHERE에 바로 적용하지 못하고 SubQuery를 이용해서 입력해야 함  

ex) SELECT ename FROM emp WHERE sal > AVG(sal); -- 에러
      SELECT ename FROM emp WHERE sal > (SELECT AVG(sal) FROM emp); - 정상적으로 실행

 

MySQL 테이블 조작 

CREATE

- 테이블 생성 예약어

- CREATE TABLE (컬럼명1 데이터타입, 컬럼명2 데이터타입, ...) = 지정한 컬럼 설정에 맞춰서 새로운 테이블 생성

- CREATE TABLE 테이블명 AS SELECT * FROM 복사할 테이블명; = 지정한 테이블을 복사하여 새로운 테이블 생성

- CREATE TABLE 테이블명 AS SELECT * FROM 복사할 테이블명 WHERE 1 = 0; = 지정한 테이블의 구조만 복사(데이터 X)하여 새로운 테이블 생성

1 = 0무조건 거짓인 대표적인 조건

 

ALTER

- 테이블 구조 변경시에는 ATLTER ~ MODIFY 사용

- ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 = 해당 테이블의 지정한 컬럼의 데이터 타입 변경

- ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 = 컬럼 추가

- ALTER TABLE 테이블명 DROP COLUMN 컬럼명 = 컬럼 삭제

 

TRUNCATE

- TRUNCATE TABLE 테이블명 = 해당 테이블 구조만 나두고 데이터 모두 삭제 

 

데이터 변경시 저장 및 복원

- COMMIT = 변경사항 저장 
- ROLLBACK = 변경사항 취소하고 복원

 

INSERT

- 데이터 추가 예약어

- INSERT INTO 테이블명 VALUES (데이터1, 데이터2,...), (), ...; = 해당 테이블에 데이터 추가

※ 데이터 입력시 테이블의 구조(컬럼 순서)에 맞게 데이터를 입력해줘야 함

- INSERT INTO 테이블명(컬럼명1, 컬럼명2) VALUES (데이터1, 데이터2), (), ...; = 해당 테이블의 지정한 컬럼에 데이터 추가

※ 테이블 구조상의 컬럼 순서와 상관없이 입력 가능하지만 컬럼의 데이터 타입에 맞춰서 데이터를 입력해줘야 함

※ 일부 컬럼에 대해서만 적용할 경우 적용하지 않은 컬럼의 데이터는 NULL값으로 입력됨

 

UPDATE

- 데이터 변경 예약어

- UPDATE 테이블명 SET 변경사항 = 해당 테이블의 데이터를 변경사항 적용하여 변경

- UPDATE 테이블명 SET 변경사항 WHERE 조건 = 조건을 만족하는 테이블의 데이터를 변경사항에 따라 변경 

 

DELETE

- 데이터 삭제 예약어

- DELETE FROM 테이블명; =  해당 테이블 데이터 모두 삭제

- DELETE FROM 테이블명 WHERE 조건 = 해당 테이블에서 조건을 만족하는 데이터 삭제

'빅데이터 부트캠프 > MySQL' 카테고리의 다른 글

빅데이터 부트캠프 71일차  (0) 2022.10.19
빅데이터 부트캠프 69일차  (0) 2022.10.17
빅데이터 부트캠프 44일차  (0) 2022.09.05

댓글