데이터베이스(DataBase)
- 구조화된 정보 또는 데이터의 조직화된 모음
- 데이터베이스 관리 시스템(DBMS)에 의해 제어
- CRUD(Create, Read, Update, Delete) = 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능
- DB에서 CRUD는 각각 INSERT, SELECT, UPDATE, DELETE를 가리킴
관계형 데이터베이스(Relational DataBase - RDB)
- 키(key):값(value)의 간단한 관계를 가진 데이터들을 테이블화 시킨 간단한 원칙의 전산정보 데이터베이스
- SQL(Structured Query Language) = RDB에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
구성요소
- 열(column), 필드(field), 속성(attribute) = 데이터를 구분하는 기준, 타입
- 행(row), 튜플(tuple), 레코드(record) = 관계된 데이터의 묶음
- 키(key) = 테이블에서 행의 식별자로 이용되는 열
- 값(value) = 행과 열에 대응하는 값
MYSQL 단축키
- ctrl + Enter = 쿼리 한줄 실행
- ctrl + Shift + Enter = 쿼리 전체 실행
- ctrl + D = 쿼리 한줄 바로 밑에 그대로 복사
- ctrl + B = 쿼리 정렬
- ctrl + Space = 예약어 자동완성 실행
MySQL 기본 예약어
- MySQL에서 쿼리(예약어)는 대소문자 상관 없이 명령을 인식하지만 기본적으로 대문자로 입력
※ 예약어 자동완성 사용시 예약어가 대문자로 입력되도록 하는 방법
Edit - Preferences - Query Editor - Use UPPERCASE~ 버튼 체크
- USE DB명 / TABLE명 = 해당 DB or 테이블 사용
- SHOW DATABASES / TABLES = DB / 테이블 목록 출력
- DESC TABLE명 = 해당 테이블의 구조(스키마) 출력
- SELECT = 데이터 출력
- UPDATE = 데이터 수정
- INSERT = 데이터 추가
- DELETE = 데이터 삭제
SELECT
- 데이터 출력 예약어
- SELECT 컬럼명 (AS) 텍스트 = 지정한 텍스트로 컬럼명 지정하여 출력
(띄어쓰기를 적용하여 텍스트를 입력하려면 ''안에 텍스트를 입력해야함, 실제로 적용 X -> 보기 편하기 위해서 사용)
ex) SELECT ename "사원 이름" FROM emp;
- SELECT DISTINCT 컬럼명 = 중복 제거한 해당 컬럼 데이터 출력
- IFNULL(컬럼명, 데이터) = 해당 컬럼 데이터 중에서 NULL인 데이터를 지정한 데이터로 변환
- ORDER BY 컬럼명 ASD/DESC = 해당 컬럼 데이터 오름차순/내림차순 정렬
조건문
- WHERE 조건 = 조건문
- 조건적용시 대소문자를 구분하고 싶으면 BINARY 이용
- 한 컬럼에 대한 조건이 여러개인 경우에는 [컬럼명 IN (조건1, 조건2, ...)]을 이용하여 적용 가능
- NULL에 대한 조건을 입력할 때는 = NULL이 아닌 IS NULL을 입력 (에러 없이 실행은 되지만 조건 적용이 안됨)
- IS NULL은 조건문에서만 사용 가능
ex) UPDATE emp SET comm = 0 WHERE comm IS NULL;
※ UPDATE ~ SET으로 조건을 만족하는 데이터를 NULL로 바꾸려면 IS NULL이 아닌 = NULL 사용
- 조건이 특정 구간에 대한 것이면 BETWEEN ~ AND를 통해 적용 가능
- 조건이 문자열에 관한 것이면 LIKE를 이용하여 문자열에 대한 특정 조건 설정 가능
( _ = 문자열 수 지정, %는 앞뒤 문자열수 상관없이 허용)
GROUP BY와 함께 사용되는 집계 함수
- GROUP BY 컬럼명 = 지정한 컬럼 기준으로 데이터 그룹화
- SUM() = 합계, MAX() = 최대값, MIN() = 최솟값, COUNT() = 개수, STDEV() = 표준편차, VAR_SAMP() = 분산
- 집계 함수를 조건문에서 사용하려면 WHERE에 바로 적용 불가능 (IN을 이용해서 서브 쿼리로 입력해야함)
ex) SELECT * FROM emp WHERE sal IN (SELECT MAX(sal) FROM emp); = 급여(sal)가 가장 높은 사원 정보(emp)) 출력
숫자 관련 함수
- ABS = 절대값
- ROUND = 반올림
- TRUNC = 버림
- MOD = 나눗셈 나머지
- POWER = 제곱
문자열 관련 함수
- LENGTH = 문자열 길이 (영어는 문자 하나당 1byte라 길이를 1로 인식하지만 한글(UTF-8)은 문자 하나당 3byte로 인식하여 문자열 하나의 길이가 3으로 인식됨)
- SUBSTR(데이터, 시작위치, 추출할 개수) = 특정 인덱스 위치의 문자열 추출
(MYSQL은 인덱스 번호 시작이 0이 아닌 1부터)
- TRIM = 문자열 앞뒤의 공백 제거 (스페이스바에 대한 공백만 제거, TAB에 의한 공백은 제거 X)
- UPPER = 문자열 모두 대문자로 변환
- LOWER = 문자열 모두 소문자로 변환
날짜 관련 함수
- 날짜 데이터는 2022-10-17, 2022/10/17로 표현 모두 가능
- SYSDATE = 현재 시간 출력 (SLEEP 적용 O)
- NOW = 현재 시간 출력 (SLEEP 적용 X)
- ADDDATE(SYSDATE(), INTERVAL 기간) = 날짜 사칙연산
- DATEDIFF(날짜1, 날짜2) = 두 날짜 차이 계산
- TIMESTAMPDIFF(간격 단위, 날짜1, 날짜2) = 두 날짜 차이 계산 (설정한 단위에 맞게 반환)
※ 간격 단위 = YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND
- LAST_DAY = 지정한 날짜(월)의 마지막 날 출력
형변환 함수 (적용은 X, 변환 적용은 UPDATE ~ SET 이용)
1. DATE_FORMAT(날짜 데이터, 출력 형식) = 지정한 날짜 데이터 or 날짜 형식의 정수 데이터를 지정한 출력 형식에 맞게 날짜 데이터로 변환
ex) SELECT DATE_FORMAT(NOW(), '%Y-%M-%d'); -> 현재 시간이 2022-10-17와 같은 형식으로 출력
출력형식
- %Y 년도 - Year(4자리 표기)
- %y 년도 (뒤에 2자리 표기)
- %M 월 - 월 이름(January ~ December)
- %m 월 - 월 숫자(00 ~ 12)
- %d 일(00 ~ 31)
- %H 시간 24시간(00 ~ 23)
- %h 시간 12시간(00 ~ 12)
- %i 분 (00 ~ 59)
- %s 초 (00 ~ 59)
2. STR_TO_DATE = 문자열 데이터를 날짜 데이터로 변환하여 출력
단, 문자열 데이터에 -이나 / 같은 구분자 텍스트가 있으면 적용 X
3. CAST(데이터 AS 데이터 타입) = 지정한 데이터를 지정한 데이터 타입으로 변환하여 출력
ex) SELECT CAST(1 AS CHAR) = INT를 CHAR로 변환하여 출력
MySQL 데이터 타입
- BINARY = 이진 데이터
- CHAR = 문자열
- DECIMAL = 실수
- SIGEND (INTEGER) = 부호 (음수,양수) 있는 정수
- UNSIGNED (INTEGER) = 부호 없는 정수
- DATE = 날짜
- DATETIME = 날짜 + 시간
- TIME = 시간
- JSON = 키:값
'빅데이터 부트캠프 > MySQL' 카테고리의 다른 글
빅데이터 부트캠프 71일차 (0) | 2022.10.19 |
---|---|
빅데이터 부트캠프 70일차 (0) | 2022.10.18 |
빅데이터 부트캠프 44일차 (0) | 2022.09.05 |
댓글