티스토리 뷰

SQL (Structured Query Language) 구조화된 질의 언어

  • DDL (Data Definition Language) : DB 스키마 정의 조작
  • DML (Data Manipulation Language) : Data 조작
  • DCL (Data Control Language) : Data 제어

 

 

DML (Data Manipulation Language) 데이터(TUPLE / ROW) 조작 언어

 

  • SELECT : 데이터 읽기
  • INSERT : 데이터 삽입
  • UPDATE : 데이터 수정
  • DELETE : 데이터 삭제

<SELECT>

SELECT FROM

SELECT 컬럼명, ...
FROM 테이블명;

 

오라클 내부 실행 순서는 FROM -> SELECT 입니다!

 

ex) 사원 테이블(EMP) 의 전체 목록을 보자!

SELECT *
FROM EMP;

 

몇 가지 예제를 통해 기본적인 SELECT 문의 사용법을 살펴보겠습니다.

 

문제에 사용하는 테이블은 Oracle DB 를 설치하면 기본적으로 제공되는 EMP Table 입니다.

 

그전에 문제에 사용 될 Query 의 기본적인 기능 몇가지를 소개합니다.

 

  • * Alias (별칭)
    • SELECT ENAME AS ”사원명” FROM EMP;
  • * 테이블 구조 확인
    • DESC 테이블명; (=DESCRIBE 테이블명;)
  • * Line 크기 변경 / Page 크기 변경
    • SET LINESIZE 크기; / SET PAGESIZE 크기;
  • * 문자열 연결
    • STRING||STRING

 

--Q1) 사원 테이블(EMP)의 모든 데이터를 출력하자.

SELECT * 
FROM EMP; 

 


--Q2) 사원 테이블에서 사원의 이름(ENAME), 사원의 번호(EMPNO), 월급(SAL)을 출력하자.

SELECT ENAME, EMPNO, SAL 
FROM EMP; 

 


--Q3) 사원 테이블에서 사원의 이름과 연봉을 출력하자.

SELECT ENAME, SAL 
FROM EMP; 



--Q4) 사원의 이름, 입사일(HIREDATE), 부서번호(DEPTNO)를 출력하자.

SELECT ENAME, HIREDATE, DEPTNO 
FROM EMP; 



--Q5) 사원의 이름과, 사원을 관리하고있는 관리자(MGR)를 출력하자.

SELECT ENAME, MGR 
FROM EMP; 



--Q6) 부서 테이블(DEPT)의 모든 데이터를 출력하자.

SELECT * 
FROM DEPT; 



--Q7) 부서 테이블의 구조를 보자

DESC DEPT; 



--Q8) 사원 테이블에서 사원의 이름, 월급, 커미션(COMM)을 출력하자.

SELECT ENAME, SAL, COMM 
FROM EMP; 



--Q9) 사원 테이블의 모든 데이터를 "OO님이 OO에 입사를 하고 OO의 월급을 받습니다." 형식인 하나의 컬럼으로 출력하자.

SELECT ENAME||'님이 '||JOB||'에 입사를 하고 '||SAL||'의 월급을 받습니다.' 
FROM EMP;

 

 

 

SELECT FROM WHERE

SELECT 컬럼명,… 
FROM 테이블명
WHERE 컬럼의 조건;

WHERE 절을 통해 컬럼에 조건을 걸어 원하는 데이터를 얻어낼 수 있습니다. 

 

Oracle 내부 실행 순서는 FROM -> WHERE -> SELECT 입니다.

 

문제로 넘어가기 전 WHERE 절에서 사용되는 몇가지 기능을 보도록 하겠습니다.

  • 컬럼의 값을 연산 (산술, 비교 등) 
    • > , >=, <, <=, =, !=(<>), BETWEEN, IN, NOT IN, ANY …
  • 조건 연결은 AND, OR ..

 

--Q1) 사원테이블에서 사원번호가 '7844' 인 사원의 사원번호, 이름, 월급을 출력하자.

SELECT EMPNO, ENAME, SAL 
FROM EMP 
WHERE EMPNO = 7844; 




--Q2) 사원테이블에서 'SMITH'의 사원번호, 이름, 월급을 출력하자.

SELECT EMPNO, ENAME, SAL 
FROM EMP 
WHERE ENAME = 'SMITH'; 




--Q3) 사원테이블에서 입사일이 1980년 12월 17일인 사원의 모든 데이터를 출력하자.

SELECT * 
FROM EMP 
WHERE HIREDATE = '1980-12-17'; 




--Q4) 1980년도에서 1982년도 사이에 입사한 사원의 이름과 입사일을 출력하자.

SELECT ENAME, HIREDATE 
FROM EMP 
WHERE HIREDATE BETWEEN '1980-01-01' AND '1980-12-31'; 




--Q5) 월급이 2000 이하인 사원의 이름과 월급을 출력하자.

SELECT ENAME, SAL 
FROM EMP 
WHERE SAL <= 2000; 




--Q6) 월급이 1000에서 2000 사이인 사원의 이름과 월급을 출력하자.

SELECT ENAME, SAL 
FROM EMP 
WHERE SAL BETWEEN 1000 AND 2000; 




--Q7) 사원번호가 7369, 7499, 7521인 사원들의 이름과 월급을 출력하자.

SELECT ENAME, SAL 
FROM EMP 
WHERE EMPNO IN(7369, 7499, 7521);

 

<INSERT>

TABLE 에 ROW/TUPLE를 삽입!

INSERT INTO 테이블
VALUES(값, ...);

INSERT INTO 테이블(컬럼, 컬럼)
VALUES(값, 값);

 

ex) 사원테이블에 사원번호 1111, 이름 HONG, 직업 DEVELOPER, 관리자 없음 입사일 오늘날짜, 월급 3000, 커미션 400, 부서번호 30 을 추가해보자

INSERT INTO EMP
VALUES(1111, 'HONG', 'DEVELOPER', NULL, SYSDATE, 3000, 400, 30);

 

<UPDATE>

TABLE 에 특정 ROW/TUPLE 를 수정

UPDATE 테이블명
SET 컬럼 = 값, 컬럼 = 값, ...
WHERE 조건;

 

ex) 사원테이블에서 HONG의 월급을 3500으로 수정

UPDATE EMP
SET SAL = 3500
WHERE ENAME - 'HONG';

 

 

<DELETE>

TABLE 에 특정 ROW/TUPLE 를 삭제

DELETE FROM 테이블명
WHERE 조건;

 

ex) 사원 테이블에서 월급이 3500인 사원 삭제

DELETE FROM EMP
WHERE SAL = 3500;

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함