Post

정보처리기사(필기) 📝 03. 데이터베이스 구축 (1)

정보처리기사(필기) 📝 03. 데이터베이스 구축 (1)

📌 1. SQL 응용

✅ 1) SQL 개념

♦️ EMPLOYEE

사원번호이름직급급여지역번호
1짱구과장15002
2맹구차장300031
3훈이인턴 061
  • 사원번호는 Primary Key(unique, NotNull)
  • 지역번호는 Foreign Key (AREA 테이블의 Primary Key)

♦️ AREA

지역번호지역명
02서울
031경기
061전남
  • 지역번호는 Primary Key(unique, NotNull)
  • 맹구의 지역은? 경기

관계(Relation)가 있는 테이블 간에 내가 원하는 정보를 찾아내는 언어가 SQL이다!

1
2
3
4
5
6
7
8
9
10
11
12
Select *
From employee;
-- 다 보여줌

Select 이름, 직급
From employee;
-- 짱구 과장, 맹구 차장, 훈이 인턴

Select 이름, 급여
From employee;
Where 급여 <= 200;
-- 짱구 150

✅ 2) DDL (Data Define Language, 데이터 정의어)

♦️ CREATE

1
2
3
4
5
6
7
8
9
10
create table emp -- emp라는 이름의 테이블 만듦
(
	empno  number(4, 0) -- 첫 번째 컬럼, 네 자리 숫자만 들어감
	dname  varchar2(14) -- 두 번째 컬럼, 문자형 변수만 14자까지 들어감
	loc    varchar3(13) -- 세 번째 컬럼, 문자형 변수만 13자까지 들어감
	deptno number(2, 0)
	constraint pk_emp primary key (empno) -- deptno가 primary key다
	constraint pk_deptno foreign key (deptno) references dept (deptno)
	-- dept 테이블의 primary key인 deptno를 참조 > foreign key다
);
  • UNIQUE KEY(UK)
    • 반드시 유일해야 함
  • NOTNULL(NN)
    • 반드시 값이 있어야 함
  • CHECK(CK)
    • 성별에 많이 사용(둘 중에 하나만 반드시 선택)
  • DEFAULT
    • 아무것도 기입하지 않을 때의 기본 값

🔏 SUBQUERY를 이용한 CREATE TABLE

  • 서브 쿼리를 이용해서 SELECT의 조회 결과로 테이블을 생성하는 방법
  • 컬럼명과 데이터 타입, 값이 복사되고 제약 조건은 NOT NULL만 복사됨
1
2
3
4
CREATE TABLE EMP_DEPTNO_10 -- EMP_DEPTNO_10이라는 테이블을 만들자
AS SELECT EMPNO, ENAME, SAL, DEPTNO -- 가져올 항목 (NOT NULL)
	FROM EMPLOYEE -- EMPLOYEE 테이블에서
	WHERE DEPTNO = 10 -- DEPTNO가 10인 애들만

🔏 CREATE VIEW

  • 하나 이상의 BASE TABLE을 기반으로 생성은 되었으나 물리적으로 존재하지 않고 DATA DICTIONARY에 SELECT 구문 형태로 정의만 되어 있는 **가상의 논리적인 테이블**
    • 데이터 접근 제어로 보안을 제공한다.
    • 삽입, 삭제 갱신 연산에 제약사항이 따른다.
1
2
3
4
5
6
7
CREATE VIEW WHO_IS_MANAGER
AS SELECT *
	FROM EMP
	WHERE JOB = 'MANAGER'
	
SELECT *
	FROM WHO_IS_MANAGER

♦️ ALTER

  • 테이블에 정의된 내용을 수정할 때 사용
1
2
3
4
5
6
7
8
9
10
11
ALTER TABLE DEPT
ADD CNAME VARCHAR2(20) -- 컬럼 추가

ALTER TABLE DEPT
ADD CONSTRAINT UNIQUE(DNAME) -- 제약조건 추가

ALTER TABLE DEPT
MODIFY CNAME CHAR(3) -- 컬럼 수정

ALTER TABLE DEPT
DROP COLUMN CNAME -- 컬럼 삭제
  • VIEW는 실제로 존재하는 테이블이 아니므로 ALTER로 변경이 불가능
  • DROP 후 다시 CREATE 해야 함

♦️ DROP

  • 데이터베이스 객체를 삭제하는 구문
1
2
3
4
DROP TABLE EMP -- EMP 테이블 자체를 제거
DROP TABLE EMP CASCADE -- EMP를 참조하는 다른 모든 개체를 함께 제거
DROP TABLE EMP RESTRICTED -- 참조하는 뷰나 제약조건이 있으면 실행 실패
DROP VIEW EMP_VIEW -- VIEW 삭제

✅ 3) DCL (Data Control Language, 데이터 제어어)

♦️ COMMIT

  • 삽입한 데이터를 영구히 저장
1
2
3
4
5
START TRANSACTION;
INSERT INTO employees (name, position, salary) VALUES ('Alice', 'Developer', 5000);
UPDATE employees SET salary = 5500 WHERE name = 'Alice';

COMMIT;  -- 변경 사항 확정 (저장)

♦️ ROLLBACK

  • COMMIT한 데이터를 제외하고 메모리에 있는 데이터를 날림
1
2
3
START TRANSACTION;
DELETE FROM employees WHERE name = 'Alice';  -- Alice 삭제
ROLLBACK;  -- 삭제 취소

♦️ GRANT

  • 특정 사용자에게 데이터베이스 객체(테이블, 뷰, 프로시저 등)에 대한 권한을 부여할 때 사용
  • WITH GRANT OPTION: 해당 사용자가 다른 사용자에게도 같은 권한을 부여할 수 있도록 허용
1
GRANT 사용자등급 TO 사용자_ID (WITH GRANT OPTION)

♦️ REVOKE

  • 사용자에게 부여된 권한을 철회할 때 사용
  • WITH GRANT OPTION을 가진 사용자의 권한을 철회하면, 그 사용자가 부여했던 권한도 함께 철회됨
  • REVOKE를 사용하면 부여된 권한만 철회되며, 사용자 계정 자체가 삭제되지는 않음
1
REVOKE 사용자등급 FROM 사용자_ID

✅ 4) DML (Data Manipulation Language, 데이터 조작어)

♦️ INSERT

  • 테이블에 새로운 튜플을 삽입
1
2
insert into DEPT
values(50, '총무부', '서울')

♦️ UPDATE

  • 테이블의 값 갱신
1
2
3
4
5
update DEPT
set LOC = '대구'
where deptno = 60

commit

♦️ DELETE

  • 튜플 삭제
1
2
3
4
5
6
7
8
delete
from DEPT -- 다 지워짐

rollback -- 다시 살려

delete
from DEPT
where deptno = 50

✅ 5) DML - select

♦️ SELECT

  • select, from 제외 중간중간 생략은 가능하지만 순서를 절대 바꿀 수 없음 (SF영화는왠쥐혼자보고싶다..)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- select 속성명
-- from 테이블명
-- where 조건
-- group by 속성명
-- having group by에 대한 조건
-- order by 정렬 (asc/desc)

select EMPNO, ENAME, SAL
from EMP
where SAL BETWEEN 1000 AND 2000 -- 1000 <= SAL <= 2000

select EMPNO, ENAME
from EMP
where ENAME LIKE 'S$' -- ENAME이 S로 시작하는 모든 사람
-- 'S%'면 S로 끝나는 사람
										  
select EMPNO, ENAME, DEPTNO
from EMP
where DEPTNO IN (10, 20) -- DEPTNO가 10 or 20

♦️ DISTINCT

  • 같은 값이 중복돼서 나오지 않게 방지
1
2
select DISTINCT MGR
from EMP
This post is licensed under CC BY 4.0 by the author.