일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch12
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- 자바의 정석 기초편 ch6
- @Aspect
- 자바의 정석 기초편 ch8
- 2024 정보처리기사 수제비 실기
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch13
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch14
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch2
- 타임리프 - 기본기능
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch3
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch9
- 코드로 시작하는 자바 첫걸음
- jpa - 객체지향 쿼리 언어
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 로그인 처리
- 스프링 입문(무료)
- 자바의 정석 기초편 ch1
- 스프링 mvc2 - 타임리프
- jpa 활용2 - api 개발 고급
- Today
- Total
나구리의 개발공부기록
3장 - SQL응용 핵심 요약 본문
2024년도 시나공 필기 책 내용 정리
섹션19. SQL의 개념
1. DDL (Data Define Language, 데이터 정의어)
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
명령어 | 기능 |
CREATE | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함 |
ALTER | TABLE에 대한 정의를 변경하는데 사용함 |
DROP | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 학제함 |
2. DML (Data Manipulation Language, 데이터 조작어)
- 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
명령어 | 기능 |
SELECT | 테이블에서 조건에 맞는 튜플을 검색함 |
INSERT | 테이블에 새로운 튜플을 삽입함 |
DELETE | 테이블에서 조건에 맞는 튜플을 삭제함 |
UPDATE | 테이블에서 조건에 맞는 튜플의 내용을 변경함 |
3. DCL (Data Control Language, 데이터 제어어)
- 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용되는 언어
명령어 | 기능 |
COMMIT | 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료 되었음을 관리자에게 알려줌 |
ROLLBACK | 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함 |
GRANT | 데이터베이스 사용자에게 사용 권한을 부여 |
REVOKE | 데이터베이스 사용자의 사용 권한을 취고 |
섹션20. DDL
1. CREATE TABLE : 테이블을 정의하는 명령문
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFUALT 기본값][NOT NULL], ...
[, PRIMARY KEY(기본키_속성명, ...)]
[, UNIQUE(대체키_속성명, ...)]
[, FOREIGN KEY(외래키_속성명, ...)]
[REFERENCES 참조테이블(기본키_속성명,...)]
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명][CHECK (조건식)]);
- 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부를 지정함
- PRIMARY KEY : 기본키로 사용할 속성 또는 속성의 집합
- CHECK : 속성 값에 대한 제약 조건을 정의
2. ALTER TABLE : 테이블에 대한 정의를 변경하는 명령문
ALTER TABLE 테이블명 ADD 속성명 데이터_타입[DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
- ADD : 새로운 속성(열)을 추가
- ALTER : 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN : 특정 속성을 삭제할 때 사용
3. DROP : 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASECADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거, 즉 주 테이블의 데이터 제거 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건을 설정하기 위해 사용됨
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소함
섹션21. DCL
1. GRANT / REVOKE
- GRANT : 사용자 권한 부여
- REVOKE : 사용자 권한 취소
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
2. ROLLBACK
- 아직 COMMIT 되지 않은 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어
섹션22. DML
1. 삽입문 (INSERT INTO ~) : 기본 테이블에 새로운 튜플을 삽입할 때 사용
INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES (데이터1, 데이터2, ...);
- 대응하는 속성과 데이터는 개수과 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음
2. 삭제문 (DELETE FROM ~ ) : 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용
DELETE FROM 테이블명 [WHERE 조건];
- 모든 레코드를 삭제할 때는 WHERE절을 생략
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름
3. 갱신문(UPDATE ~ SET ~) : 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용
UPDATE 테이블명 SET 속성명 = 데이터[, 속성명 = 데이터, ...]
[WHERE 조건];
섹션23. DML - SELECT - 1
1. 일반 형식 및 기본 검색
SELECT [PREDICATE][테이블명.]속성명1, [테이블명.]속성명2, ...
FROM 테이블명,[테이블명,...];
- SELECT절
- PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술
- DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색
- 속성명 : 검색하여 불러올 속성(열) 및 수식들을 지정
- PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술
- FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술
2. 조건 연산자
- 논리 연산자 : NOT, AND, OR
- LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용
- * 또는 % : 모든 문자를 대표
- _ : 문자 하나를 대표
- # : 숫자 하나를 대표
3. 조건 지정 검색
SELECT [테이블명.]속성명1, [테이블명.]속성명2,...]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건];
- WHERE 절에 조건을 지정하여 조건에 만족하는 튜플만 검색
- NULL 값의 사용
- 주소가 NULL인 자료만 검색, ex) WHERE 주소 IS NULL
- 주소가 NULL이 자료만 검색, ex) WHERE 주소 IS NOT NULL
- BETWEEN 연산자의 사용
- 생일이 '01/09/69' 에서 '10/22/73' 사이인 자료만 검색, ex) WHERE 생일 BETWEEN #01/09/69# AND #10/22/73#;
4. 정렬 검색 : ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색
SELECT [테이블명.]속성명1, [테이블명.]속성명2,...]
FROM 테이블명[,테이블명,...]
[WHERE 조건]
[ORDER BY 속성명 [ASC | DESC]];
- 속성명 : 정렬의 기준이 되는 속성명을 기술
- [ASC|DESC] : ASC - 오름차순, DESC - 내림차순, 생략 시 오름차순으로 지정 됨
5. 하위 질의 : 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용
# 취미가 나이트댄스인 사원의 이름과 주소를 검색
SELECT 이름, 주소 FROM 사원
WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미 = '나이트댄스');
섹션24. DML - SELECT - 2
1. 그룹 지정 : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정
SELECT [테이블명.]속성명, [테이블명.]속성명, ...
FROM 테이블명 [, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건];
- GROUP BY절
- 특정 속성을 기준으로 그룹화하여 검색할 때 사용
- 일반적으로 GROUP BY 절은 그룹 합수와 함께 사용됨
- HAVING절 : GROUP BY와 함께 사용되며 그룹에 대한 조건을 지정
2. 그룹 함수
- COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
- SUM(속성명) : 그룹별 합계를 구하는 함수
- AVG(속성명) : 그룹별 평균을 구하는 함수
- MAX(속성명) : 그룹별 최대값을 구하는 함수
- MIN(속성명) : 그룹별 최소값을 구하는 함수
3. 집합 연산자를 이용한 통합 질의
집합 연산자 | 설명 | 집합 종류 |
UNION | 두 SELECT 문의 조회 결과를 통합하여 출력, 중복 행은 한번만 출력 | 합집합 |
UNION ALL | 두 SELECT 문의 조회 결과를 통합하여 출력, 중복 행도 모두 출력 | |
INTERSECT | 두 SELECT 문의 조회 결과 중 공통된 행만 출력 | 교집합 |
EXCEPT | 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력 | 차집합 |
섹션25. DML - JOIN
1. INNER JOIN
SELECT [테이블명1.]속성명, [테이블명2.]속성명,...
FROM 테이블명1, 테이블명2 ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
/* <학생> 테이블과 <학과> 테이블에서 학과코드 값이 같은 튜플을 JOIN하여
학번, 이름, 학과코드, 학과명을 출력하는 SQL문을 작성 */
SELECT 학번, 이름, 학생.학과코드, 학과명
FROM 학번, 학과
WHERE 학번.학과코드 = 학생.학과코드;