단원별로 문제의 수를 살펴보면 실기인 만큼 3,4단원의 비중이 늘어난 것을 볼수 있었습니다.
응시자 15,281명 중 합격자 4,235명으로 합격률 27.7% 2021년 1회차 보다는 합격률이 낮아진 시험입니다.
1) Ch 5. 네트워크
네트워크 기술에 관한 문제 입니다.
애드혹 네트워크 : 네트워크 장치를 필요로하지 않고 네트워크 토폴로지가 동적으로 변화되는 특징이 있으며 응용 분야로는 긴급 구조, 긴급 회의, 전쟁터에서의 군사 네트워크에 활용되는 네트워크
2) Ch 1. 소프트웨어 설계
UI에 관한 문제입니다.
CLI, Command Line Interface : 명령 문자열을 통해 시스템과 상호작용하는 UI로 DOS, Linux, 명령 프롬프트 등에서 사용된다. GUI, Graphic User Interface : 메뉴, 아이콘 등의 그래픽 요소를 통해 시스템과 상호작용하는 UI이다. Windows, mac OS 등에서 사용된다. NUI, Natural User Interface : 사람의 음성, 온도, 터치 등을 통해 시스템과 상호작용 하는 UI이다. 스마트폰, 지문 인식등에서 사용된다.
3) Ch 3. SQL
트랜잭션에 관한 문제입니다.
트랜잭션 : 한 개 이상의 데이터베이스를 조작하는 논리적인 연산의 집합 트랜잭션의 특성 (ACID) - 원자성 Atomicity : 모두 실행되거나 모두 실행되지 않아야 한다. - 일관성 Consistency : 트랜잭션을 마친 후에도 동일하게 오류가 발생하지 않아야 한다. - 고립성 Isolation : 트랜잭션 실행 중 다른 트랜잭션에 영향을 받지 않아야 한다 - 지속성 Durability : 트랜잭션의 결과는 항상 유지 보존되어야한다.
4) Ch 3. 논리 데이터베이스 설계
정규화에 관한 문제로 자주 출제된다.
정규화 : 데이터 모델링의 단계 중 가장 중요한 단계로써 논리 데이터 모델링을 상세화 하는 단계 - 정확성, 일치성, 단순성 ,비중복성, 안정성이 보장된다. - 중복되는 튜플이 없어 효과적인 데이터 표현 및 저장이 가능하다 - 비교적 간단한 연산자로 효과적인 연산이 가능하도록 구성한다 제1 정규형 : 도메인이 원자 값만 가지도록 분해한다. 제2 정규형 : 부분 함수 종속을 제거한다. [ 부분 함수 종속 = 기본키만으로는 해당 데이터를 식별할 수 없는 종속관계 ] 제3 정규형 : 이행적 함수 종속을 제거한다. 보이스 코드 정규형 : 결정자가 후보 키가 아닌 종속을 제거한다. [ 후보키 = 결정자가 유일성과 최소성을 만족시키는 키] 제4 정규형 : 다치 종속을 제거한다. 제5 정규형 : 후보키를 통하지 않은 조인 종속을 제거한다.
5) Ch 3. SQL
SQL문중 DML에 해당하는 수정 문제이다.
UPDATE ~ SET 구문으로 사용된다.
UPDATE 테이블명 SET 필드 = 값[, ...] WHERE 조건식;
6) Ch 3. SQL
SQL문중 DML에 해당하는 수정 문제이다.
//INNER JOIN : 일치하는 데이터만 조인
SELECT * FROM 학생 JOIN 과목 ON 학생.과목코드 = 과목코드.과목코드;
//LEFT JOIN : 왼쪽(학생)의 테이블 데이터는 전부 포함하고
//오른쪽(과목) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 LEFT JOIN 학생.과목코드 = 과목.과목코드;
//RIGHT JOIN : 오른쪽(학생)의 테이블 데이터는 전부 포함하고
// 왼쪽(학생) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 RIGHT JOIN 학생.과목코드=과목.과목코드;
~ JOIN ~ ON ~ 구문으로 사용된다.
8) Ch 5. 암호 기술
대칭키, 비대칭키 알고리즘에 관한 문제이다.
대칭키 방식 - DES,AES 비대칭키 방식 - RSA
DES ( Data Encryption Standard )
: 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘이다.
- 블록의 크기는 64비트, 키 길이는 56비트이다.
- 컴퓨터의 발전에 따라 해독이 가능해졌다.
AES ( Advanced Encryption Standard )
: 2001년 미국 NIST에서 발표한 개인키 암호화 알고리즘이다.
- DES의 한계를 보완한 것으로 블록 크기는 128비트, 키 길이는 128, 192, 256으로 분류된다.
RSA ( Rivest Shamir Adleman )
: 공개키 암호 알고리즘을 이용한 디지털 서명 기법으로, 공개키 기반 서명 알고리즘 중 가장 먼저 상용화 되고 보편화되어있는 알고리즘이다. 적절한 시간 내에 인수가 큰 정수의 소인수 분해가 어렵다는 점을 이용한 공개키 암호화 기법
SEED
: 한국인터넷진흥원에서 개발된 암호화 알고리즘이다.
- 128/256 비트의 고정키를 사용하고, 128/256 비트의 블록을 암호화하는 블록 암호 방식
ARIA ( Academy, Resaerch Institute, Agency )
: 국가보안기술연구소 (NSRI)가 주도하여 구현된 국가 암호화 알고리즘이다.
- SEED와 함께 전자 정부의 대국민 행정 서비스용으로 보급되고 있다.
ECC ( Elliptic Curve Crypto )
: 타원곡선과 임의의 곡선과의 교점 연산에서 정의되는 이산대수 문제의 어려움을 이용하는 암호 방식이다.
9) Ch 2. 어플리케이션 테스트
테스트 커버리지에 관한 문제이다.
테스트 커버리지 : 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
- 구문 (Statement) 커버리지 : 모든 명령문을 적어도 한번은 수행하는 커버리지 - 결정 (Decision) , 분기 (Branch) 커버리지 : 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행 - 조건(Condition) 커버리지 : 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지 - 조건/결정 커버리지 : 전체 조건식뿐만 아니라 개별 조건식도 참과 거짓 결과가 한 번씩 되도록 수행하는 커버리지 - 변경(Modified) 조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록 설계 - 다중 조건 커버리지 : 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
10) Ch 3. SQL
SQL문중 DDL에 해당하는 수정 문제이다.
//AND 비교
//국어와 영어 성적이 모두 80점 이상인 튜플 출력
SELETE * FROM 성적 WHERE 국어 >= 80 AND 영어 >= 80;
//OR 비교
//1반,3반,5반 의 튜플 출력
//IN : 조금더 간편하게 표현가능
SELECT * FROM 성적 WHERE 반="1반" OR 반="3반" OR 반="5반";
SELECT * FROM 성적 WHERE 반 IN ("1반", "3반", "5반");
//IS NULL 비교 : 필드가 비어있는 튜플 출력
SELECT * FROM 성적 WHERE 벌점 IS NULL;
//LIKE 비교 : 이름이 박으로 시작되거나 은으로 끝나는 튜플 출력
SELECT * FROM 성적 WHERE 이름 LIKE 박% OR &은 ;
//BETWEEN 비교
SELECT * FROM 성적 WHERE 평균 BETWEEN 80 AND 90;
11) Ch 1. 어플리케이션 설계
1회에서도 다루었던 문제로 응집도에대한 이해 문제이다.
결합도 Coupling - "내공외제스자" : 모듈 사이의 연관 관계에 의해 모듈이 서로를 의존하는 정도를 의미한다. - 결합도가 약할수록 의존성이 약해지기 때문에 모듈의 독립성이 높아진다. 내용 결합도 Content Coupling : 모듈이 다른 모듈의 내부 기능과 데이터를 직접적으로 사용하는 경우 공통 결합도 Common Coupling : 모듈이 다른 모듈의 내부 데이터를 참조하는 경우 - 인수로 받은 매개변수가 아닌 호출 모듈의 내부 전역 변수를 제어 Call By Reference 방식 외부 결합도 External Coupling : 두 모듈이 외부에 선언된 변수를 참조하는 경우 제어 결합도 Control Coupling : 모듈 간의 인터페이스로 값만 전달되는 것이 아니라 제어 요소도 전달하는 경우 스탬프 결합도 Stamp Coupling : 두 모듈이 동일한 자료구조를 부분적으로 공유하는 경우 자료 결합도 Data Coupling : 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해 상호작용이 일어남 - Call By Value 방식 응집도 Cohesion - "우논시절교순기" : 모듈 내부 요소들이 밀접한 관계를 맺고 있는 정도를 의미한다. 우연적 응집도 Coincidental Cohesion : 서로 관련 없는 요소로 구성된 경우 논리적 응집도 Logical Cohesion : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들 시간적 응집도 Temporal Cohesion : 연관성은 없지만 특성 시기에 함께 처리해야 하는 기능들을 묶어놓은 경우 절차적 응집도 Procedural Cohesion : 하나의 문제를 해결하기 위해 순차적(순서대로)으로 수행되는 경우 교환적 응집도 Communication Cohesion : 모듈의 기능들이 동일한 입출력 데이터를 사용하여 서로 다른 기능을 수행하는 경우 순차적 응집도 Sequential Cohesion : 모듈의 기능 수행의 결과물이 그다음 기능 수행의 입력 데이터로 사용되는 경우 기능적 응집도 Functional Cohesion : 모듈 내부의 모든 기능 요소들이 단일 문제를 해결하는데 수행
축적 교환 방식 중에서 패킷교환 방식이다. - 가상 회선 패킷 교환 방식 : 패킷들을 전송하기 전에 미리 가상 경로를 확보하여 전송하는 방식이다. 제어 패킷으로 경로를 확보한 다음 나머지 패킷들이 확보된 경로로 전달되는 방식이다.
- 데이터그램 패킷 교환 방식 : 경로를 확보하지 않고 독립적으로 자유롭게 전송하는 방식으로 제어 패킷을 사용하지 않는다. 송수 신국 사이에 논리적 연결이 설정되지 않는다.
추가적인 정보로는 회선교환 방식과 축적 교환 방식이 존재한다. - 회선 교환 방식 ( Circuit Switching ) : 송수신 단말 장치 사이에서 데이터를 전송할 때마다 통신 경로를 설정하여 데이터를 교환하는 방식이다. 장점 ) 통신 경로 접속 시간이 매우 짧다. 통신 중 전송 제어 절차 정보의 형식에 제약을 받지 않는다.단점 ) 통신하는 양측의 시스템이 동시에 데이터 교환 준비가 되어있어야 한다. 접속되어 있는 동안은 두 시스템 간의 통신 회선이 독점되어있어 효율이 떨어진다. - 축적 교환 ( Store and forward Switching ) : 전달된 데이터를 버퍼에 일시적으로 저장한 후, 에러 검출, 변환 등과 같은 처리를 완전히 수행한 뒤에 목적지로 전달하는 방식이다.
응시자 20,125명 중 합격자 7,947명으로 합격률 39.5% 2021년 1,2,3회차 중 가장 높은 합격률을 보인 시험입니다.
1번) Ch 5. 통신 프로토콜 - IP 계층
IP 계층에 관한 내용으로 답은 RARP였습니다.
ARP ( Address Resolution Protocol ) : 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소인 MAC로 번역해주는 프로토콜 - 네트워크 계층에서 작동합니다.
ICMP ( Internet Control Messge Protocol ) : 호스트나 라우터에서 IP 패킷을 처리할때 발생하는 오류 상태 통지 및 예상치 못한 상황에 대한 정보를 제공할 수 있게 하는 프로토콜
2번, 16번) Ch 3. 논리 데이터베이스
데이터 모델링 정의에 관한 내용을 다루었습니다.
16번 문제 해설 - 구조 : 논리적으로 표현된 데이터의 구조 - 연산 : 데이터 구조에서 삽입, 삭제, 변경하는 기능 - 제약 조건 : 데이터 구조에서 허용할 수 있는 관계를 명세
2번 문제 해설 - 개념적 설계 : 정보 내용에 대한 요구 조건을 만족시키면서 쉽게 이해할 수 있는 정보 구조를 설계하는 단계. E-R 모델로 표현하는 방법이 대표적이다. 개념적 스키마 모델링, 트랜잭션 모델링 - 논리적 설계 : 개념 데이터 모델을 상세화 하여 논리적인 데이터 집합, 관리 항목, 관계 등을 정의하는 단계이다. DBMS에 맞는 데이터베이스 스키마 및 트랜잭션 인터페이스를 설계와 정규화 과정을 수행한다. - 물리적 설계 : 논리 데이터 모델을 DBMS의 특성 및 성능을 최대한 고려하여 구체화시키는 단계이다. 레코드 양식, 데이터 구조, 응답 시간, 저장 공간 등을 설계한다.
3번) Ch 1. 요구사항 분석
요구사항을 분류에 대한 설명입니다.
- 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항이다. - 비기능적 요구사항 : 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항이다.
4번) Ch 2. 통합구현
웹 서비스 연동과 표준에서 언급된 내용입니다.
SOAP, Simple Object Access Protocol : 웹 서비스에서 사용되고 보편적으로 확장성 있는 XML 기반 메세지 프로토콜 UDDI, Universal Description, Discover and Integration : 필요한 웹 서비스 찾을 수 있는 웹 서비스 레지스트리 WSDL, Web Service Description Language : 웹 서비스를 기술하기 위한 표준 형식이다. XML 기반으로 설명해 주는 언어
5) Ch 4. Python
python 반복문에 대한 이해 문제입니다.
class good :
li = ["seoul", "kyeonggi","inchon","daejeon","daegu","pusan"]
g = good()
str01 = ''
for i in g.li:
str01 = str01 + i[0]
print(str01)
for 반복문에서 li 를 받아와서 탐색하는 i 들 중에서 첫글자만 가져와서 str01에 저장하는 프로그램으로 앞글자들을 따와서 skiddp 가 출력됩니다.
6) Ch 3. 튜플
SQL 출력에 대한 이해 문제입니다.
SELECT COUNT(*) FROM 급여
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
앞의 조건을 만족하는 튜플은 EMPNO=200, SAL=3000 뒤의 조건을 만족하는 튜플 또한 EMPNO=200, SAL=30000 으로 단 하나의 튜플만 만족하므로 답은 1입니다.
7) Ch 4. JAVA
Java 자료형과 출력에 대한 이해 문제입니다.
public class QfranTest{
public static void main(String []args){
int a[][] = {{45, 50, 75}, {89}};
System.out.println(a[0].length);
System.out.println(a[1].length);
System.out.println(a[0][0]);
System.out.println(a[0][1]);
System.out.println(a[1][0]);
}
}
a[0].length, a[1].length는 {40,50,75}으로 3, {89}으로 1이 출력되고 {40,50,75}는 a[0][0], a[0][1], a[0][2]이므로 45,50,75 이 출력된다.
9) Ch 2. 블랙박스 테스트
블랙박스 테스트에 관한 이해 문제입니다.
화이트박스 테스트 : 모든 소스 코드의 논리적인 경로를 테스트 케이스로 확인하는 방법이다. - 기초 경로 테스트(Basic Path Test) : 논리적 순환 복잡도를 측정 - 조건 검사(Condition Testing) : 소스코드의 논리적인 조건을 테스트 - 루프 검사(Loop Testing) : 소스 코드의 반복 구조를 중점적으로 테스트 - 데이터 흐름 검사(Data Flow Testing) : 소스 코드의 변수 정의, 사용을 중점적으로 테스트 블랙박스 테스트 : 요구사항 명세서를 기반으로 구현된 기능을 테스트 케이스로 설계하는 방법, 기능 테스트라고도 한다. - 동치 분할 검사 : 입력 조건에 유효한 값과 무효한 값을 균등하게 하여 테스트 케이스를 설계 - 경계값 분석 : 입력 조건의 경계에서 오류가 발생할 확률이 높다는 점을 이용하여 경계값을 테스트케이스로 사용 - 원인-효과 그래프 검사 : 입력 데이터와 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 설계 - 오류 예측 검사 : 과거의 경험이나 확인자의 감각에 의존하여 테스트 케이스를 설계 - 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 테스트
10) Ch 2. 단위 테스트, V-모델
애플리케이션 테스트에 관한 문제입니다.
단위 테스트 : 코딩이 완료된 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트 초점에 맞춰 테스트하는 것이다. 명세 기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트를 진행 구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 진행 ※ 일반적으로 단위테스트 단계에서는 구조기반 테스트를 진행하고, 명세 기반 테스트는 잘 진행하지 않는다. 통합 테스트 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 단계이다. - 점증적/비점증적 방식, 하향식 통합테스트, 상향식 통합테스트 - 하향식 테스트 : 주요 제어 모듈의 하위 모듈은 스텁(Stub)으로 대체 - 상향식 테스트 : 상위 모듈에서의 데이터 입출력을 확인하기 위한 드라이버(Driver) 작성 시스템 테스트 : 개발된 소프트웨어가 해당 컴퓨터 시스템에 완벽하게 수행되는가를 점검하는 테스트 - 기능적 요구사항, 비기능적 요구사항으로 테스트 진행 인수테스트 : 개발이 완료된 소프트웨어에 대해 사용자 요구사항 충족 여부를 사용자가 직접 테스트하는 것 - 알파 테스트 : 개발자의 장소에서 제한된 환경에서 사용자가 개발자 앞에서 행하는 테스트 - 베타 테스트 : 다수의 사용자에게 제한되지 않은 환경에서 프로그램을 테스트하는 방법
12) Ch 4. 운영체제 중 프로세스
프로세스에 관한 이해 문제 입니다.
PCB ( Process Control Block ) : 운영체제 프로세스에 대한 정보를 기록한 테이블 - 문맥 교환 ( Context Switching ) : CPU가 할당되는 프로세스를 변경하기 위해 현재의 프로세스 상태를 저장하고 이후 작업할 프로세스를 CPU에 할당하여 실행하는 작업 - Time Slice가 작을수록 문맥 교환수와 인터럽트 횟수, 오버헤드가 증가한다. IPC ( InterProcess Communicatioin ) : 협력하는 프로세스들 사이에서 서로 데이터를 주고받는 행위 - 메시지 교환 : 메모리 보호를 위해 커널이 대신 데이터를 전달 - 메모리 공유 : 공유 메모리 생성, 성능이 우수하지만 동기화 문제 발생 스레드 ( Thread ) : 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위이다. - 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다. - 여러 개의 스레드를 생성하여 병행성을 증진시킬 수 있다. 처리율을 높일 수 있다. - 사용자 수준의 스레드 : 사용자가 만든 라이브러리를 사용하여 스레드를 운용, 속도는 빠르지만 구현이 어려워 - 커널 수준의 스레드 : 운영체제의 커널에 의해 스레드를 운용, 구현이 쉽지만 속도가 느리다.
13) Ch 2. 통합구현도구
인터페이스 기술 표준에 관한 문제입니다.
EAI ( Enterprise Application Integration ) : 서로 다른 기종의 시스템 간의 연동을 가능하게 해주는 전사적 애플리케이션 통합환경이다. - 어댑터를 이용해 메시지 변환이 가능하여 서로 다른 코드나 프로토콜을 사용하는 시스템 간 통신이 가능하다. ex) Point-to-Point, Hub & Spoke, Message Bus(ESB) - Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식이다. - ESB : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식이다.
EAI/ESB ( Hybrid) : 그룹 내에서는 Hub & Spoke 방식을 사용하고, 그룹 간에는 Message Bus 방식을 사용하는 표준 통합 기술이다.
19) Ch 1. 애플리케이션 설계
모듈의 성능평가에 관한 이해 문제입니다.
결합도 Coupling - "내공외제스자" : 모듈 사이의 연관 관계에 의해 모듈이 서로를 의존하는 정도를 의미한다. - 결합도가 약할수록 의존성이 약해지기 때문에 모듈의 독립성이 높아진다. 내용 결합도 Content Coupling : 모듈이 다른 모듈의 내부 기능과 데이터를 직접적으로 사용하는 경우 공통 결합도 Common Coupling : 모듈이 다른 모듈의 내부 데이터를 참조하는 경우 - 인수로 받은 매개변수가 아닌 호출 모듈의 내부 전역 변수를 제어 Call By Reference 방식 외부 결합도 External Coupling : 두 모듈이 외부에 선언된 변수를 참조하는 경우 제어 결합도 Control Coupling : 모듈 간의 인터페이스로 값만 전달되는 것이 아니라 제어 요소도 전달하는 경우 스탬프 결합도 Stamp Coupling : 두 모듈이 동일한 자료구조를 부분적으로 공유하는 경우 자료 결합도 Data Coupling : 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해 상호작용이 일어남 - Call By Value 방식
1) PRIMARY KEY : 테이블의 기본기 정의로 NOT NULL, UNIQUE 제약을 포함한다.
2) FOREIGN KEY : 테이블의 외래키 정의, 참조 무결성 위배시 처리 옵션 지정 가능
3) UNIQUE : 테이블의 유일키 정의
4) NOT NULL : 필수 입력 항목에 대해 설정
5) CHECK : 개발자가 정의하는 제약 조건
//Table 생성의 예시
CREATE TABLE 학생(
학번 INT PRIMARY KEY,
이름 CHAR NOT NULL,
연락처 CHAR(15) DEFALUT '비공개'
);
2) ALTER ( 태이블 변경)
//필드 추가 ADD
ALTER TABLE 테이블명 ADD 필드명 데이터타입 [위치옵션];
//필드 변경 MODIFY
ALTER TABLE 학생 MODIFY 이름 CHAR(15);
//데이터명 변경 RENAME COLUMN 이름 -> 학생명
ALTER TABLE 학생 RENAME COLUMN 이름 TO 학생명;
//필드 삭제 DROP
ALTER TABLE 학생 DROP 연락처;
//제약조건 추가 ADD CONSTRAINT
ALTER TABLE 학생 ADD CONSTRAINT 제약조건명 제약조건(필드명);
//제약조건 활성화 ENABLE CONSTRAINT
ALTER TABLE 학생 ENBLE CONSTRAINT 제약조건명;
//제약조건 삭제
ALTER TABLE 학생 DROP CONSTRAINT 제약조건명;
3) DRPO ( 테이블 구조 삭제)
//테이블 삭제
DROP TABLE 학생 [삭제옵션];
DML ( Data Manipulation Language )
- 데이터 삽입, 수정, 삭제, 조회
- Insert Update, Delete, Select
1) INSERT
INSEART INTO 테이블명 (필드[, ...]) VALUES ( 값[, ...] );
2) UPDATE
UPDATE 테이블명 SET 필드 = 값[, ...] WHERE 조건식;
3) DELETE
DELETE FROM 테이블명 WHERE 조건식;
4) SELECT
SELECT [DISTINCT] 필드[, ...] FROM 테이블명
[ [WHERE 조건식 | GROUP BY 필드 [HAVING 조건식] ]
[ ORDER BY 필드 [ASC | DESC]];
DISTINCT : 중복 튜플을 제거하여 조회한다
* : 모든 필드를 조회한다
GROUP BY : 지정된 필드의 데이터를 기준으로 튜플을 그룹화한다.
HAVING BY : 그룹별 조건을 만족하는 튜플들을 조회한다.
ORDER BY : 지정된 필드를 기준으로 튜플을 정렬한다 (ASC 오름차순, DESC 내림차순)
5) SELETE ~ AS
//집계함수와 AS
// 성적 테이블에서 영어 점수의 합계를 출력
SELECT SUM(영어점수) AS '영어 합계' FROM 성적;
COUNT( ) : 개수
SUM ( ) : 합계
AVG( ) : 평균
MAX ( ) : 최대값
MIN( ) : 최소값
STDEV( ) : 표준편차
VAR ( ): 분산
6) SELECT 조건식 지정
//AND 비교
//국어와 영어 성적이 모두 80점 이상인 튜플 출력
SELETE * FROM 성적 WHERE 국어 >= 80 AND 영어 >= 80;
//OR 비교
//1반,3반,5반 의 튜플 출력
//IN : 조금더 간편하게 표현가능
SELECT * FROM 성적 WHERE 반="1반" OR 반="3반" OR 반="5반";
SELECT * FROM 성적 WHERE 반 IN ("1반", "3반", "5반");
//IS NULL 비교 : 필드가 비어있는 튜플 출력
SELECT * FROM 성적 WHERE 벌점 IS NULL;
//LIKE 비교 : 이름이 박으로 시작되거나 은으로 끝나는 튜플 출력
SELECT * FROM 성적 WHERE 이름 LIKE 박% OR &은 ;
//BETWEEN 비교
SELECT * FROM 성적 WHERE 평균 BETWEEN 80 AND 90;
7) 그룹화
//남,여 성별에 따른 튜플의 개수를 출력
SELECT 성별, COUNT(*) FROM 성적 GROUP BY 성별;
//평균이 80 이상인 성별에 따른 튜플의 개수 출력
SELECT 성별 , COUNT (*) FROM 성적 GROUP BY 성별 HAVING BY 평균 >= 80;
8) 조인(JOIN)
//INNER JOIN : 일치하는 데이터만 조인
SELECT * FROM 학생 JOIN 과목 ON 학생.과목코드 = 과목코드.과목코드;
//LEFT JOIN : 왼쪽(학생)의 테이블 데이터는 전부 포함하고
//오른쪽(과목) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 LEFT JOIN 학생.과목코드 = 과목.과목코드;
//RIGHT JOIN : 오른쪽(학생)의 테이블 데이터는 전부 포함하고
// 왼쪽(학생) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 RIGHT JOIN 학생.과목코드=과목.과목코드;
DCL Data Control Language
1) GRANT 형식
GRANT [ 권한 ] TO [ 사용자 ] [WITH GRANT / ADMIN OPTION ]
PUBLIC : 모든 사용자에게 권한 부여
WITH GRANT OPTION : 받은 권한은 다른 사용자에게 부여 가능 다른 사용자에게 부여된 권한 회수가능
WITH ADMIN OPTION : 받은 권한을 다른 사용자에게 부여가능하나 또 다른 사용자에게 부여된 권한 회수 불가능
2) REVOKE
REVOKE [ 권한 ] FROM [ 사용자 ];
사용자 그룹 관리는 역할 기반 접근 제어 방식을 사용한다.
트랜잭션
: 한 개 이상의 데이터베이스를 조작하는 논리적인 연산의 집합
트랜잭션의 특성 (ACID)
원자성 Atomicity : 모두 실행되거나 모두 실행되지 않아야 한다.
일관성 Consistency : 트랜잭션을 마친 후에도 동일하게 오류가 발생하지 않아야 한다.
고립성 Isolation : 트랜잭션 실행 중 다른 트랜잭션에 영향을 받지 않아야 한다
지속성 Durability : 트랜잭션의 결과는 항상 유지 보존되어야한다.
트랜잭션 제어어 TCL, Transaction Control Language
: 트랜잭션의 흐름을 변경하는 것이 아니라 트랜잭션의 결과를 수용하거나 취소하는 것을 의미한다.
활동 Active : 트랜잭션이 실행을 시작하였거나 실행 중인 상태
부분 완료 Partially Committed : 마지막 연산을 끝내고 데이터베이스에 실행 결과를 적용하기 직전의 상태
완료 Committed : 연산을 완료하고 연산의 결과를 데이터베이스에 적용한 상태
실패 Failed : 연산 실행 중 오류에 의해 더 이상 연산이 진행될 수 없는 상태
철회 Aborted : 트랜잭션을 실패하여 트랜잭션 실행 전 상태로 복구 된 상태, savepoint 지정을 통해 복구할 위치를 지정
실행 취소 Undo : 변경되었던 데이터를 취소하고 원래의 내용으로 복원
다시 실행 Redo : 실행취소를 통해 원래 내용으로 변경되었던 데이터를 원래 내용으로 복원한다.