SQL

Study/SQL

[MySQL/ORACLE] 프로그래머스 - NULL 처리하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) ..

Study/SQL

[MySQL/ORACLE] 프로그래머스 - 조건에 맞는 회원수 구하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다. Column name Type Nullable USER_ID INTEGER FALSE GENDER TINYINT(1) TRUE AGE INTEGER TRUE JOINED DATE FALSE 문제 USER_INFO 테이블에서 2021년에 가입한 회원 중 나..

Study/SQL

[SQL] SQL로 알고리즘 문제 풀기 - 숫자 계산1(합, 곱, 짝수/홀수, 소수)

1. 1부터 10까지 숫자의 합 UNDEFINE N ACCEPT N PROMT SELECT SUM(LEVEL) AS 합계 FROM DUAL CONNECT BY LEVEL

Study/SQL

[SQL] 데이터 복구하기 - FLASHBACK QUERY

FLASHBACK QUERY 백업을 복구하지 않고 과거 시점의 데이터를 조회할 때 FLASHBACK QUERY를 사용한다. FLASHBACK은 최대 15분 전의 데이터를 조회할 수 있다. -- 테이블의 N분전 데이터 검색 SELECT * FROM TABLE_NAME AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL 'N' MINUTE) EX ) 사원 테이블의 5분 전 KING 데이터 -- KING의 현재 월급 조회 SELECT * FROM EMP WHERE ENAME = 'KING'; -- KING의 월급을 0으로 변경한다. UPDATE EMP SET SAL = 0 WHERE ENAME = 'KING'; COMMIT; SELECT * FROM EMP AS OF TIMESTAMP (..

Study/SQL

[SQL] WITH절 사용하기

1. WITH ~ AS 동일한 SQL이 반복되어 사용될 때 성능을 높이기 위해 WITH절을 사용한다. WITH TABLE_NAME AS () SELECT COL1, COL2, ... FROM TABLE_NAME ... 검색 시간이 오래걸리는 SQL이 하나의 SQL 내에서 반복되어 사용될 때 성능을 높이기 위한 방법으로 WITH절을 사용한다. WITH절 이후에 테이블 이름을 지정하고, AS 이후에 임시 저장영역(Temporary Tablespace)을 정의 해 저장한다 EX ) 직업과 직업별 토탈 월급을 출력하는데 직업별 토탈 월급들의 평균값보다 더 큰 값만 출력 -- WITH절 없이 조회 SELECT JOB, SUM(SAL) AS 월급총합 FROM EMP GROUP BY JOB HAVING SAL > (..

Study/SQL

[SQL] 임시테이블 생성, 쿼리 단순화, 검색속도 향상, 중복되지 않는 번호 - CREATE TEMPORARY TABLE, VIEW, INDEX, SEQUENE

임시테이블 생성하기 - CREATE TEMPORARY TABLE 데이터를 임시로 보관하는 임시 테이블을 생성할 때 CREATE TEMPORARY TABLE문을 사용한다. CREATE GLOBAL TEMPORARY TABLE 테이블명 (COL1 DATATYPE, COL2 DATATYPE, ...) ON COMMIT DELETE ROWS / ON COMMIT PRESERVE ROWS; 임시 테이블 생성임을 나타내기 위해 CREATE와 TABLE 사이에 GLOBAL TEMPORARY를 기술한다. 임시 테이블은 데이터를 영구 저장하지 않는다. 데이터를 보관하는 주기를 결정하는 옵션을 기술한다. ON COMMIT DELETE ROWS : 임시 테이블에 데이터를 입력하고 COMMIT할 때까지 데이터를 보관 ON C..

Study/SQL

[SQL]계층형 질의문으로 서열을 주고 데이터 출력하기

1. 계층 순서로 출력하기 계층형 질의문(Hierachical Query)를 사용해 데이터를 선택하여 계층 순서로 결과를 출력한다. 계층형 질의문에서 쓰이는 용어 용어 설명 노드(node) 표시된 항목 레벨(level) 트리(tree) 구조에서 각각의 계층 루트(root) 트리(tree) 구조에서 최상위에 있는 노드 부모(parent) 트리(tree) 구조에서 상위에 있는 노드 자식(child) 트리(tree) 구조에서 하위에 있는 노드 계층형 질의문 형식 예시 SELECT LEVEL, COL1, COL2, ... FROM TABLE_NAME START WITH ROOT_NODE CONNECT BY PRIOR PARENT_NODE = CHILD_NODE 계층형 질의문의 키워드인 CONNECT BY와 ST..

Study/SQL

[SQL] 서브쿼리를 사용해 데이터 입력, 수정, 삭제하기

1. 데이터 입력하기 INSERT () VALUES () 에서 VALUES절을 제외하고 서브쿼리를 사용하면 여러 개의 행을 한 번에 테이블에 입력할 수 있다. EX ) EMP 테이블의 구조를 그대로 복제한 EMP2테이블에 부서 번호가 10번인 사원들의 사원 번호, 이름, 월급, 부서 번호를 한번에 입력하라 -- EMP2 테이블 생성 (EMP 테이블 구조 복사) CREATE TABLE EMP2 AS SELECT * FROM EMP WHERE 1 = 2; INSERT INTO EMP2(EMPNO, ENAME, SAL, DEPTNO) SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10; VALUES절에 VALUES 대신 입력하고자 하는 서브쿼리문을 기술한..

Study/SQL

[SQL]데이터 입력, 수정, 삭제 - INSERT, UPDATE, DELETE, TRUNCATE, DROP

1. 데이터 입력하기 - INSERT 테이블에 새로운 데이터를 입력할 때 INSERT문을 사용한다. INSERT INTO 테이블명 (col1, col2, col3, ...) VALUES (value1, value2, value3, ...) INSERT INTO 테이블명 (value1, value2, value3, ...) INSERT문을 사용할때 INSERT INTO 다음 테이블명을 입력하고, 괄호안에 데이터를 컬럼명 순서대로 기술한다. 만약 괄호를 쓰지 않으면 전체 컬럼에 모두 데이터를 입력해야 한다. 이때 숫자는 그대로 기술해도 되지만 문자와 날짜는 작은 따옴표로 감싸줘야한다. EX ) 사원 번호 2812, 사원 이름 JACK, 월급 3500, 입사일 2019년 6월 5일, 직업 ANALYST인 사원..

Study/SQL

[SQL] 서브 쿼리 사용하기 1 - 단일 행, 다중 행

1. 단일행 서브쿼리 특정 쿼리에서 검색한 값을 다른 쿼리에서 받아 검색하려면 서브 쿼리를 사용해야 한다. EX ) JONES 보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하라 JONES 보다 더 많은 월급을 받는 사원의 정보를 조회하기 위해서는 JONES의 월급을 알아야 한다. -- JONES의 월급 SELECT SAL FROM EMP WHERE ENAME = 'JONES'; JONES의 월급을 검색한 결과, 2975임을 알 수 있다. 이를 바탕으로 위의 문제를 해결할 수 있다. -- JONES 보다 더 많은 월급을 받는 사원 SELECT ENAME, SAL FROM EMP WHERE SAL > 2975; 여기서 위의 쿼리에서 2975라는 값은 첫번째 검색했던 JONES의 월급을 검색하는 쿼리..

truthyun
'SQL' 태그의 글 목록