Written by
최태열
on
on
Oracle DB 1
기본
SQL 데이터 형식
문자열 : java(String), DB(varchar2, char)
정수 : java(int), DB(number(정수자릿수))
실수 : java(double), DB(number(소수점포함 전체자릿수, 소수점 이하 자릿수))
ex ) number(5,2) → 정수 3자리 소수 2자리
날짜 : DATE
CLI(Command Line Interface)에서의 SQL
-
sql 접속 방법
sqlplus 아이디/비밀번호 (system/manager)
-
다른 sql 파일에 접근해서 사용하는 법
@C: + 해당 sql 파일 드래그
connect 아이디/비밀번호 : 해당 파일의 아이디와 비밀번호로 접근
- 기본 명령어
purge recyclebin; -- 불필요한 table 삭제
desc emp; -- emp table의 column명과 데이터 타입을 확인하는 명령어
set linesize 200 - 200으로 줄 크기 변경
set pagesize 200 - 200으로 페이지 크기 변경
select 5*3 from dual -- 연산같은 기본적인걸 해볼 수 있는 더미 테이블
- select 명령어
select * from tab; -- 해당 계정의 모든 table 목록 검색
select * from emp; -- emp table의 모든 정보 검색
select empno, ename from emp; -- emp table에서 empno, ename column 검색
select empno as 이름, sal*12 as 연봉 from emp;
-- emp table에서 empno를 이름으로, sal*12를 연봉으로 가져옴
- 중복 데이터 제거 /. 정렬
select distinct deptno from emp; -- deptno 에서 중복 삭제해서 가져옴
select deptno from emp
order by deptno asc; -- 오름차순으로 정렬
select deptno from emp
order by ename desc; -- ename의 오름차순으로 deptno 정렬
select empno, deptno from emp
order by deptno asc, ename asc; -- 정렬 우선순위 deptno -> ename
- null 값 변경
select sal, nvl(comm,0) from emp; -- comm의 null을 0으로 변경
- 조건식
select deptno, ename
from emp
where comm is not null; -- comm이 null이 아닌 값들만 가져옴
select deptno, ename
from emp
where comm is null; -- comm이 null인 값들만 가져옴 (null은 = 안됨)
-- 실행 순서 : from -> where -> select
select sal
from emp
where deptno=20
order by sal desc;
-- 실행 순서 : from -> where -> order ->select
-- emp 에서 deptno가 20인것을 sal을 기준으로 내림차순으로 정렬한 sal을 가져와라
where deptno= 10 and job='MANAGER';
where deptno >= 10 or job = 'MANAGER';
where deptno != 10;
where deptno <> 10;
where not deptno = 10;
-- 아니다를 뜻하는 연산자 !=, <>, not
where comm in (300, 500, 1400);
-- 포함
where ename like 'M%' -- M으로 시작하는 모든 글자
where ename like '%M%' -- M이 포함된
where ename like 'M_' -- M으로 시작하는 2글자
where hiredate between '81/01/01' and '81/12/31';
-- 81년도에 입사한 사람들
where sale between 0 and 10000;
-- 봉급이 0~ 10000인 사람
where ename between 'A%' and 'B%';
-- 이름의 초성이 A~C 인 사람
- 이중 SELECT
select ename from(
select ename from emp
where comm is null
order by sal desc
)
where rownum = 1;
-- 내부 select : emp에서 comm이 null인 것들을 sal을 기준으로
--내림차순으로 정렬하여 해당 ename을 가져옴
-- 외부 select : 내부에서 가져온 ename 에서 rownum이 1인 ename
Discussion and feedback