SQL developer 설치 후 scott, hr, system계정 등록 완료.
System 계정은 관리를 위한 계정이고, 사용자의 실습을 위한 계정인 hr, scott이 있다.
scott계정으로 실습을 쭉 진행할 예정.
계정에 실습을 위한 기본 테이블이 4개가 생성되어 있다.
BONUS, DEPT, EMP, SALGRADE
계정에 생성되어 있는 테이블의 목록을 확인하기 위한 명령어로
select * from sys.tab; 축약해서 select * from tab;
이것을 더 많이 쓴다.
테이블 구조 확인
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 컬럼에서 중복되는 데이터를 제거한 개수
'오라클 데이터베이스' 카테고리의 다른 글
DQL> Select - 서브 쿼리 (0) | 2022.07.27 |
---|---|
DQL> Select - ANSI Join (Cross, Inner, Natural, Outer) (0) | 2022.07.25 |
DQL> Select - Join (0) | 2022.07.22 |
DQL> Select - Where 조건절, 비교 연산자, 논리 연산자, Between and, In, Like와 와일드카드, Null 연산을 위한 Nvl, Order by 절 (오름차순, 내림차순 정렬) (0) | 2022.07.20 |
테이블 생성, 값 입력, 수정, 삭제 (0) | 2022.07.14 |