From 69884f27f3ed9421c8f6fc93932692c692a77c8d Mon Sep 17 00:00:00 2001 From: Jyoungjo Date: Fri, 12 Jan 2024 23:45:12 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E2=9C=852=EC=A3=BC=EC=B0=A8=20?= =?UTF-8?q?=EB=8F=85=EC=84=9C=20=EC=99=84=EB=A3=8C!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2week-sql-basic/youngjo-summary.md | 103 +++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 2week-sql-basic/youngjo-summary.md diff --git a/2week-sql-basic/youngjo-summary.md b/2week-sql-basic/youngjo-summary.md new file mode 100644 index 0000000..a3fca83 --- /dev/null +++ b/2week-sql-basic/youngjo-summary.md @@ -0,0 +1,103 @@ +# 2장. SQL 기초 + +## SELECT 구문 + +--- + +### SELECT 구와 FROM 구 +- SELECT 구문 = SELECT 구(필수) + FROM 구(필수는 아님. 예외 조건 있음.) +- FROM 구를 입력하지 않아도 되는 경우 + - 특정 테이블에서 데이터를 꺼내는 작업이 아닌 경우 +- 불완전한 정보 = 공란 = NULL + +### WHERE 구 +- 특정한 조건을 갖는 레코드를 검색하고 싶을 때 사용 +- 다양한 연산자들이 있고, 연산자의 종류는 아래와 같다. + +| 연산자 | 의미 | 종류 | +|:----------------:|:------------------:|:--:| +| = | ~ 와 같음 | 비교 | +| <> | ~ 와 같지 않음 | 비교 | +| \>= | ~ 이상 | 비교 | +| \> | ~ 보다 큼 | 비교 | +| <= | ~ 이하 | 비교 | +| < | ~ 보다 작음 | 비교 | +| AND | 하나라도 False이면 False | 논리 | +| OR | 하나라도 True이면 True | 논리 | +| IN (값1, 값2, ...) | 선택하고자 하는 값들 | 논리 | +| NOT | 부정 | 논리 | +| IS NULL | 공란 | 논리 | + +그 밖에 산술 연산자, 비트 논리 연산자 등이 있다. + +### GROUP BY 구 +- 특정 컬럼의 값이 같은 레코드 들을 묶어 하나의 그룹으로 만든다. +- 장점 : 집계 함수 사용 가능 + +### HAVING 구 +- GROUP BY 구를 사용한 결과에 조건을 걸어주는 구 + +### ORDER BY 구 +- 순서를 보장하게 해주는 구 +- ASC(생략): 오름차순, DESC: 내림차순 + +### 뷰와 서브쿼리 +- 뷰: SELECT 구문을 저장한 것 / 서브쿼리: FROM 구에 직접 지정한 SELECT 구문 +- 뷰는 컴퓨터 상의 바로가기 느낌이다. 실행 파일은 아니지만 해당 파일의 바로가기를 클릭함으로써 실행 파일이 실행이 되는 느낌 +- 결국 뷰나 서브쿼리를 사용하는 목적은 복잡한 SELECT 문을 단순화시켜 사용함 + 동적으로 쿼리를 사용 가능 + +## 조건 분기, 집합 연산, 윈도우 함수, 갱신 + +--- + +### SQL과 조건 분기 +- CASE 구문 + - Java의 switch 조건문과 매우 유사함 + - WHEN 구의 조건이 맞으면 THEN 구에서 지정한 값이 리턴되는 방식 + - 조건들이 맞지 않을 경우 ELSE 에서 지정한 식 리턴 + +### SQL의 집합 연산 +- UNION + - 합집합의 개념(중복 레코드 제거) + - 만약 중복 레코드도 포함하고 싶다면 UNION ALL 사용 + +- INTERSECT + - 교집합의 개념(중복 레코드 제거) + - 양쪽으로 공통되는 레코드 출력 + +- EXCEPT + - 차집합의 개념 + - 테이블 작성 순서에 따라 결과값이 달라지므로 주의해야한다. + +### 윈도우 함수 +GROUP BY : 집약 + 자르기 / 윈도우 함수 : 자르기 +- 보통 윈도우 함수 뒤에 OVER (PARTITION BY or ORDER BY) 를 사용하여 자른다. +- 대표적으로 COUNT, SUM, RANK(건너뛰기), DENSE_RANK(건너뛰지 않기), ROW_NUMBER 등이 있다. + +### 트랜잭션과 갱신 +- INSERT(삽입) + - 테이블에 데이터를 보관(레코드) + ```sql + INSERT INTO [테이블 명] ([필드1], [필드2], ...) VALUES ([값1], [값2], ...); + ``` + +- DELETE(삭제) + - 하나의 레코드만 삭제하는 것이 아닌 테이블 내의 모든 레코드를 삭제(특정 조건의 레코드 삭제 가능). + - 테이블은 남아있음. + ```sql + DELETE FROM [테이블 명]; + + 또는 + + DELETE FROM [테이블 명] WHERE [조건]; + ``` + +- UPDATE + - 등록된 데이터를 변경(조건별 레코드 수정 가능) + ```sql + UPDATE [테이블 명] SET [필드 명] = [식]; + + 또는 + + UPDATE [테이블 명] SET [필드 명1] = [식1], [필드 명2] = [식2] WHERE [조건]; + ``` \ No newline at end of file