프로그래밍/SQL

SQL-2) Query

LeeSeunghyuk 2020. 10. 19. 15:48
반응형

안녕하세요 이승혁입니다.

지난 포스팅에는 오라클 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;

ename은 사원이름으로, sal은 월급으로 출력된다.

    ex)

select ename as "Employee",sal as "Salary"
from emp;

ename은 Employee로, sal은 Salary로 대소문자가 구분되어  출력된다.

위의 예시처럼 기존 칼럼이 아닌 따로 작성한 단어로 나오는 문법을 컬럼 별칭이라고 한다.

 

※  distinct

       중복된 키워드를 제거하는 문법

연결 연산자 ||

       두 개의 칼럼의 데이터를 서로 연결해서 출력할 때 사용하는 키워드

SQL > set pages 400

       한 페이지의 크기를 400으로 설정 -> 가독성

SQL > /

       바로 이전에 실행 한 SQL을 재 실행

 


 

■ SQL 실습 

 

1. 실습에 사용할 데이터 만들기

 

emp_table.txt
0.00MB

 

 

아래 내용을 메모장으로 저장한 파일입니다.

복사 하신 후 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;

커미션 값이 null인 곳은 0이 아닌 아무것도 표시되지 않는다.

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