관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다.
SQL은 구조화된 질의 언어 Structured Query Language의 약자로 DBMS 상에서 데이터를 읽고 쓰고 삭제하는 등 데이터를 관리하기 위한 일종의 프로그램 언어입니다.
C나 자바와 같은 일반 프로그래밍 언어는 절차적 언어라고 할 수 있는데 반해, SQL은 집합적 언어입니다.
출처 : https://thebook.io/006696/0019/
출처 : https://heewon26.tistory.com/187
출처 : https://brownbears.tistory.com/180
출처 : https://brownbears.tistory.com/180
출처 : https://brownbears.tistory.com/180
관계형 데이터베이스를 다루다보면 CASCADE를 활용할 일이 많습니다.
참조의 관계를 맺은 데이터베이스를 신뢰성 있는 상태로 유지하기 위함인데요!
DB의 값을 수정/삭제할 때, 해당 값을 참조하고 있는 레코드 역시 종속적으로 수정/삭제를 가능하게 해줍니다.
[수정 - ON UPDATE CASCADE][삭제 - ON DELETE CASCADE]
출처 : https://coding-factory.tistory.com/224
출처 : https://myjamong.tistory.com/172
SELECT ~ FOR UPDATE를 실행하면 특정 세션이 데이터에 대해 수정을 할 때까지 LOCK이 걸려 다른 세션이 데이터에 접근할 수 없습니다.
출처 : https://dololak.tistory.com/446
GROUP BY 는 같은 값을 가진 행끼리 하나의 그룹으로 뭉쳐줍니다.
ORDER BY 절은 SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬하여 출력하는데 사용한다.
출처 : https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=344
이너조인
레프트 아우터조인
라이트 아우터조인
풀 아우터조인
INNER JOIN은 위에 설명 했듯이 교집합이라는 개념으로 생각하면 이해하기 편할듯.
OUTER JOIN은 INNER JOIN에서 일치하지 않는 레코드는 모두 버렸지만 OUTER JOIN에서는 일치하지 않더라도 버리지 않고 NULL로 채워서 결과를 응답한다.
출처 : https://velog.io/@welchs1423/INNER-JOIN-OUTER-JOIN-%EC%B0%A8%EC%9D%B4
https://ybeaning.tistory.com/87
위에 설명
CROSS JOIN(상호 조인)은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다.
출처 : https://mozi.tistory.com/233
DELETE : WHERE절을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거하는 방식
TRUNCATE : 전체 데이터를 한번에 삭제하는 방식 ( <-> DELETE)
DROP : 테이블 자체를 완전히 날려버리는 방식 -> 처음부터 없었던 테이블처럼
출처 : https://prinha.tistory.com/entry/SQL-DELETE-TRUNCATE-DROP-%EC%B0%A8%EC%9D%B4%EC%A0%90
DISTINCT란 중복제거 키워드입니다. SELECT로 DB에서 컬럼을 조회할 때, 중복되는 값을 제거하고 조회할 때 사용합니다. 즉, DISTINCT 키워드를 붙인 필드(컬럼)는 중복 값을 합쳐 한 번만 출력합니다.
출처 : https://bio-info.tistory.com/110
SQL Injection 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 입니다.
대응방안 : Error Message 노출 금지
출처 : https://noirstar.tistory.com/264
이 부분은 추가적으로 더 공부가 필요할 것 같다.
이 부분은 추가적으로 더 공부가 필요할 것 같다.
훌륭한 글 감사드립니다.