[DB] select 예제, golden tool 사용법, 문자열 연산자, drop, sqlldr(sqlloader)의 사용

*select

- 문법

select 컬럼명,,,

from테이블명

where 조건문

- where절

- 조건에 맞는 행만 가져온다.

- 연산자 : 관계, 논리, 문자열,...

더보기

------------------------------------------------------------

-- select where 사용 : 조건에 맞는 행만 삭제

------------------------------------------------------------

 

-- emp 테이블에서 부서번호가 10번인 부서의 사원명, 사훤번호. 입사일, 연봉, 부서번호를 조회하라ㅏ

SELECT ENAME, EMPNO, HIREDATE, SAL, DEPTNO

 

FROM EMP

WHERE DEPTNO=10;

 

-- emp테이블에서 연봉이 3000 미만인 사원번호, 사원명, 매니저번호, 연봉을 조회하라.

SELECT EMPNO, ENAME, MGR, SAL

FROM EMP

WHERE SAL<3000;

 

-- 연봉이 1000~3000 사이인 사원들의 사원번호, 사원명, 직무, 연봉, 보너스를 조회

-- 사이는  and, between로 조회

SELECT EMPNO, ENAME, JOB, SAL, COMM

FROM EMP

 

WHERE SAL between 1000 and 3000;

--WHERE SAL>1000 and SAL<3000;

 

-- 부서번호가 10과 30인 부서의 사우너버놓, 사원명, 매니저번호, 연봉, 입사일, 부서번호를 조회

-- or는 in으로 대체 사용 가능 <=> not in

SELECT EMPNO, ENAME, MGR, SAL, HIREDATE

FROM EMP

where deptno in(10,30);

-- WHERE DEPTNO=10 or DEPTNO=30;

 

 

*golden tool 사용법

F9 - SQL Builder

F5 - tab에 있는 모든 쿼리 실행

crtl+enter - 직전 ';'부터 다음 ';'까지의 쿼리 실행

 

 

*문자열 연산자

LIKE : 특수문자(%,_)와 함께 사용하면 완벽하게 일치하는 문자열 이외에 특정문자로 시작, 끝, 포함하는 것을 검색할 수 있다.

└ % : 모든 글자(글자 수 상관 X)

└ _ : 한 글자 수 지정

ex) '서울시'에 살고있는 주소를 검색하라

select addr

fromtest

where addr like  '서울시%'

ex) '구'로 끝나는 주소를 검색하라

where addr like '%구'

ex) 강남구를 포함하고 있는 주소를 검색하라

where addr like '%강남구%'

ex) 이름이 4자이면서 '우'로 끝나는 이름을 조회하여라

where name like '___우'

ex) 이름이 3자이고 중간글자에 ''경'이 들어간 이름을 조회하라

where name like '_우_'

더보기
-------------------------------------------------------------- 문자열------------------------------------------------------------
-- null 비교(관계 연산자로 비교 불가능)-- 보너스가 없는 사원들의 사원명, 직무, 연봉, 보너스 조회SELECT ENAME, JOB, COMMFROM EMPWHERE COMM is null;-- <=> WHERE COMM is not null;

-- like ----------------------------------------------------
-- 사원명이 'A'로 시작하는 사원의 사원명, 직무, 관리 매니저 번호를 조회하라SELECT ENAME, JOB, MGRFROM EMPWHERE ENAME like 'A%';
-- 사원명이 'S'로 끝나는 사원의 사원명, 직무를 조회하라SELECT ENAME, JOBFROM EMPWHERE ENAME like '%S';
-- 사원명이 'A'를 포함하고 있는 사원의 사원명, 매니저번호, 입사일을 조회하라SELECT ENAME, MGR, HIREDATEFROM EMPWHERE ENAME like '%A%';
-- 사원명이 4글자인 사원의 사원명을 조회하라SELECT ENAMEFROM EMPWHERE ENAME like '____';
-- 사원명이 5자이면서 3번째 글자가 'A'인 사원명을 조회하라SELECT ENAMEFROM EMPWHERE ENAME like '__A__';
-- 사원명에 'L'이 두개 들어있는 사원의 사원명을 조회하라SELECT ENAMEFROM EMPWHERE ENAME like '%L%L%';

 

 

*Drop

- 문법

drop 대상 '삭제하고자 하는 대상 명';

- DB에서 삭제할 때 사용한다. 대상은 테이블, sequence, index, 계정 등이 될 수 있다.

- Oracle 10g부터는 삭제된 테이블이 휴지통으로 들어간다. 복구가 가능하다. 이전 버전들은 바로 삭제되어 복구가 불가능하다.

*휴지통

- 휴지통 보기 : show recyclebin

- 휴지통 비우기 : purge recyclebin

- 휴지통에 있는 테이블 복구 : flashback table 복구할 테이블명 to before drop;

더보기
-------------------------------------------------------------- 테이블 삭제------------------------------------------------------------drop table student;

-- 휴지통 보기(sqlplus 문장이므로 지원하지 않는다.)-- show recyclebin;
-- 휴지통의 테이블 살리기flashback table student to before drop;
-- 휴지통 비우기purge recyclebin;

 

 

 

*sqlldr(sqlloader)의 사용

- 많은 양의 데이터를 손쉽게 추가할 때 사용한다.

- csv(comma separator value : ','로 구분된 값) file을 주로 사용한다.

- oracle 설치 시 자동으로 들어간다.

- [sqlldr.exe -> Schema file(.CTL file : 어떤 테이블에 어떤 데이터를 연결할 것인가를 정의한 파일이다.) -> data file(.CSV)] -> DBMS(table space)

- DOS >> sqlldr userid="id/pw" control="ctl 파일 위치"

더보기
-------------------------------------------------------------- sqlldr의 사용 : 많은 양의 레코드 쉽게 넣기-------------------------------------------------------------- 1. 테이블 생성CREATE TABLE ZIPCODE( ZIPCODE CHAR(7 BYTE), SIDO CHAR(6 BYTE), GUGUN VARCHAR2(25 BYTE), DONG VARCHAR2(77 BYTE), BUNJI VARCHAR2(25 BYTE), SEQ NUMBER(5));
DESC ZIPCODE;
-- 2. CSV파일 생성
-- 3. CTL파일 편집(app 폴더에서 .ctl검색 후 LoadClobs.ctl 복사 후 사용)-- (CTL파일의 INFILE:경로, INTO TABLE:테이블명, FIELDS TERMINATED BY '@':@ separator, ():column명, 기타 나머지는 모두 삭제)/*LOAD DATAINFILE '파일명.csv'INTO TABLE 테이블명INSERTFIELDS TERMINATED BY '구분자'(컬럼명,,,,,,)*/
-- 4. 실행 : prompt >> sqlldr userid=id/pw control='ctl파일명'
truncate table zipcode;
-- golden tool 사용시 : menu - tools - data import/export... - import to oracle - source file(.csv)/destination table(table)
select count(*) from zipcode;