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
- 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 |
댓글