본문 바로가기

개발자가 되기 까지48

SQL 안티패턴, SQL Injection 공격 SQL 안티패턴 1. 무단횡단(제이워크) 1개의 컬럼에 컴마 구분의 값을 넣으면 안된다. 검색하기 어렵다. 문자열 칼럼의 문자 수 제한이라는 암묵적 제약을 받는다. validation을 걸기 어렵다. 해결방법은 교차 테이블을 생성하는 것 2. 순진한 트리 트리형태의 계층 구조를 1개의 테이블로 표현하면 안된다. 그 이유는 다음과 같다. 계층 구조가 깊어지면 그만큼 SQL을 써야한다. 노드를 삭제하기 어려워진다. 해결방법은 대체 트리 모델을 사용하는 것이다. 3. 아이디가 필요해 모든 테이블에 id를 만드는 것을 만들 필요없다. 그 이유는 다음과 같다. 장황해질 가능성이 있다. 아무 생각없이 id 칼럼을 만들면 논리적 일관성 문제가 생길 수 있다. 시퀀스로 생성된 id == 주키가 아니다. 해결책은 다음과.. 2023. 9. 21.
JOIN 과 서브쿼리, 데이터 삭제 쿼리 종류, DISTINCT JOIN 데이터베이스에서 데이터는 다수의 테이블에 나뉘어 저장되어 있습니다. 데이터의 중복을 제거하고 무결성을 보장하기 위해서 데이터 성격에 따라 분류하여 테이블에 저장을 하는 겁니다. 이렇게 테이블별로 분리되어 있는 데이터를 연결하여 하나의 결과 데이터 셋으로 출력해야 할 때가 반드시 존재합니다. 이럴때 사용하는 것이 조인(Join)입니다. 1. INNER JOIN Inner join은 교집합( A ∩ B ) 연산과 같습니다. 조인 키 컬럼 값이 양쪽 테이블 데이터 집합에서 공통적으로 존재하는 데이터만 조인해서 결과 데이터 집합으로 추출하게 됩니다. 2. OUTER JOIN OUTER JOIN은 조인하는 여러테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의.. 2023. 9. 21.
VIEW 와 SELECT 실행 순서 VIEW 뷰 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블이다. - 기본 테이블은 디스크에 공간이 할당되어 데이터를 저장함 - 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장되어 디스크 저장 공간 할당이 이루어지지 않음. - 전체 데이터 중에서 일부만 접근할 수 있도록 함 - 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용됨 - 뷰를 정의한 기본 테이블에서 정의된 무결성 제약조건은 그대로 유지됨 뷰는 왜 필요한가? - 사용자 마다 특정 객체만 조회할 수 있도록 할 필요가 있음 (모든 직원에 대한 정보를 모든 사원이 볼 수 있도록 하면 안 됨) - 복잡한 질의문을 단순화 할 수 있음 - 데이터의 중복성을 최소화할 수 있음 장점 - 논리적 독립성을 제공함 - 데이터의 접근.. 2023. 9. 21.
SQL SQL 이란? - SQL은 DBMS에 데이터를 구축, 관리하고 활용하기 위해서 사용되는 언어가 'SQL' 이다. - SQL은 데이터베이스 용 프로그래밍 언어이다. - SQL은 구조화된 쿼리 언어이며, 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다. 쿼리(query)란 무엇일까? - 쿼리는 질의문 이라는 뜻을 가지고 있습니다. 예를 들어 검색할 때 입력하는 명령하는 단어가 일종의 쿼리이다. - 검색을 진행하면서 기존에 존재하는 데이터를 바탕으로 명령한 검색어로 필터링을 진행한다. 프로그래밍 언어와 차이점 - 프로그래밍 언어는 배열에 저장된 전체 data를 요청하기 위해서 해당 배열이 저장된 경로를 지정하고, 반복문으로 각 요소의 data를 호출한다 - SQL은 데이터베이스 table.. 2023. 9. 21.