본문 바로가기

SQL

(5)
[데이터 베이스] VIEW VIEW는 하나 이상의 테이블에서 가져온 데이터를 기반으로 하는 가상 테이블로 데이터베이스 내에서 실제로 데이터를 저장하지 않고 정의된 SELECT 문에 기반한 결과 세트를 제공한다. VIEW를 사용하면 복잡한 쿼리를 단순하게 표현할 수 있고, 데이터 접근을 제한하여 데이터를 쉽게 관리할 수 있다. VIEW를 사용하면 특정 열이나 행만을 노출시키고 나머지 데이터는 숨길 수 있어 사용자가 접근할 수 있는 데이터를 제한할 수 있다. 그리고 복잡한 쿼리를 VIEW로 정의해두면 쿼리를 직접 실행하지 않고 VIEW를 통해 필요한 데이터에 접근할 수 있고, 한 번 정의를 하면 데이터베이스 내에서 재사용될 수 있어 코드의 중복을 줄이고 일관성을 유지할 수 있다. 다만 VIEW가 하나 이상의 기반 테이블에 의존하기 때..
[데이터 베이스] GROUP BY GROUP BY 특정 열의 값에 기반하여 행들을 그룹화하는 데 사용된다. 이 기능은 COUNT, MAX, MIN, SUM, AVG등과 같은 집계 함수와 함께 사용되어 각 그룹에 대한 통계를 계산할 때 사용된다. GROUP BY는 Split-Apply-Combine전략으로 작동 한다. 이는 데이터 분석 과정을 잘 설명하는 개념으로 데이터를 그룹화하고 각 그룹에 대해 연산을 수행한 다음 결과를 결합하는 과정을 말한다. - Split 전체 데이터 세트를 작은 그룹으로 분할한다. 이 분할은 GROUP BY에 지정된 열의 고유값에 따라 이루어진다. 예를 들어 GROUP BY를 사용해 제품 ID별로 데이터를 그룹화하면, 각 제품 ID에 해당하는 행들이 하나의 그룹을 형성한다. - Apply 분할된 각 그룹에 대해 ..
[데이터 베이스] JOIN SQL에서 JOIN은 두 개 이상의 테이블에서 관련된 데이터를 결합하여 새로운 결과 세트를 생성하는 데 사용된다. INNER JOIN 가장 일반적인 유형의 JOIN으로, 두 테이블 모두에서 일치하는 행만 반환한다. SELECT orders.order_id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id; SELF JOIN 테이블이 자기 자신과 조인하는 경우를 말하는 것으로 테이블 내의 행들 사이의 관계를 탐색할 수 있도록 하는 기법이다. SELF JOIN을 사용하려면 같은 테이블을 구분하여 참조하기 위해 AS로 별칭을 사용하여 테이블 이름을 두 번 지정해야 한다. 실제 데이터가 아래와..
[데이터 베이스]날짜 추출하기 만약 현재 날짜를 출력하려면 아래와 같은 방식을 사용하면된다. SELECT NOW()::date; SELECT CURRENT_DATE; 이때 NOW()::date의 경우 현재의 정확한 날짜와 시간을 TIMESTAMP WITH TIME ZONE 형태로 반환하는데 ::date를 사용하여 NOW() 함수의 결과에서 시간 부분을 제거하고 날짜 부분만 추출한다. 즉, 현재 날짜와 시간 정보를 가져온 후 날짜에 해당하는 부분만 추출해서 가져오기 때문에 단순히 날짜만 필요한 경우는 CURRENT_DATE를 사용하는 것이 더 좋다. - TO_CHAR 함수 다양한 형식의 날짜가 필요한 경우 TO_CHAR함수를 이용할 수 있다. TO_CHAR함수는 여러 식별자에 해당하는 형식으로 날짜와 시간을 문자열로 변환하는 함수이다...
[데이터 베이스]SQL 기본 구문 SQL에서 가장 기본이 되는 구문은 SELECT와 FROM을 활용한 형태로 다음과 같다 SELECT column FROM table; SELECT * FROM school.student; 여기서 SELECT은 조회할 데이터의 열을 지정하고 FROM은 데이터를 조회할 테이블의 이름을 지정한다. 이때 column 부분에 *는 모든 열을 선택하라는 의미이고, 만약 특정 열만 선택하려면 열의 이름을 쉼표로 구분하여 나열해야한다. 그리고 스키마는 데이터베이스 구조를 정의하는데 테이블, 열, 데이터 타입, 관계 등을 포함한다. 위의 구문에서 school이 스키마에 해당하고 student는 해당 스키마에 있는 table을 의미한다. SELECT student_age AS "AGE" FROM school.student..