일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- jQuery값전송
- Hibernate
- jscalendar
- fullcalendar
- springflow
- 엔티티직접사용
- JQuery
- javaservlet
- 제너릭
- 페이징
- jQuery값전달
- JPQL
- 스프링데이터흐름
- jQueryUI
- joinfetch
- LIST
- 프로젝트생성
- Generic
- 대량쿼리
- namedQuery
- javascriptcalendar
- fetchjoin
- 자바서블릿
- calendar
- 벌크연산
- 제네릭
- values()
- paging
- 페치조인
- Today
- Total
가자공부하러!
데이터베이스(4) - SQL(JOIN, DML, DCL) 본문
8. 스토어드 프로시져(Stored Procedure)
1. SQL - DDL
https://dotheright.tistory.com/90#1
2. SQL - SELECT
https://dotheright.tistory.com/90#2
3. SQL - JOIN
1. JOIN의 개념
> 2개의 테이블에 대해 연관된 튜플들을 결합하여 하나의 새로운 릴레이션을 반환
> 일반적으로 FROM절에 기술한다.
ㄴ 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다.
2. INNER JOIN
> 일반적으로 EQUI JOIN과 NON-EQUI JOIN으로 구분
> EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방식이다.
- 중복된 속성을 제거하여 같은 속성은 한 번만 표기하는 방법을 NATURAL JOIN이라 한다.
- 연결고리가 되는 공통 속성을 JOIN 속성이라고 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --EQUI 조인 -- WHERE절을 이용한 EQUI JOIN의 표기 형식 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.속성명; -- NATURAL JOIN을 이용한 EQUI JOIN의 표기 형식 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 NATURAL JOIN 테이블명2; -- JOIN ~ USING절을 이용한 EQUI JOIN의 표기 형식 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 JOIN 테이블명2 USING(속성명); | cs |
> NON-EQUI JOIN
- JOIN 조건에 '='조건이 아닌 나머지 비교 연산자를 사용하는 JOIN 방법이다.
ㄴ >, <, <>, >=, <= 등
1 2 3 4 5 | --NON-EQUI 조인 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2, ... WHERE (NON-EQUI JOIN 조건); | cs |
3. OUTER JOIN
> 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기위한 JOIN 방법
> LEFT OUTER JOIN
- INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다.
1 2 3 4 5 6 7 8 9 | --LEFT OUTER JOIN 1 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; --LEFT OUTER JOIN 2 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.속성명(+); | cs |
> RIGHT OUTER JOIN
- INNER JOIN의 결과를 구한 후 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가
1 2 3 4 5 6 7 8 9 | --RIGHT OUTER JOIN 1 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; --RIGHT OUTER JOIN 2 SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명(+) = 테이블명2.속성명; | cs |
> FULL OUTER JOIN
- LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐놓은 것
- 좌측도 추가 우측도 추가
1 2 3 | SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; | cs |
4. SELF JOIN
> 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN을 하는 JOIN 방법
> 표기 형식
1 2 3 4 5 6 7 8 9 | --SELF JOIN 1 SELECT [별칭1.]속성명, [별칭2.]속성명, ... FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2 ON 별칭1.속성명 = 별칭2.속성명; --SELF JOIN 2 SELECT [별칭1.]속성명, [별칭1.]속성명, ... FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2 WHERE 별칭1.속성명 = 별칭2.속성명; | cs |
4. SQL - DML
1. DML ( Data Manipulation Language )
> 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
> DB사용자와 DBMS간의 인터페이스를 제공
> 유형 :
- INSERT : 테이블에 새로운 튜플을 삽입
- DELETE : 테이블에서 튜플을 삭제
- UPDATE : 테이블에서 튜플의 내용을 갱신한다.
2. INSERT
> 테이블에 새로운 튜플을 삽입
> 표기 형식
1 2 3 4 5 6 7 8 9 10 | INSERT INTO 테이블명 [ (속성명1, 속성명2, ... ) ] VALUES (데이터1, 데이터2, ... ); --<사원>테이블에 이름이 "이순신"이고, 부서가 "기획"인 사원 삽입 INSERT INTO 사원(이름, 부서) VALUES ('이순신', '기획'); --<사원>테이블에 있는 편집 부서의 모든 튜플을 --<편집부원(이름, 생일, 주소, 기본급)> 테이블에 삽입 INSERT INTO 편집부원(이름, 생일, 주소, 기본급) SELECT 이름, 생일, 주소, 기본급 FROM 사원 WHERE 부서='편집'; | cs |
3. DELETE
> 테이블에 있는 튜플들 중에서 특정 튜플을 삭제
> 표기 형식
1 2 3 4 5 6 7 8 | --표기 형식 DELETE FROM 테이블명 WHERE 조건; --<사원>테이블에서 이름이 "임꺽정"인 튜플을 삭제 DELETE FROM 사원 WHERE 이름 = '임꺽정'; --<사원>테이블의 모든 튜플을 삭제하는 SQL문 DELETE FROM 사원; | cs |
4. UPDATE
> 특정 튜플의 내용을 갱신할 때 사용
1 2 3 4 5 6 7 8 9 | --표기 형식 UPDATE 테이블명 SET 속성명=데이터[, 속성명=데이터, ...] WHERE 조건; --<사원> 테이블에서 홍길동의 주소를 "퇴계동"으로 갱신 UPDATE 사원 SET 주소='퇴계동' WHERE 이름='홍길동'; --<사원> 테이블에서 황진이의 부서를 "기획"으로 변경하고 기본급을 5 인상 UPDATE 사원 SET 부서='기획', 기본급=기본급+5 WHERE 이름='황진이'; | cs |
5. SQL - DCL
1. DCL ( Data Control Language )
> 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 용도로 사용
> DBA가 데이터 관리를 목적으로 사용
> DCL의 유형
- COMMIT : DB 조작 작업을 영구적으로 반영하여 완료
- ROLLBACK : DB 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구
- GRANT : DB 사용자에게 권한을 부여
- REVOKE : DB 사용자의 사용 권한을 취소
2. COMMIT / ROLLBACK
> COMMIT
- 트랜잭션의 모든 변경 내용들을 영구적으로 DB에 반영하는 명령어
ㄴ 트랜잭션? : DB의 작업단위 (하나의 논리적 기능을 수행하기 위한 일련의 연산 집합)
- 트랜잭션이 성공적으로 완료되면 수행된 모든 변경을 DB에 반영하여 완료(COMMINT)해야 한다.
ㄴ DB가 새로운 일관성 상태를 가지기 위함
> ROLLBACK
- 변경된 모든 내용들을 취소하고 DB를 이전 상태로 되돌리는 명령어
3. GRANT / REVOKE
> GRANT : 권한 부여를 위한 명령어
> 표기 형식 (사용자등급 지정 및 해제)
1 2 3 4 5 6 7 8 9 | --사용자 등급 지정 및 해제 GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호]; REVOKE 사용자등급 FROM 사용자_ID_리스트; --DB및 테이블 생성 권한 부여 예시 GRANT RESOURCE TO minhj; --DB 검색 권한 부여 예시 GRANT CONNECT TO minhj; | cs |
> 표기 형식(테이블 및 속성에 대한 권한 부여 및 취소)
1 2 3 4 5 6 7 8 9 | --테이블 및 속성에 대한 권한 부여 및 취소 GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION]; REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE]; --minhj에게 <고객>테이블에 대한 모든 권한과 권한부여 권한까지 부여하는 SQL문 GRANT ALL ON 고객 TO minhj WITH GRANT OPTION; --minhj에게 부여한 권한 중 UPDATE 권한을 부여할 수 있는 권한만 취소하는 SQL문 REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM minhj | cs |
- 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE 등
- WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한 부여
- GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소한다
- CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 부여한 권한들도 모두 취소
6. 뷰(VIEW)
https://dotheright.tistory.com/105#6
7. 내장 SQL
https://dotheright.tistory.com/105#7
8. 스토어드 프로시져(Stored Procedure)
https://dotheright.tistory.com/105#8
맨 위로
'공부 > 정보처리기사(실기)' 카테고리의 다른 글
데이터베이스(6) - 정규화(이상, 함수적 종속, 정규화) (0) | 2019.05.31 |
---|---|
데이터베이스(5) - SQL(VIEW, 내장SQL, 스토어드프로시저) (0) | 2019.05.30 |
데이터베이스(3) - SQL(DDL, SELECT) (0) | 2019.05.28 |
데이터베이스(2) - 관계형 데이터베이스와 관계 연산 (0) | 2019.05.25 |
데이터베이스(1) - 데이터베이스 기본 (0) | 2019.05.25 |