DB - SQL

DB 기본기 익히기 (1) : 기본 slelect

TerianP 2022. 2. 11.
728x90

1. 오라클 DB 설치

C:\\Users\\JSeJone>sqlplus system/oracle

SQL*Plus: Release 11.2.0.1.0 Production on 수 2월 9 10:35:22 2022

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

// scott 는 기본 유저, 따라서 패스워드 변경해둠
SQL> alter user scott
  2  identified by tiger
  3  account unlock;

2. DB 란?

  • 소프트웨어와 소프트웨어들이 저장하는 데이터들의 집합
  • DB의 제조사는 각각 다르나 사용법 만큼은 표준화됨 ⇒ ANSI
  • SQL : structured query language
  • 오라클, Mysql 등의 대다수의 DB 는 RDBMS ⇒ 관계형 데이터베이스
  • DB 는 여러 개의 테이블로 구성됨
  • 테이블은 다시 row 행 과 column 열 로 구분됨
  • row 기준으로 데이터 선택 : selection
  • column 기준으로 데이터 선택 : projection
  • 두 가지 colunm 을 하나로 합쳐서 보는 것 : join
  •  

3. DB 명령어

  • CURD : create , update, read , delete
  • 이때 모든 문장의 마지막에는 세미 콜론 ; 가 꼭 필요함 ; 는 다른말로 문장 종결자라고도 함
  • 주석문 : - -
  • NULL
    • 0 이 아님
    • 공백 아님
    • 할당, 연산, 비교에 의미가 X
    • ‘해당 사항 없음’ 과 유사한 의미
  • Read
    • select * from [테이블명]; ⇒ 해당 테이블 전체를 읽어오기
    • select [컬럼명] from [테이블명]; ⇒ 해당 테이블의 해당 컬럼만 읽어오기
    • select [컬럼명] from [테이블명] where [컬럼명]=[컬럼내용] : 해당 테이블에서 where 뒤에 오는 컬럼과 컬럼 내용에 맞는 부분 찾아오기
    • where 부터는 일종의 조건절로 where 뒤에 오는 조건에 만족하는 내용만 출력됨 ⇒ if 문과 비슷하다고 생각하면 될 듯
    SQL> select * from emp;
    SQL> select mgr from emp;
    SQL> select * from emp where mgr=7782;
    SQL> select empno from emp where deptno = 10;
    
    • SQL 문에서 자체적으로 간단한 연산도 가능
    SQL> select empno, ename, sal, sal*12 from emp;
    

 

  • null 이나 not null 을 확인할때는 아래와 같이
  • null 값을 더하거나 빼거나 하여튼 연산을 하게 되면 최종적으로 null 로 수렴하게 된다
SQL> select empno, ename, comm, sal from emp where comm is null;
SQL> select empno, ename, comm, sal from emp where comm is not null;

 

  • null 로 수렴하는 문제를 해결하기 위해 간단한 함수를 사용한다.
  • NVL 함수는 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그대로 출력한다.
    • 함수 : NVL("값", "지정값")
SQL> select empno, ename, sal*12+NVL(comm,0), comm, sal from emp;

 

여기가 포인트!!

  • 컬럼명이 길다면 ALIAS 별칭을 주는 방법을 사용하면 됨 ⇒  메일서버 할 때 문제있었던 그거랑 비슷
    1. 컬럼명 별칭명
    2. 컬럼명 as 별칭명
    3. 컬럼명 “별칭명”
    4. 컬럼명 as “별칭명”
SQL> select empno, ename, sal*12+NVL(comm,0) 연봉, comm, sal from emp; => 1. 컬럼명 별칭명
SQL> select empno, ename, sal*12+NVL(comm,0) as 연봉, comm, sal from emp; => 2. 컬럼명 as 별칭명
  • SQL 문에 ‘ ‘ 싱글 쿼터를 넣어서 문자열을 추가할 수 있다. 이때 추가되는 문자열은 매 행마다 들어가며 아래와 같이 출력된다.
SQL> select ename as "사원명", 'IS A', job from emp;
  • SQL 문에서 || 를 사용하면 여러 컬럼을 하나의 컬럼 하나의 컬럼 내용으로 이어붙여서 출력 할 수 있다.
SQL> select ename || ' is a ' || job as "MSG" from emp;
  • where 을 사용하는 조건절의 기본형은 다음과 같다.
SQL> SELECT EMPNO, ENAME, JOB, HIREDATE FROM EMP WHERE empno = 7788;
  • 단 조건절을 사용 할 때 문자열을 사용하는 경우 싱글 쿼터 ‘ ‘ 를 사용해서 문자를 묶어줘야한다.
    • 이때 대소문자는 구별한다
SQL> SELECT EMPNO, ENAME, JOB, HIREDATE FROM EMP WHERE ENAME = 'SCOTT';
  • 2개 이상의 조건을 사용해서 데이터를 뽑기 위해서는 WHERE 조건절 안에 AND 또는 OR 를 사용해서 조건을 묶어주면 된다.
  • AND 와 OR 가 동시에 있는 경우 AND 가 OR 보다 우선되며 계산된다.
SQL> SELECT EMPNO, ENAME, JOB, DEPTNO FROM EMP WHERE DEPTNO = 10 AND JOB ='MANAGER';

 

여기도 중요!!

AND 는 A 와 B 모두를 의미

기준 True False Null

True True False ?
False False False False
Null ? False ?

 

OR 는 A 나 B 둘 중 하나의 의미

기준 True False Null

True True True True
False True False ?
Null True ? ?

 

  • A 와 B 사이의 값을 구하려고 할 때는 AND NUM ≥ A AND NUM≤B 로 할 수 있지만 아래와 같이 작성 - AND - 사용해도 무방하다.
반복되는 AND 를 생략하고 BETWEEN 으로 묶는게 더 좋음
SQL> SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1500 AND 3000;
  • OR 의 경우에는 IN ( ~~ ) 으로 대체 가능
SQL> SELECT ENAME, COMM FROM EMP WHERE COMM = 300 OR COMM = 500 OR COMM = 1400;

반복되는 OR 을 제거하고 아래처럼 작성하는 것도 가능 => IN ( ~~ ) 로 표현 가능

SQL> SELECT ENAME, COMM FROM EMP WHERE COMM IN (300 ,500, 1400);
  • 정확한 내용이 아닌 특정한 문자열 패턴의 내용, 특정 문자를 포함하는 내용 등을 검색하기 위해서는 ‘LIKE’ 와 % 를 사용함
    • 이때 % 는 맨 뒤에 사용되면 거기서 끝나거나 혹은 뒤에 글자가 더 이어지거나 상관없이 해당 내용이 포함되면 된다 라고 생각하면 됨
    • ‘%APPLE%’ 라면 앞이나 뒤에 내용에 상관없이 APPLE 가 포함된 내용을 가져옴
LIKE 뒤에는 [특정한 문자열%] 를 사용하면 특정한 문자열 과 비슷한 내용, 혹은 포함하는 내용을 찾아옴
SQL> SELECT DNAME, LOC FROM DEPT WHERE DNAME LIKE 'OPER%';
  • ‘_’ 도 사용되는데 얘는 ‘한개의 문자가 있음’ 을 의미
    • 3번째 문자가 A 인 내용을 뽑아온다고 했을 때 아래처럼 사용 할 수 있음
2번째 문자 A
SQL> SELECT DNAME FROM DEPT WHERE DNAME LIKE '_A%';

3번째 문자 A
SQL> SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '__A%';

 

 

4. DB 정리

SELECT [ 컬럼명, 컬럼명 AS “별칭” , * , 사칙연산, ‘ ~~~~ ‘ , || , FUNCTION

FROM 테이블명

WHERE 조건

  1. AND, OR
  2. 비교연산자 > < ≥ ≤ = ≠
  3. BETWEEN 작은값 AND 큰값
  4. IN ( ~~~ )
  5. IS NULL, IS NOT NULL
  6. LIKE ( %, _ )

 


- 참고 자료

 

[Oracle] 오라클 명령어 간단 정리

 

[Oracle] 오라클 명령어 간단 정리

오라클에 입문하면서 오라클 명령어를 간단하게 정리해 본다. 1.계정 관련 1.1.계정 확인 SQL> SHOW USER; USER은 "SYS"입니다. 지금 내가 사용한 계정이 뭔지 보여준다. 1.2.모든 계정을 확인 SQL>SELECT * FRO

insomniachaos.tistory.com

 

댓글