본문 바로가기

전체 글

(62)
Oracle - 중복된 데이터가 2개 이상일 경우 다음과 같은 데이터가 있다. ID ENO NAME ---------- ---------- -------------------- 1 10 홍길동1 2 10 홍길동1 3 20 홍길동2 4 20 홍길동2 5 20 홍길동2 6 30 홍길동3 7 30 홍길동3 8 40 홍길동4 9 50 홍길동5 10 50 홍길동5 여기는 ENO와 NAME가 공통으로 중복되는 부분이 여러 개 있다. 이럴 경우 DISTINCT로 해도 중복된 부분은 삭제되지 않는다. 중복된 부분을 삭제하고 싶은데, 삭제할 부분을 우선 출력한다고 가정한다면 1. 남길 부분 출력 2. not으로 남기지 않을 부분 출력 이런 식으로 query를 짜야 한다고 느껴진다. 1. 남길 부분 출력 우린 가장 먼저 만들어진 데이터를 남길 생각이다. 즉, 중복되는 데..
Oracle - DML(데이터 조작: 추가·수정·삭제) 기존 테이블 복제 DEPT테이블 복사한 새 테이블 DEPT_TEMP을 만들려면 다음과 같다. CREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT; 테이블에 데이터 추가 시, INSERT문을 이용해 추가할 수 있다. Ex) 50번 부서번호, 부서 이름 DATABASE, 위치 SEOUL 추가 INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC) VALUES (50, 'DATABASE', 'SEOUL'); -- 열 지정 없이 추가. 순서대로 자동 지정해 추가함. INSERT INTO DEPT_TEMP VALUES (60, 'NETWORK', 'BUSAN'); -- NULL 값 지정해 추가. INSERT INTO DEPT_TEMP (DEPTNO, DNAME, ..
Oracle - SubQuery 데이터의 비교를 위해 사용한다. 비교 대상과 같은 자료형이여야 하기 때문에, Main Query의 WHERE COLUMN과 SELECT COLUMN은 같아야 한다. -- '가가'보다 월급이 많은 사람 출력 SELECT * FROM TAB01 WHERE SAL > (SELECT SAL FROM TAB01 WHERE NAME='가가'); -- 평균 월급보다 더 많이 받는 사람 출력 SELECT * FROM TAB01 WHERE SAL > (SELECT AVG(SAL) FROM TAB01); -- 서울에 일하지 않는 직원 출력. '가가'는 직장이 서울이다. SELECT * FROM TAB01 WHERE LOC != (SELECT LOC FROM TAB01 WHERE NAME='가가'); -- '가가'와 동일한..
Oracle - join join은 다음과 같이 분류한다. 1. 내부 join(=등가, equi join) (inner join) 1) 자연 join 2) on join 3) using join - 비등가(not equi=on, using) join 2. 외부 join (outer join) 3. 교차 join (cross join) 4. 셀프 join (self join) etc. semi join, anti join ...... @@@(다 알아야 하나..) 하지만, 대부분 우리가 쓰는 join은 equi join에서 대부분 사용한다. cross join(실제 테이블에서는 이렇게 하면 위험함!) --TSQL JOIN SELECT * FROM TAB01, TAB02; --또는(ANSI JOIN), 권장하는 방식 SELECT * ..
Oracle EMP Table 예시 책이나 페이지를 보면, 항상 EMP 테이블을 기준으로 설명하는 경우가 많다. 어디서 가져왔는지 설명도 안 하고 막막했는데, 구글링해서 찾으니 자료가 많았다. ORACLE DB 공부 할 때 이거 복붙하고 시작하면 된다. CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2), COMM NUMBER(7, 2), DEPTNO NUMBER(2)); INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, TO_DATE('17-12-1980', 'DD-MM-YYYY'), 800, NULL, 20); IN..
Oracle 기본 Query문 4 위치를 지정해 반올림하는 round, 지정한 위치에서 버림을 하는 trim, 지정한 숫자에서 올림을 하는 ceil, 버림을 하는 floor, 나머지 값을 구하는 mod select round(1234.4), -- 1234 round(1234.5), -- 1235 round(1234.5678, 2), -- 1234.57 round(1234,-1), -- 1230 round(1235,-1), -- 1240 trunc(1234.4), -- 12324 trunc(1234.5), -- 1234 trunc(1234.5678, 2), -- 1234.56 trunc(1234,-1), -- 1230 trunc(1235,-1) -- 1230 from dual; select ceil(3.14), -- 4 floor (3.1..
Oracle 기본 Query문 3 추천하는 Oracle버전은 18 또는 12g로 가보자. 18c에선 기존 접속 방식과 다르게 해야 함. 18c부터는 Uninstall 가능!! query에 해당하는 field만 출력되도록 조건문을 추가할 수 있다. 가독성을 위해, 줄바꿈은 다음과 같이 하는 것이 관례이다. --방법 6가지 select * from work where salary>=120; select * from work where salary= 1000 ); 다음 순서대로 작성한다. select -- 여기에서 as 이용한 별칭(aliasing) 만들 시, group by부터 인식 가능 -- group by 뒤에 만들어야 한다! from where group by having order by --틀린 query select salary*1..
Oracle 기본 Query문 2 -- 주석 처리 F5 실행 Table 생성 (varchar2가 최신 버전이어서 주로 사용하는 추세임) create table 이름(주로 소문자 사용)( ID number, NAME varchar2(20) ); 테이블 확인 및 선택 select * from 테이블이름; 선택적으로 field명만 지시해 해당 column만 확인하고 싶을 시 select field이름 from 테이블이름; 테이블의 column 갯수를 확인하고 싶을 시, select count (*) from tab01; 중복된 것 제외할 시 select count (distinct name) from tab01; 각 field에 별칭을 추가(aliasing)하기 위해 쓰는 방법 select id as 아이디, name as “이 름”, sal..