안녕하세요 이승혁입니다.
지난 포스팅에는 오라클 DB를 설치했습니다.
이번 포스팅은 오라클 DB에서 간단한 SQL을 실습해 보겠습니다.
※ 오라클 데이터 베이스에 접속하는 방법
윈도우 검색창에 cmd 검색
명령 프롬프트프로그램을 관리자 권한으로 실행
명령 프롬프트 명령창에 명령어 sqlplus "/as sysdba"를 검색해 접속
유저 확인 명령어 show user 사용해 접속 유저 확인
실습 계정인 'scott' 계정을 생성
CREATE USER scott
IDENTIFIED BY tiger;
권한 부여 명령어 grant dba to scott 사용해 권한 부여
종료 명령어 exit 사용해 프롬프트 종료
유저 확인 명령어를 통해 권한이 부여된 새로운 계정으로 재시작
※ SQL ?
Structure Query Language (구조적 질의 언어)
데이터를 검색하고 조작하는 언어
데이터 분석가의 가장 필수 기술
※ SQL의 종류
1. Query : SELECT 문의 6가지 절, 조인, 서브쿼리
2. DML (Data Manipulation Language) : insert, update, delete, merge
3. DDL (Data Definition Language) : create, alter, drop, truncate, rename
4. DCL (Data Control Language) : grante, revoke
5. TCL (Transaction Control Language) : Commit, rollback, savepoint
■ Query 문
select ename,sal # select -> SQL, ename&sal -> 컬럼명
from emp; # from -> SQL , emp -> 테이블명
세미콜론(;) : SQL문 종료, 앞의 문장 실행을 요청
※ null 값 : 1. 데이터가 없는 상태 ( 값이 0이 아닌 아예 존재하지 않는 무(無)를 의미합니다. )
2. 알 수 없는 값
※ null 값을 처리하는 함수 -> nvl 함수 , nvl(column,number)
※ 컬럼 명 작성 시 더블 쿼테이션 마크(")를 사용하는 경우
1. 공백 문자 를 컬럼으로 출력하고자 할 때
2. 특수 문자 : $,_ 를 컬럼으로 출력하고자 할 때
3. 대소문자를 구분하여 별칭으로 출력하고자 할 때
ex)
select ename as "사원 이름",sal as 월급
from emp;
ex)
select ename as "Employee",sal as "Salary"
from emp;
위의 예시처럼 기존 칼럼이 아닌 따로 작성한 단어로 나오는 문법을 컬럼 별칭이라고 한다.
※ distinct
중복된 키워드를 제거하는 문법
※ 연결 연산자 ||
두 개의 칼럼의 데이터를 서로 연결해서 출력할 때 사용하는 키워드
※ SQL > set pages 400
한 페이지의 크기를 400으로 설정 -> 가독성
※ SQL > /
바로 이전에 실행 한 SQL을 재 실행
■ SQL 실습
1. 실습에 사용할 데이터 만들기
아래 내용을 메모장으로 저장한 파일입니다.
복사 하신 후 cmd 창 내에 마우스 우클릭 하시면 정상적으로 테이블이 생성됩니다.
alter session set nls_Date_format='RR/MM/DD';
drop table emp;
drop table dept;
CREATE TABLE DEPT
(DEPTNO number(10),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
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 (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'81-02-11',1600,300,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;
@
2. emp 테이블의 컬럼 조회하기
describe emp
EMPNO : 사원 번호
ENAME : 사원 이름
JOB : 직업
MGR : 관리자의 사원 번호
HIREDATE : 입사일
SAL : 월급
COMM : 커미션
DEPTNO : 부서번호
3. 이름, 월급, 부서번호 확인하기
select ename,sal,deptno
from emp;
4. 이름, 월급, 월급+커미션 확인하기
select ename,sal,sal+comm
from emp;
5. 커미션이 null인 곳은 0으로 출력하기
select ename,sal,comm,nvl(comm,0)
from emp;
6. 중복 제거해보기
select job
from emp;
select distinct job
from emp;
7. 연결 연산자 사용하기
select ename||'의 직업은'||job||'입니다.'
from emp;
테이블의 구조 개념만 알고 있다면
직관적이고 쉽게 쿼리문을 작성할 수 있습니다.
다음 포스팅에서는 조금 더 다양한 쿼리 작성법에 대해 다루겠습니다.
읽어주셔서 감사합니다.
'프로그래밍 > SQL' 카테고리의 다른 글
SQL-9) group by, having , 함수(function) - 5 (0) | 2020.10.27 |
---|---|
SQL-8) 함수(function) - 4 (2) | 2020.10.26 |
SQL-7) 함수(function) - 3 (0) | 2020.10.25 |
SQL-6) 함수(function) - 2 (0) | 2020.10.23 |
SQL-5) SQL Developer install (0) | 2020.10.23 |
SQL-4) Order 절, 함수(function) (0) | 2020.10.22 |
SQL-3) Query 조건절 (0) | 2020.10.20 |
SQL-1) Oracle DB install (9) | 2020.10.19 |