Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Joon's Space

7. SQL 응용 본문

정보처리기사

7. SQL 응용

Happy Joon 2022. 10. 14. 19:48

데이터 베이스의 SQL 유형

  • 데이터 질의어(DQL) - 데이터베이스에 저장된 데이터를 검색하는데 사용하는 질의어 → SELECT
  • 데이터 조작어(DML) - 데이터베이스에 저장된 데이터를 수정, 삭제, 추가하는 명령어 → INSERT, UPDATE, DELETE
  • 데이터 정의어(DDL) - 데이터베이스 객체를 생성하고 수정, 삭제하는 명령어 → CREATE, ALTER, DROP, TRUNCATE
  • 데이터 제어어(DCL) - 데이터베이스의 규정이나 기법을 정의하고 제어하는 언어 → GRANT, REVOKE, COMMIT, ROLLBACK

INSERT

INSERT INTO 테이블명(컬럼명1, ..., 컬럼명n)
VALUES (값1, ..., 값n)

ex) 
INSERT INTO DEPT(DNO, DEPTNAME, FLOOR)
VALUES(4,'HR', 7);

DELETE

DELETE FROM 테이블명
WHERE 조건;

ex) 부서 테이블에서 부서번호 4번인 부서를 삭제.
DELETE FROM DEPT WHERE DNO=4;

ex) 학생 테이블에서 모든 데이터 삭제.
DELETE FROM 학생;

UPDATE

UPDATE 테미블명
SET 컬럼명=값 또는 식
WHERE 조건

ex) 사원 테이블에서 사원번호 1234번의 부서번호를 3번으로 수정.
UPDATE EMPLOYEE
SET DNO=3
WHERE EMPNO=1234;

CREATE

CREATE TABLE [테이블명]
(속성명 data_type [NOT NULL] , ...,
PRIMARY KEY(기본키 속성명),
UNIQUE(대체키 속성명),
FOREIGN KEY(외래키_속성명, ...),
REFERENCES 참조테이블(기본키_속성명),
CONSTRAINT 제약조건명 CHECK(조건식));

ALTER

// 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;

// 컬럼 데이터 타입 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;

// 컬럼 삭제
ALTER TABLE 테이블명 DROP 컬럼명;

// 테이블명 변경
ALTER TABLE 이전테이블명 RENAME TO 새로운테이블명;

// 유저의 비밀번호 변경
ALTER USER 계정명 IDENTIFIED BY 신규비밀번호;

CREATE OR REPLACE 문

뷰(View)가 정의된 기본 테이블을 재정의 하고자 할 때 뷰를 삭제하지 않고 변경이 가능한 명령어.

  • 통상적으로 뷰를 삭제하고 다시 생성하면 되지만 삭제를 하는 순간 권한을 부여받아 참조하고 있던 계정의 권한도 회수되기 때문에 다시 권한을 재부여하는 절차가 필요
  • 기본 테이블의 재정의로 인한 관계의 단절을 해소하기 위해 사용
// 뷰(View)
CREATE OR REPLACE VIEW 뷰명

// 트리거(Trigger)
CREATE OR REPLACE TRIGGER 트리거명

// 프로시저(Procedure)
CREATE OR REPLACE PROCEDURE 프로시저명

// 사용자 정의함수(Function)
CREATE OR REPLACE FUNCTION 사용자정의함수명

데이터 제어어(DCL)

  • 무결성
    • COMMIT - 수행된 결과를 실제 물리적 디스크로 저장
    • ROLLBACK - 명령 수행 실패를 의미하며 수행된 결과를 원복 시킴
    • SAVEPOINT - 저장점 지정, 지정된 저장점 부터 현재까지 일부만 ROLLBACK 가능
  • 데이터 보안
    • GRANT - 데이터베이스 사용자에게 사용 권한 부여
    ex) 유저 user02가 user03에게 학생테이블 SELECT, DELETE 권한을 부여
    GRANT SELECT, DELETE ON 학생 TO user03;
    
    ex) 유저 user03가 다른 사람에게 권한을 줄 수도있음(WITH GRANT OPTION)
    GRANT SELECT, DELETE ON 학생 TO user03 WITH GRANT OPTION;
    
    • REVOKE - 데이터베이스 사용자에게 부여된 사용 권한 취소
    ex) user02 계정의 [학생] 테이블에 대한 SELECT, DELETE, UPDATE 권한을 회수
    REVOKE SELECT, DELETE, UPDATE ON 학생 FROM user02;
    

JOIN

  • INNER JOIN
    • 동등조인(EQUI JOIN) - 특정 칼럼을 비교하여 같은 값을 추출
    • 자연조인(NATURAL JOIN) - 두 테이블의 모든 칼럼을 비교하여 같은 컬럼명을 가진 모든 컬럼 값이 같은 경우를 추출
    • 교차조인(CROSS JOIN) - 조인 조건의 없는 모든 데이터의 조합을 추출
  • OUTER JOIN
    • 왼쪽 외부 조인(LEFT OUTER JOIN) - 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터 추출
    • 오른쪽 외부 조인(RIGHT OUTER JOIN) - 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터 추출
    • 완전 외부 조인(FULL OUTER JOIN) - 양쪽의 모든 데이터 추출

UNION

  • UNION - 여러 SQL문의 결과에 대한 합집합(중복 행 제거)
  • UNION ALL - 여러 SQL문의 결과에 대한 합집합(중복 행 제거하지 않음)
  • INTERSECTION - 여러 SQL문의 결과에 대한 교집합(중복 행 제거)
  • EXCEPT(MINUS) - 앞의 SQL문의 결과와 뒤의 SQL문의 결과 사이의 차집합 (중복 행 제거)

GROUP BY

테이블에서 특정 속성의 값이 같은 튜플을 모아 그룹을 만들고, 그룹별로 개수, 합계, 평균, 최소, 최대 값 등을 검색하기 위해 GROUP BY 를 사용한다.

SELECT [DISTINCT] 그룹핑 컬럽, 집계함수
FROM 테이블명
[WHERE 조건]
GROUP BY 그룹핑 컬럼
[HAVING 그룹 제한조건]
[ORDER BY 정렬대상 컬럼 [ASC|DESC] ];

- 어떤 조건을 만족하는 그룹들에 대해서만 집단 함수를 적용하도록 제한 할 때는 WHERE절이 아니라 
	HAVING 절을 사용함

서브쿼리

다른 sql문에 포함되어 WHERE절, FROM절, SELECT절에 사용되는 또 다른 sql문

트리거 (Trigger)

데이터베이스에 특정한 변경이 가해졌을 때(명시된 이벤트가 발생할 때마다) DBMS가 이에 대응해서 자동적으로 호출하는 일종의 프로시저를 말함

트리거 예제

SQL> CREATE OR REPLACE TRIGGER triger_test
       BEFORE
       UPDATE ON dept
       FOR EACH ROW
	   
	   BEGIN
        DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || : old.dname);
        DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || : new.dname);
     END;
     /

-- DBMS_OUTPUT.PUT_LINE을 출력
SQL> SET SERVEROUTPUT ON ; 

-- UPDATE문을 실행시키면.. 
SQL> UPDATE dept SET dname = '총무부' WHERE deptno = 30

-- 트리거가 자동 실행되어 결과가 출력된다. 
변경 전 컬럼 값 : 인사과
변경 후 컬럼 값 : 총무부

1 행이 갱신되었습니다.
반응형

'정보처리기사' 카테고리의 다른 글

9. 프로그래밍언어 활용  (0) 2022.10.20
8. 소프트웨어 개발보안 구축  (0) 2022.10.14
6. 애플리케이션 테스트 관리  (1) 2022.10.13
5. 화면 설계  (1) 2022.10.13
3. 통합 구현  (0) 2022.10.12