SQL 문장(SELECT/INSERT/UPDATE/DELETE ), 문자 연산자(||), 조건식

kmb·2022년 11월 17일
0

DB

목록 보기
5/10
post-thumbnail

예시로 사용할 DEPT 테이블, EMP 테이블은 아래와 같다.


SELECT

테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 문장.

 

  • SELECT 형태
SELECT * 혹은 컬럼
FROM [스키마.] 테이블명 혹은 [스키마.] 뷰명
WHERE 조건
AND 조건
ORDER BY 컬럼;

모든 컬럼을 보려면 * 키워드를 사용한다.


INSERT

신규로 데이터를 입력할 때 사용.

 

  • INSERT 기본형태
INSERT INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...)
VALUES (1,2, ...);

반드시 나열하는 컬럼과 값의 갯수, 순서, 데이터 타입이 일치해야만 한다. 일치하지 않으면 오류 발생.

 

  • INSERT 컬럼명기술 생략 형태
INSERT INTO [스키마.] 테이블명
VALUES (1,2, ...);

컬렴명을 기술하지 않지만 VALUES절에 테이블의 컬럼 순서대로 해당 컬럼의 값을 입력해야 한다.
컬럼명을 기술하지 않는다는것은 테이블에 있는 모든 컬럼에 값을 입력한다는 의미.

 

  • INSERT INSERT~SELECT 형태
INSERT INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...)
SELECT;

다른 테이블이나 뷰의 조회 결과로 나온 데이터를 또 다른 테이블에 넣는 방식.

 

  • 다중 테이블 INSERT 형태
INSERT ALL | FIRST
WHEN 조건1 THEN
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(1,2, ...)
WHEN 조건2 THEN
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(1,2, ...)    
	...
ELSE
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(1,2, ...)
SELECT;

ex) 다중 테이블 INSERT 예시

CREATE TABLE EMP10 (
    eno number(6),      // 사원번호
    ename varchar2(30), // 사원명 
    payM number(10),    // 월급여
    payY number(20),    // 연봉
    dno number(2)       // 부서번호
);

CREATE TABLE EMP20 (
 	eno number(6),      // 사원번호
 	ename varchar2(30), // 사원명
 	payM number(10),    // 월급여
 	payY number(20),    // 년봉
 	dno  number(2)      // 부서번호
);

CREATE TABLE EMPETC (
 	eno number(6),      // 사원번호
 	ename varchar2(30), // 사원명
 	payM number(10),    // 월급여
 	payY number(20),    // 년봉
 	dno  number(2)      // 부서번호
);

INSERT ALL
    WHEN deptno=10 THEN
        INTO emp10 values(empno, ename, sal, sal*13, deptno)
    WHEN deptno=20 THEN    
        INTO emp20 values(empno, ename, sal, sal*13, deptno)
    ELSE    
        INTO empetc values(empno, ename, sal, sal*13, deptno)
SLEECT empno, ename, sal, sal*13, job, deptno
FROM emp
WHERE deptno=10 or deptno=20 or deptno=30;


UPDATE

테이블에 있는 기존 데이터를 수정할 때 사용.

 

  • UPDATE 형태
UPDATE [스키마.] 테이블명
SET 컬럼1 = 변경값1,
	컬럼2 = 변경값2,
    ...
WHERE 조건;

이미 입력된 데이터를 변경해야 하므로 변경할 테이블, 컬럼, 변경할 값이 필요하다.


DELETE

테이블에 있는 데이터를 삭제할 때 사용.

 

  • DELETE 기본형태
DELETE [FROM] [스키마.] 테이블명
WHERE 삭제조건;

 

  • DELETE 특정 파티션 삭제
DELETE [FROM] [스키마.] 테이블명 PARTITION (파티션명)
WHERE 삭제조건;

문자 연산자 ||

두 문자를 붙이는 연산을 수행

 

- 예시
select deptno || '-' || dname from dept;

- 결과
DEPTNO||'-'||DNAME**텍스트**
-------------------
10-ACCOUNTING
20-RESEARCH
30-SALES
40-OPERATIONS
90-dept90
91-dept91
92-회계부
93-영업부
95-정동진
96-최강개발96
97-개발부
98-개발부

조건식

1개 이상의 표현식과 논리연산자가 결합된 식.
TRUE, FALSE, UNKNOWN 3가지의 타입을 반환한다.

 

  • 비교 조건식

ANY, SOME, ALL 키워드로 비교하는 조건식
ANY와 SOME의 경우 문장중에 1가지라도 일치하는 모든것을 추출.
ALL의 경우 모든 조건을 동시에 만족해야 한다.

- 예시1
select * from dept
where deptno = ANY (10, 20, 30);

- 결과1
  DEPTNO  	  DNAME           LOC
---------- --------------  ------------
    10	    ACCOUNTING      NEW YORK
    20 		RESEARCH        DALLAS
    30 		SALES           CHICAGO
    
    
- 예시2
select * from emp
where sal = ALL (800, 1600, 2400);

- 결과2
no rows selected (선택된 행 없음)

 

  • 논리 조건식

AND, OR, NOT을 사용하는 조건식

- 예시
select * from emp
where NOT(sal>=1000);

- 결과
EMPNO   ENAME    JOB     MGR    HIREDATE    SAL    COMM   DEPTNO
------  ------  ------  -----   ---------  -----  ------  -----
7369	SMITH	CLERK	7902	80/12/17	800	  (null)   20
7900	JAMES	CLERK	7698	81/12/03	950	  (null)   30

 

  • BETWEEN AND 조건식

범위에 해당하는 값을 찾을 때 사용.

- 예시
select ename, job, sal from emp
where sal BETWEEN 1500 AND 2500;

- 결과
ENAME      JOB       SAL
-------  ---------  ------
ALLEN     SALESMAN   1600
CLARK     MANAGER    2450
TURNER    SALESMAN   1500

 

  • IN 조건식

조건절에 명시한 값이 포함된 건을 반환.

- 예시
select ename, job, sal from emp
where sal IN (3000, 5000);

- 결과
ENAME      JOB       SAL
-------  ---------  ------
KING     CLERK      5000
CLARK    MANAGER    3000

 

  • LIKE 조건식

문자열의 패턴을 검색할 때 사용되는 조건식.

- 예시
select ename, job, sal from emp
where ename like 'J%';  // 이름의 첫글자가 J로 시작하는

- 결과
ENAME    JOB     SAL
------- ------  -------
JONES   MANAGER  2975
JAMES   CLERK    950

 

출처

  • 오라클 SQL과 PL/SQL을 다루는 기술 (책)
profile
꾸준하게

0개의 댓글