SQL developer 설치 후 scott, hr, system계정 등록 완료.

 

System 계정은 관리를 위한 계정이고, 사용자의 실습을 위한 계정인 hr, scott이 있다.

scott계정으로 실습을 쭉 진행할 예정.

 

계정에 실습을 위한 기본 테이블이 4개가 생성되어 있다.

BONUS, DEPT, EMP, SALGRADE

 

 

 

계정에 생성되어 있는 테이블의 목록을 확인하기 위한 명령어

select * from sys.tab; 축약해서 select * from tab;
이것을 더 많이 쓴다.

기본 제공 4개 이외에는 수업에서 자바-오라클 연동으로 내가 생성했었던 테이블



테이블 구조 확인
describe 테이블이름; 를 축약해서 desc 테이블이름;

둘 다 같은 값이 출력된다.



select * from 테이블명;

여기서 '*' 는 모든 컬럼이라는 뜻

select * from dept;는 dept 테이블의 모든 컬럼의 데이터를 출력한다.

 


desc로 emp의 구조를 확인해본다.

 



emp 테이블의 데이터를 선별해서 출력할 수도 있다.

 

select 원하는1번째컬럼, 원하는2번째컬럼, ...  from 테이블명;

 

 



number 타입에 한해 연산이 가능하다.

 

select ename, sal * 12 from emp;
select ename, sal+comm from emp;
select ename, sal-100 from emp;
select ename, sal/100 from emp;

 

응용하여 (sal*12)+comm을 더하여 1년 연봉을 계산해본다.

그런데 comm 컬럼은 일부 사원에게만 지급되고 대부분 null, 즉 값이 없다. (0과 다르다. 아예 값이 없다)

Null 이란? 
1. 정해지지 않은 값을 의미
2. 산술 연산을 할 수 없다.

 

그래서 그냥 계산을 하면 다음과 같은 값이 나온다.

 

select ename, sal, comm, sal*12, (sal*12)+comm from emp;

 

 

 

이 때에는 null 값을 연산이 가능한 상태인 0으로 치환한다.

 

select ename, sal, comm, sal*12, (sal*12)+nvl(comm, 0) from emp;

 

이때, 연봉 계산 컬럼을 보면 (SAL*12)+NVL(COMM,0) 이라고 입력한 SQL문이 그대로 컬럼명이 된 것을 볼 수 있다.

as "컬럼이름" 을 이용하면 원하는 이름으로 지정할 수 있다.

as와 "" 는 생략 가능하지만, 컬럼명에 띄어쓰기를 하면 오류가 생긴다.

 

select ename 사원, sal as "월 기본급", comm 커미션, sal*12 as "월 기본급+커미션", sal*12+nvl(comm, 0) 연봉 from emp;

 

조금 복잡한 듯 해서 보기 쉽게 구분을 해 보았다.

띄어쓰기를 하여 오류가 발생할 수 있는 컬럼에만 as ""를 붙였다.

 

select 

             ename 사원,

             sal as "월 기본급",

             comm 커미션,

             sal*12 as "월 기본급+커미션",

             sal*12+nvl(comm, 0) 연봉

from emp;

 

 

 



Distinct는 중복값을 제거한다.

 

select deptno from emp;         ->       select distinct deptno from emp;

 

emp테이블의 deptno 컬럼의 중복값을 제거하여 출력.

 

count를 이용하면 개수를 출력할 수 있다.

 

select count(*) from 테이블명;

 

* -> 다음과 같은 SQL문을 쓰면 emp 테이블의 모든 레코드 개수를 구할 수 있다.

 

select count(*) from emp;

 

 

 

select job from emp; -> emp의 job 컬럼의 전체 데이터

select count(job) from emp; -> emp의 job 컬럼의 데이터 개수

 

 

 

이 때, distinct와 함께 사용하면

job에서 중복되는 값을 제거하여 개수를 출력할 수도 있다.

 

 

 

select distinct job from emp; -> emp 테이블의 job 컬럼에서 중복되는 데이터를 제거하여 출력

select count(distinct job) from emp; -> emp 테이블의 job 컬럼에서 중복되는 데이터를 제거한 개수

 

+ Recent posts