본문 바로가기
DB

이것이 MariaDB다 1

by _dreamgirl 2020. 2. 22.
반응형

이것이 MariaDB다

 

- 실무에서 리눅스 환경에서 많이 사용

- 상용적으로 사용해도 되는 오픈소스 SQL

- HeidiSQL Tool을 사용

- MariaDB 및 MySQL의 포트는 기본적으로 3306번을 사용하며, 오라클은 1521번, SQL Server는 1433을 사용한다. 

- EXPLAIN은 쿼리문이 실행될 때 어떤 방식으로 실행되는지 실행 계획의 내용을 보여준다.

- 인덱스, 뷰, 스토어드 프로시저, 트리거

- 백업과 복원하는 법

- 데이터베이스 모델링 : 개념적, 논리적, 물리적 모델링

- dbForge Studio Express : Databases Diagram 

  • DML(Data Manipulation Language) : SELECT, INSERT, UPDATE, DELETE 
  • DDL(Data Definition Language) : CREATE, DROP, ALTER
  • DCL(Data Control Language) : GRANT, REVOKE, DENY

 

기본SQL

 

  • SELECT문
  • USE 데이터베이스 이름
  • SHOW table status : 테이블 정보 조회
  • DESCRIBE 테이블명 or DESC 테이블명 : 테이블 상세 조회
  • 별칭 AS
  • WHERE문 관계 연산자 AND, OR, NOT 등 조건연산자
  • WHERE문 BETWEEN, AND, IN, LIKE %, _
  • ANY/ALL/SOME 그리고 서브쿼리
  • ORDER BY 정렬하기 ASC(오름차순) DESC (내림차순)
  • DISTINCT 중복 제거
  • LIMIT 
  • GROUP BY 
  • 집계 함수 : AVG, MIN, MAX, COUNT, STDEV, VAR_SAMP
  • HAVING : 집계함수의 조건에 대해서 제한을 두는 것. GROUP BY 뒤에 올 것
  • ROLLUP : 중간 합계
  • INSERT
  • AUTO_INCREMENT : Primary Key 혹은 Unique 지정해야 함
  • 여러개를 한번에 INSERT 하기 : INSERT INTO 테이블 ( 열이름~) SELECT문;
  • UPDATE
  • DELETE FROM
  • DELETE문은 트랜잭션 로그를 기록하기 때문에 성능이 상당히 나쁘다. 그러므로, 대용량의 테이블 전체 내용을 삭제할 때, 테이블 자체가 필요 없는 경우에는  DROP으로 삭제하고, 테이블의 구조는 남겨놓고 싶다면 TRUNCATE로 삭제하는 것이 효율적이다.
  • INSERT IGNORE : PK 중복이더라도 무시하고 넘어감
  • INSERT INTO ~ ON DUPLICATE KEY UPDATE ~ : PK 중복이면 UPDATE 문 실행되도록 처리
  • WITH절과 CTE

 

 

SQL고급

 

  • 데이터 형식
  • SMALLINT, INT, BIGINT, FLOAT, DOBBLE, REAL, DECIMAL
  • CHAR, VARCHAR
  • DATE, DATETIME
  • PREPARE 쿼리이름 FROM 쿼리문
  • EXECUTE
  • 명시적 변환과 암시적 변환
  • 제어흐름함수 IF, IFNULL, NULLIF, CASE~WHEN~ELSE~END
  • 문자열 함수
  • 수학 함수
  • 날짜 및 시간 함수 : ADDDATE(날짜, 차이), SUBDATE(날짜, 차이), ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간), DATE(), TIME(), DATEDIFF(), TIMEDIFF() 기타 등등
  • 시스템 정보 함수 : USER(), DATABASE(), FOUND_ROWS(), ROW_COUNT(), SLEEP(초) 등
  • 기타 내장함수 https://mariadb.com/kb/en/library/built-in-functions/
  • 윈도우 함수 OVER절
  • 순위 함수 RANK, NTITLE, DENSE_RANK, ROW_NUMBER
  • 분석 함수 CUME_DIST, LEAD, FIST_VALUE, LAG, LAST_VALUE, PERCENT_RANK

 

  • 피벗과 JSON, JSON_OBJECT, JSON_ARRAY 함수 이용
  • 조인
  • INNER JOIN(내부 조인) : 교집합

SELECT <열 목록>

FROM <첫 번째 테이블>

INNER JOIN < 두 번째 테이블>

ON <조인될 조건>

  [WHERE 검색조건]

 

  • OUTER JOIN(외부 조인) : 합집합

SELECT <열 목록>

FROM <첫 번째 테이블(LEFT 테이블)>

<LEFT | RIGHT | FULL > OUTER JOIN <두 번째 테이블(RIGHT 테이블)>

ON <조인될 조건>

[WHERE 검색조건]

 

  • CROSS JOIN(상호 조인) : 두 테이블의 수를 곱한 데이타의 결과를 얻음, 테스트로 사용할 많은 용량의 데이터를 생성할 때 주로 사용
  • SELF JOIN(자체 조인) : 하나의 테이블에 같은 데이터가 존재하되 의미는 다르게 존재하는 경우
  • UNION / UNION ALL / NOT IN / IN 
  • 동적 SQL 

 

반응형

'DB' 카테고리의 다른 글

프로그래머스 SQL 테스트 3  (0) 2022.06.01
SQL JOIN문 공부하기  (0) 2022.05.15
프로그래머스 SQL 테스트 2  (0) 2022.05.11
프로그래머스 SQL 테스트 1  (0) 2022.05.10
이것이 MariaDB다 2  (0) 2020.02.22

댓글