본문 바로가기

Programming/국비학원

220829 - 데이터베이스 - SQL PLUS (오라클) - 데이터 질의어

데이터베이스 언어

1. 질의어 (DQL: Data Query Language)
SELECT  =>DML에도 포함됨
=> 데이터 검색

2. 데이터 조작어 (DML : Data Manipulation Lang) 
SELECT, INSERT, UPDATE, DELETE 
=> 데이터 입력, 수정, 삭제

3. 데이터 정의어 (DDL : Data Definition Lang)
CREATE, ALTER, DROP 
=> 테이블  생성, 변경, 삭제

 

 

파일 =엔터티 =테이블
레코드 =튜플 =행(row)  //자료
키 =유일값 =기본키
필드 =속성(attribute) =열(column)  //항목

 

 

 

 

DQL
  • SELECT :  테이블 내 검색 (데이터 조회)
  •  

select * from employee;  //employee(사원정보 테이블)에서 모든 데이터 불러옴
set linesize 130  //데이터 가로폭 130줄 보여주기

 

=>

 

       ENO ENAME                JOB                   MANAGER HIREDATE     SALARY COMMISSION        DNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
      7369 SMITH                CLERK                    7902 80/12/17        800                    20
      7499 ALLEN                SALESMAN                 7698 81/02/20       1600        300         30
      7521 WARD                 SALESMAN                 7698 81/02/22       1250        500         30
      7566 JONES                MANAGER                  7839 81/04/02       2975                    20
      7654 MARTIN               SALESMAN                 7698 81/09/28       1250       1400         30
      7698 BLAKE                MANAGER                  7839 81/05/01       2850                    30
      7782 CLARK                MANAGER                  7839 81/06/09       2450                    10
      7788 SCOTT                ANALYST                  7566 87/07/13       3000                    20
      7839 KING                 PRESIDENT                     81/11/17       5000                    10
      7844 TURNER               SALESMAN                 7698 81/09/08       1500          0         30
      7876 ADAMS                CLERK                    7788 87/07/13       1100                    20

       ENO ENAME                JOB                   MANAGER HIREDATE     SALARY COMMISSION        DNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
      7900 JAMES                CLERK                    7698 81/12/03        950                    30
      7902 FORD                 ANALYST                  7566 81/12/03       3000                    20
      7934 MILLER               CLERK                    7782 82/01/23       1300                    10

14 행이 선택되었습니다.  //14개 자료(레코드) 선택됨

 

 

 

 

  • DESC : 테이블 구조 확인 

desc employee 

 

=>

 

 이름                                                                    널?      유형
 ----------------------------------------------------------------------- -------- ------------------------------------------------
 ENO                                                                     NOT NULL NUMBER(4)
 ENAME                                                                            VARCHAR2(10)
 JOB                                                                              VARCHAR2(9)
 MANAGER                                                                          NUMBER(4)
 HIREDATE                                                                         DATE
 SALARY                                                                           NUMBER(7,2)
 COMMISSION                                                                       NUMBER(7,2)
 DNO                                                                              NUMBER(2)

 

//
not null : null 불가
varcahr2(10) : 10자 이하 문자
number(7,2) : 7자 이하 숫자, 소숫점 2개 이하

 

 

 

 

  • 값 일괄 변경

select ename, salary, salary*12 from employee;

 

=>

 

ENAME                    SALARY  SALARY*12
-------------------- ---------- ----------
SMITH                       800       9600
ALLEN                      1600      19200
WARD                       1250      15000
JONES                      2975      35700
MARTIN                     1250      15000
BLAKE                      2850      34200
CLARK                      2450      29400
SCOTT                      3000      36000
KING                       5000      60000
TURNER                     1500      18000
ADAMS                      1100      13200

ENAME                    SALARY  SALARY*12
-------------------- ---------- ----------
JAMES                       950      11400
FORD                       3000      36000
MILLER                     1300      15600

 

 

 

 

  • NVL - NULL 대응 함수

select ename, salary, job, dno, commission, salary*12+commission from employee;

 

=>

 

ENAME                    SALARY JOB                       DNO COMMISSION SALARY*12+COMMISSION
-------------------- ---------- ------------------ ---------- ---------- --------------------
SMITH                       800 CLERK                      20
ALLEN                      1600 SALESMAN                   30        300                19500
WARD                       1250 SALESMAN                   30        500                15500
JONES                      2975 MANAGER                    20
MARTIN                     1250 SALESMAN                   30       1400                16400
BLAKE                      2850 MANAGER                    30
CLARK                      2450 MANAGER                    10
SCOTT                      3000 ANALYST                    20
KING                       5000 PRESIDENT                  10
TURNER                     1500 SALESMAN                   30          0                18000
ADAMS                      1100 CLERK                      20

ENAME                    SALARY JOB                       DNO COMMISSION SALARY*12+COMMISSION
-------------------- ---------- ------------------ ---------- ---------- --------------------
JAMES                       950 CLERK                      30
FORD                       3000 ANALYST                    20
MILLER                     1300 CLERK                      10

 

//commission 없을 때 null 처리되어 연산 불가 => salary*12+commission 결과에서 제외됨

 

 

=>수정

 

select ename, salary, job, dno, commission, salary*12+nvl(commission,0) from employee;

//NVL(COMMISSION, 0) : commission 값이 null이면 0으로 대체

 

=>

 

ENAME                    SALARY JOB                       DNO COMMISSION SALARY*12+NVL(COMMISSION,0)
-------------------- ---------- ------------------ ---------- ---------- ---------------------------
SMITH                       800 CLERK                      20                                   9600
ALLEN                      1600 SALESMAN                   30        300                       19500
WARD                       1250 SALESMAN                   30        500                       15500
JONES                      2975 MANAGER                    20                                  35700
MARTIN                     1250 SALESMAN                   30       1400                       16400
BLAKE                      2850 MANAGER                    30                                  34200
CLARK                      2450 MANAGER                    10                                  29400
SCOTT                      3000 ANALYST                    20                                  36000
KING                       5000 PRESIDENT                  10                                  60000
TURNER                     1500 SALESMAN                   30          0                       18000
ADAMS                      1100 CLERK                      20                                  13200

ENAME                    SALARY JOB                       DNO COMMISSION SALARY*12+NVL(COMMISSION,0)
-------------------- ---------- ------------------ ---------- ---------- ---------------------------
JAMES                       950 CLERK                      30                                  11400
FORD                       3000 ANALYST                    20                                  36000
MILLER                     1300 CLERK                      10                                  15600

 

 

 

 

  • 함수 컬럼에 별칭 생성

//select ename, salary, job, dno, commission, salary*12+nvl(commission,0) 연봉 from employee;
//띄어쓰기 불가

select ename, salary, job, dno, commission, salary*12+nvl(commission,0) as "연 봉" from employee;
//띄어쓰기 가능

 

 

 

 

  • DISTINCT : 중복값 제외

select distinct(dno) from employee;

=>

       DNO
----------
        30
        10
        20

 

 

 

 

  • 임시 테이블 (테스트용)

desc dual 

=>

 이름                                                                    널?      유형
 ----------------------------------------------------------------------- -------- ------------------------------------------------
 DUMMY

 

 

select * from dual;

=>

DU
--
X

 

 

 

 

  • WHERE 조건문

SELECT 필드명 FROM 테이블명 WHERE 필드명 연산자 값;

 

※연산자 
>, <, =(같음), <>(같지 않음)

 

 

  •  

select * from employee where salary>=3000;

select * from employee where ename='SCOTT';  //문자열 => 홑따옴표, 대소문자 구분 必

select * from employee where hiredate<='1981/01/01';  //날짜 => 홑따옴표 必

 

 

 

 

  • 복수 조건

논리연산자로 연결 (AND, OR, NOT)

 

 

  •  

select * from employee where dno=10 and job='MANAGER';

 

 

 

 

  • NOT
  •  

//select * from employee where dno<>10;

select * from employee where not dno=10; 

 

 

 

 

  • BETWEEN
  •  

//select * from employee where salary>=1000 and salary<=1500;
select * from employee where salary between 1000 and 1500;

 

select * from employee where hiredate between '1982/01/01' and '1982/12/31';

 

 

 

 

  • IN : 괄호 안 조건에 해당하는 값 선택

cf. not in

 

 

  •  

select * from employee where commission in (300,500,1400);

 

 

 

  • 와일드카드

= 대신 like 사용 (부분 일치하는 값)

 

% : 글자수 제한 X

_ :  한 글자

 

 

  •  

select * from employee where ename like 'F%';  //F로 시작하는 값

like '%M%';  //M 포함하는 값
like '%M';  //M으로 끝나는 값

not like '%A%'  //A 포함되지 않은 값

 

'_A%'  //두번째 글자가 A인 값

 

 

 

 

  • IS NULL : NULL인 값 선택

select * from employee where commission is null;

 

 

 

 

  • ORDER BY 항목 ASC/DESC : 정렬

생략 시 오름차순

 

 

  •  

select * from employee where ename like '%M%' order by salary desc;

 

 

  • 복수 정렬

select * from employee order by hiredate desc, ename asc;  //hiredate 내림차순, 같은 값일 시 ename 오름차순

 

 

 

 

SQL PLUS (오라클)

명령어: 
https://blog.naver.com/leejongcheol2018/222035935941

https://mirwebma.tistory.com/12

 

 

1. LIST
: 버퍼(임시 기억저장소)에 저장된 SQL문 확인 (이전 명령 보여줌)
L 만 입력해도 가능

2. /
: 버퍼에 저장된 쿼리문 실행

3. RUN
버퍼에 저장된 SQL문을 보여주고 실행

4. HOST
DOS 환경으로 나감

5. EXIT
SQL PLUS로 돌아옴