MySQL 데이터베이스 한번에 끝내기 강의 정리

wannabeking·2022년 7월 3일
0

데이터베이스

목록 보기
2/4
post-thumbnail

강의 바로가기

여기



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
    • 테이블, 데이터베이스 삭제
    • 일반적으로 되돌릴 수 없음


profile
내일은 개발왕 😎

0개의 댓글