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 별칭을 주는 방법을 사용하면 됨 ⇒ 메일서버 할 때 문제있었던 그거랑 비슷
- 컬럼명 별칭명
- 컬럼명 as 별칭명
- 컬럼명 “별칭명”
- 컬럼명 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 조건
- AND, OR
- 비교연산자 > < ≥ ≤ = ≠
- BETWEEN 작은값 AND 큰값
- IN ( ~~~ )
- IS NULL, IS NOT NULL
- LIKE ( %, _ )
- 참고 자료
'DB - SQL' 카테고리의 다른 글
SQL 다루기(3) : VIEW, INDEX, SEQUENCE, DB사용자 계정 다루기 (0) | 2022.02.19 |
---|---|
SQL 다루기(2) : DB 제약 조건과 key (0) | 2022.02.18 |
SQL 다루기(1) : DML, DDL (0) | 2022.02.15 |
DB 기본기 익히기 (3) : JOIN, GROUP BY, ORDER BY (0) | 2022.02.12 |
DB 기본기 익히기 (2) : SPOOL, FUNCTION, 형변환, 제어문 (0) | 2022.02.12 |
댓글