본문 바로가기

SQL31

oracle SQL - 다중 INSERT INSERT INTO table [(column, column...)] VALUES(data, data, data...); VALUES 절을 사용한 INSERT 다중행 INSERT 1. 기존 테이블에서 선택한 행을 대상 테이블의 행으로 추가 2. 한 번에 여러 행을 여러 테이블에 INSERT 할 수 있습니다. INSERT INTO emp300 (emp_id, emp_name, salary) SELECT emp_id, emp_name, salary, dept_id FROM y_emp WHERE dept_id = 200; y_emp 테이블에 부서 번호가 200번인 사원의 행에 emp_id, emp_name, salary 열을 emp300 테이블에 삽입합니다. 다중 테이블 INSERT 유형 - 무조건 INSE.. 2023. 5. 22.
oracle SQL - 다중 열 서브 쿼리 서브 쿼리의 반환 데이터가 두 개 이상의 열을 반환한다면 이를 다중 열 서브 쿼리라고 합니다. 열의 비교방식으로 두 가지가 있습니다. 1. 쌍 비교 방식, Pairwise 2. 비쌍 비교 방식, Non-Pairwise, Unpairwise 1. 쌍 비교 방식 비교할 열들을 괄호로 묶어서 동시에 비교합니다. SELECT 컬럼1, 컬럼2... FROM 테이블 WHERE (컬럼, 컬럼..) IN (SELECT 컬럼, 컬럼.. FROM 테이블 WHERE 조건); 이때! 비교 연산자 좌우에 있는 칼럼의 개수가 같아야 합니다. 예시) 2. 비쌍 비교 방식 n개의 열을 따로 비교하는 방식입니다. SELECT 컬럼1, 컬럼2... FROM 테이블 WHERE 컬럼 IN (SELECT 컬럼 FROM 테이블 WHERE 조건.. 2023. 5. 13.
oracle SQL - on Join (Non Equi, Self, 3 Way) 1. between 연산자를 사용하여 비등가 조인을 해보자참고로 비등가 조인에 대해서 간단히 말하자면 조인 조건에 equal 연산자가 아닌 다른 연산자를 사용하여 관계를 기술하는 조인입니다. y_emp 테이블에 salary 열과 pay_grade 테이블의 low_pay, high_pay 열을 between 연산자를 사용하여 비등가조인SELECT e.emp_name, e.salary, p.pay_level FROM y_emp e JOIN pay_grade p on e.salary BETWEEN p.low_pay AND p.high_pay; 3번 칼럼 pay_level을 출력할 때 조인 조건에 따라 다르게 출력됩니다. 2. Self JoinSelf Join이란 간단히 말하면 join 키워드 양쪽 테이블이 같.. 2023. 4. 25.
oracle SQL - 조인 개념 RDB는 중복을 최소화하고 갱신 작업의 이상현상을 제거하기 위해 DB설계 시 수행하는 과정을 정규화라고 합니다. 정규화는 관계형 데이터베이스 설계 과정 중 하나이며 마지막 검증단계에서 정규화가 필요하면 정규화합니다. 정규화를 거치면 테이블에는 필요한 최소한의 정보를 저장하게 되어 나중에 필요한 정보를 보고자 할 때 여러 테이블의 데이터를 가져와야 하는 경우 조인이 필요합니다. 조인 종류 조인되는 두 테이블의 연관된 데이터의 비교 등가 조인, Equi Join 단순 조인 또는 inner join 기본키와 외래키 관계에 있는 두 테이블 간에 자주 사용 natural join, using() 절을 사용하는 조인은 등가 조인만 가능 두 테이블에서 연관 있는 데이터에 대하여 동등비교를 수행 비등가 조인, Non .. 2023. 4. 25.
oracle SQL - 데이터 유형의 변환 (TO_DATE()) TO_DATE()함수는 where 절에서 자주 사용된다. 다음과 같은 경우를 보자 비교 연산자 왼쪽 birthdate 칼럼의 데이터 유형은 DATE이다. 비교 연산자 우측에 있는 문자는 보기엔 날짜이지만, 데이터 타입은 문자이다. 비교 연산자 우측 문자를 날짜 타입으로 바꾸기 위해 TO_DATE()함수를 사용한다. TO_DATE(01-01-92, 'dd-mm-yy')로 입력하면 아무 결과가 나오지 않는다. 오라클에서 yy는 무조건 현재 세기를 기준으로 검색하기 때문에 2092년생을 찾으려니 나오지 않는 것이다. 해결방법으론 yy 대신 rr을 사용하면 된다. rr은 년도를 두 자리로 표현하고 싶을 때 2000년 기준 50 ~ 99는 이전 세기로, 00 ~ 49는 현재 세기로 검색한다. 2023. 3. 28.
oracle SQL - 데이터 유형의 변환 (TO_NUMBER()) TO_NUMBER() 함수는 다음과 같은 쿼리 실행 시 사용한다. SELECT dept_id, emp_name from y_emp where salary * 12 > '10,000'; 원래 콤마가 없다면 암시적 데이터 유형 변환으로 알아서 형변환 되지만, 위 같은 경우는 아래와 같이 TO_NUMBER() 함수를 사용하여 문자를 숫자로 바꾸어 주어야 한다. select dept_id, emp_name from y_emp where salary * 12 > TO_NUMBER('10,000', '99,999'); 2023. 3. 28.