Ilhwanee's Devlog
로그인
Ilhwanee's Devlog
로그인
MySQL 데이터베이스 한번에 끝내기 강의 정리
Ilhwanee
·
2022년 7월 3일
팔로우
0
mysql
데이터베이스
0
데이터베이스
목록 보기
2/4
강의 바로가기
여기
SQL의 분류
DML(Data Manipulation Language)
테이블의 row
SELECT, INSERT, UPDATE, DELETE
DDL(Data Definition Language)
데이터베이스, 테이블, 뷰, 인덱스 등
CREATE, DROP, ALTER
트랜잭션이 발생하지 않음
DCL(Data Control Language)
사용자에게 권한 부여, 빼앗기, 트랜잭션
GRANT, REVOKE
TCL(Transaction Control Language)
DCL에 속하지만 TCL로 구분 짓기도 함
COMMIT, ROLLBACK, SAVEPOINT
정보 조회
SHOW DATABASES
데이터베이스 목록 조회
SHOW TABLES
해당 데이터베이스의 테이블 목록 조회
SHOW TABLE STATUS
테이블 정보 확인
DESCRIBE / DESC
어떤 컬럼이 있는지 확인
SELECT
SELECT
row 선택하여 조회
WHERE
특정 조건에 맞는 row만 제한
조건 연산자(=, > 등), 관계 연산자(AND, OR, BETWEEN AND, IN, LIKE 등) 사용
Sub Query
쿼리문 안에 또다른 쿼리문이 들어 있는 것
기본으로 사용하면 서브 쿼리의 결과가 둘 이상이 되면 에러 발생
ANY()
서브쿼리의 여러 개의 결과 중 한가지만 만족해도 가능 (IN)
ALL()
서브쿼리의 여러 개의 결과를 모두 만족 시켜야 함
ORDER BY
ASC(default), DESC
여러 개 중첩 가능
DISTINCT
중복된 것은 1개씩만 출력
LIMIT
출력 개수 제한
인자 1개면 상위 N개
인자 2개면 특정 범위
GROUP BY
그룹으로 묶음 (~별)
보통 집계 함수를 함께 사용
AVG(), MIN(), MAX(), COUNT()
예를 들어 월별 평균 강수량을 구할 때
HAVING
반드시 GROUP BY절 다음
그룹 별 집계 결과 중 원하는 조건 추가
ROLLUP()
중간합계 보여줌
GROUP BY와 함께 WITH ROLLUP 사용
JOIN
여러 테이블에서 가져온 레코드를 조합하여 하나의 결과로 출력
INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN, SELF JOIN
MySQL은 FULL OUTER JOIN 지원 X -> LEFT JOIN UNION RIGHT JOIN으로 해결
MySQL 내장함수
문자열 함수
LENGTH()
문자열 길이 반환
CONCAT()
전달 받은 문자열들을 합침
문자열이 하나라도 NULL이면 NULL 반환
LOCATE()
문자열 내 찾는 문자열이 처음으로 나타나는 인덱스 반환
MySQL은 문자열 시작 인덱스가 1
LEFT(), RIGHT()
문자열 왼쪽, 오른쪽부터 지정한 길이 만큼의 문자열 반환
LOWER(), UPPER()
소문자, 대문자로 변환
REPLACE
특정 문자열을 대체 문자열을 반환
TRIM()
문자열 앞이나 뒤, 양쪽에 있는 특정 문자 제거
TRIM(BOTH) (default), TRIM(LEADING), TRIM(TRAILING)
제거할 문자를 명시하지 않으면 공백 제거가 default
수학 함수
FORMAT()
NUMBER 데이터를 3자리마다 쉼표로 변환하는 형식으로 반환
반환하는 데이터는 문자열
두 번째 인수는 반올림할 소수 부분의 자릿수
FLOOR(), CEIL(), ROUND()
내림, 올림, 반올림
TRUNCATE()
소수점 이하 자릿수 만큼 남기고 버림
SQRT(), POW(), EXP(), LOG
양의 제곱근, 거듭 제곱, e의 거든 제곱, 자연로그
SIN(), COS(), TAN()
사인, 코사인, 탄젠트 값 반환
PI()는 파이 반환
ABS(), RAND()
NUMBER의 절대값 반환, 0.0보다 크거나 같오 1.0보다 작은 하나의 실수를 무작위로 생성
날짜 함수
NOW(), CURDATE(), CURTIME()
현재 날짜와 시간 반환, 현재 날짜 반환, 현재 시각 반환
DATE(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()
날짜 정보, 월, 일, 시간, 분, 초 반환
DATETIME 등에 사용
MONTHNAME(), DAYNAME
몇월, 몇요일을 영문 이름으로 반환
DAYOFWEEK(), DAYOFMONTH(), DAYOFYEAR()
일주일 중 몇 번째 날인지 반환(일요일 = 1), 월에서 몇번째 날인지 반환, 해당 연도에서 몇번째 날인지 반환
DATE_FORMAT
전달받은 형식에 맞춰 날짜와 시간 정보를 문자열로 반환
%y, %d 등으로 나타냄
SQL 고급
CREATE, USE DATABASE
새로운 데이터베이스 생성, 사용
CREATE TABLE AS SELECT
특정 테이블을 참고하여 테이블 생성
CREATE TABLE() VALUES()
새로운 테이블 생성
NOT NULL, PRIMARY KEY, FOREIGN KEY, UNQUE, INDEX 등 특성 추가 가능
ALTER TABLE
ADD
테이블에 컬럼 추가
MODIFY
테이블의 컬럼 타입 변경
DROP
테이블의 컬럼 제거
INDEX
특정 컬럼에 INDEX를 부여하여 원하는 데이터를 빠르게 찾을 수 있음
MySQL은 인덱스를 B-Tree 형태로 관리
잘못 사용하면 오히려 속도가 느려지므로 WHERE절 등에서 자주 검색되는 컬럼에 사용해야 함
왜 느려질까?
INDEX 설정된 컬럼 값을 포함한 데이터의 삽입, 삭제, 수정 작업에서 인덱스도 함께 수정 되므로
CREATE INDEX, DROP INDEX
테이블의 특정 컬럼에 인덱스 추가, 삭제
SHOW INDEX
테이블의 인덱스 정보 조회
UNIQUE INDEX
중복 값을 허용하지 않는 인덱스
FULLTEXT INDEX
일반적인 인덱스와는 달리 매우 빠르게 테이블의 모든 텍스트 컬럼을 검색
검색 엔진과 유사한 방법으로 자연어를 이용하여 데이터를 검색할 수 있도록 모든 데이터의 문자열 단어 저장
VIEW
데이터베이스에 존재하는 가상 테이블
실제 저장이 아닌, 다른 테이블이나 다른 뷰에 있는 데이터를 보여주는 역할
즉, 완성된 SELECT 문을 하나의 가상 테이블로 생성하는 것
CREATE VIEW
뷰 생성
ALTER VIEW
뷰 수정
DROP VIEW
뷰 삭제
INSERT INTO
테이블에 row 추가
UPDATE
테이블 특정 row 값 변경
WHERE절 생략하면 테이블 전체 변경 됨
DELETE
WHERE절 생략하면 테이블 전체 삭제
데이터는 지워지지만 테이블 용량은 줄어들지 않음 -> 복구도 가능
TRUNCATE
테이블은 삭제되지 않음 (DROP 후 CREATE와 동일)
테이블의 인덱스 등과 데이터를 모두 삭제, 용량 줄어든다 -> 일반적으로 되돌릴 수 없음
DROP TABLE, DATABASE
테이블, 데이터베이스 삭제
일반적으로 되돌릴 수 없음
Ilhwanee
블로그 이전 -> https://pppp0722.github.io
팔로우
이전 포스트
관계형 데이터베이스란? + 예제
다음 포스트
MySQL 트랜잭션의 격리 수준(Isolation Level)
0개의 댓글
댓글 작성
관련 채용 정보