정보처리기사 실기 / 요약 - 쿼리, 언어
문법 위주로 짧게 정리
프로그래밍 언어
SQL 문법
두 요약 전부 합쳐서 진짜최종파이널 요약 한번 더 작성할 예정
기본
10진수 -> 2진수 변환
- 10진수 값을 2로 나누고 몫부터 나머지 순서로 읽음
- ex) 13을 2로 나눔 -> 몫1, 나머지 아래에서 위로 101 = 1101
2진수 -> 10진수 변환
- 2진수 값을 2^자리수1 + 2^자리수2 … (0 = 0)
- ex) 1101을 2의 각 자리수 승으로 -> 2^3 + 2^2 + 0 + 2^0 = 8 + 4 + 0 + 1 = 13
아스키 코드
1
2
3
4
5
6
아스키 코드 (10진수)
0 = NULL
32 = ' ' (Space)
48 = 0 ~
65 = A ~
97 = a ~
C
기본 구조 = NULL = \0
전처리기
- #include = import
- #define A 5 » A = 5 (전역 변수)
포인터 변수
- ‘*’ 은 저장된 값 지정(포인터) / ‘&’ 은 주소값 지정
- int* pt = &n = 포인터 변수 pt에 n의 주소값 저장
- *&pt = pt « pt의 주소값(&)에 저장된 값(*)
포인터 배열
- ‘*’ 은 저장된 값 지정(포인터) / ‘&’ 은 주소값 지정
- 배열의 i번째 주소 = 배열+i == &배열[i];
- 배열의 i번째 값 = *(배열+i) == *배열[i] == 배열[i];
- a가 배열인 경우
- a[0] = 0번째 인덱스의 값 / &a[0] = a의 0번째 주소의 값
- 주소 값 호출 시 String 타입 배열의 경우 NULL 앞까지 출력
- ex) char a[16] = “hello world” « printf(“%s”, &a[6]) 함수 사용, 출력 = world
구조체 포인터
- 구조체 = 객체
- 구조체에 포인터로 접근 시 -> 사용
- struct Student s = {‘Female’, 21}
- struct Student *p = &s 인 경우
- ex) p -> gender, p -> age « &s 라는 주소에 저장된 값에 p를 통해 접근
함수 포인터
- 리턴타입 (*함수_포인터)(함수 파라미터);
- 함수 주소 저장, 해당 주소 함수 호출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
void fn1() {
printf("fn1 함수\n");
}
int fn2(int a) {
printf("fn2 함수: %d\n", a);
return 0;
}
void main() {
void (*pf1)(); // 함수 포인터 선언만
int (*pf2)(int); // 함수 포인터 선언만
fn1();
fn2(5);
pf1 = fn1; // pf1 함수 포인터에 fn1 저장
pf2 = fn2; // pf2 함수 포인터에 fn2 저장
pf1();
pf2(2);
}
// 출력
// fn1 함수
// fn2 함수: 5
// fn1 함수
// fn2 함수: 2
연산자 우선순위
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
// 연산자 우선순위 위에서 아래로 (생략 포함)
x++
++x
!
~
*
/
%
+
-
<<
>>
<
<=
>
>=
==
!=
&
^
|
&&
||
? a:b
=
+=
-=
*=
/=
%=
시프트 연산자
- 10진수를 2진수로 변환 필요
- « : 왼쪽 값을 오른쪽 값만큼 비트를 왼쪽으로 이동
- » : 왼쪽 값에 오른쪽 값만큼의 부호 비트를 채우면서 오른쪽으로 이동
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#includ <stdio.h>
void main() {
int x = 11;
printf("%d", x<<3);
printf(" %d", x>>1);
}
// 출력
// 88 5
// 해석
/*
* x<<3
* 11을 2진수로 변환 = 1011
* 왼쪽으로 3비트 이동 = 1011000
* 1011000을 다시 10진수로 변환 = 2^6 + 2^4 + 2^3 = 88
*/
/*
* x>>1
* 11을 2진수로 변환 = 1011
* 오른쪽으로 1비트 이동 = 101
* 101을 다시 10진수로 변환 = 2^2 + 1 = 5
*/
비트 연산자
- ^ : 두 값을 비트로 연산하여 서로 다르면 1, 같으면 0
- ex) 12 ^ 10 = 1100 ^ 1010 = 0110 = 6
- ~ : +-를 반대로 변경 후 -1
- ex) ~12 = -12 - 1 = -13
switch 문
- break 만날 때까지 진행
do while 문
- do 내부 최초 1회 실행 후 while
자바
상속
- 오버로딩 : 메서드 이름 동일, 매개변수 다르게
- 오버라이딩 : 상위 클래스의 메서드를 하위 클래스에서 재정의 (덮어쓰기)
스레드
- Thread 클래스 상속
- ex) 최초 인스턴스화 시 Thread t1 = new Main(); 이후 Thread t2 = new Thread(new Main());
- Runnable 인터페이스 상속
- ex) 최초 인스턴스화 시 Thread t1 = new Thread(new Main()); 이후 동일
파이썬
기본 구조
- 함수, 클래스 먼저 정의 그 다음 실행 코드
- 세미콜론 X, 들여쓰기로
- 주석은 #
자료형
- 논리 = True / False
- 시퀀스 자료형 : 순서 O
- List
- Tuple : 초기 선언 값에서 변경 불가
- 비시퀀스 자료형 : 순서 X
- Dictionary : 자바의 HashMap
- Set : 중복 X, 값 한번에 추가 가능(update([값1, 값2, 값3…]))
입출력
- print() = 개행 O
- print(문자, end=’’) = 개행 X
- input() « 입력 (숫자인 경우 eval() 함수로 숫자로 변환해야함)
연산자
- 증감 연산자 없음
- 스왑 연산자 : 콤마를 기준으로 두 값 변경 (a, b = b, a)
- // : 나눈 뒤 몫 출력
- ** : 지수 연산
조건문
- if 조건:
- elif 조건:
- else:
for문
- for i in range(시작, 종료, 스텝):
for each 문
- for i in t:
함수
- def 함수명(변수명)
람다함수
- map(함수, 리스트) : 리스트 요소를 함수에 전달하여 반복 수행
- filter(함수, 리스트) : 리스트 요소를 함수에 전달하여 조건이 참인 값 리턴
클래스
- 클래스 내부의 메서드의 경우 첫번째 매개변수는 무조건 self 키워드
- ex) def setS(self, a):
접근 제어자
- protected = _명칭
- private = __명칭
상속
- 오버로딩 없음
- 오버라이딩 : 메서드 이름 같음, 매개변수 같음, 타입 같음 (super로 상위 접근)
SQL 문법
DDL
- 테이블 생성 : CREATE TABLE 테이블명 (컬럼명 데이터 타입 [제약조건], …);
- 테이블 삭제 : DROP TABLE 테이블명;
- 컬럼 추가 : ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
- 컬럼 수정 : ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
- 컬럼 삭제 : ALTER TABLE 테이블명 DROP 컬럼명 데이터타입 [제약조건];
- 테이블 내 데이터 삭제 : TRUNCATE TABLE 테이블명;
- 뷰 생성 : CREATE VIEW 뷰이름 AS 조회쿼리;
- 뷰 교체 : CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
- 뷰 삭제 : DROP VIEW 뷰이름;
- 인덱스 생성 : CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명, …);
- 인덱스 수정 : ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명, …);
- 인덱스 삭제 : DROP INDEX 인덱스명;
DML
[슬렉트 프롬 | 인절트 인투 | 업데이트 셋 | 딜리트 프롬]
조회 : SELECT 속성명, … FROM 테이블명, … [WHERE 조건] [GROUP BY 속성명, …] [HAVING 그룹에_대한_조건] [ORDER BY 속성 [ASC DESC]]; - 삽입 : INSERT INTO 테이블명(속성명1, …) VALUES(데이터1, …);
- 변경 : UPDATE 테이블명 SET 속성명 = 데이터, … [WHERE 조건];
- 삭제 : DELETE FROM 테이블명 WHERE 조건;
조건
1
2
3
4
5
6
7
8
WHERE 컬럼명 BETWEEN 값1 AND 값2
// <> = !=
WHERE 컬럼명 IN(값1, 값2, ...) : 컬럼이 IN 안에 포함된 경우
WHERE 컬럼명 NOT IN(값1, 값2, ...) : 컬럼이 IN안에 포함되어 있지 않은 경우
WHERE 컬렴명 LIKE [%문자% | [문자]% | [문자^] | _]
WHERE 컬럼명 [IS NULL | IS NOT NULL]
WHERE 컬럼명 조건1 [AND | OR] 조건2
WHERE 컬럼명 NOT 조건
JOIN
- INNER JOIN : 교집합
- LEFT JOIN : 왼쪽 모두, 오른쪽 일치하는 행만
- RIGHT JOIN : 왼쪽 일치하는 행만, 오른쪽 모두
- FULL JOIN : 합집합
- CROSS JOIN : 조인 조건이 없는 모든 데이터 조합 추출
1
2
3
4
SELECT A.컬럼1, ..., B.컬럼1, ...
FROM 테이블1 A JOIN 테이블2 B
ON 조인조건
[WHERE 검색조건];
서브쿼리
- SQL문 안의 또 다른 SQL문
1
2
3
4
5
6
7
8
9
인라인 뷰 : FROM절 서브쿼리
SELECT 컬럼명 FROM 테이블명
(SELECT 컬럼명 FROM 테이블명 [WHERE 조건])
[WHERE 조건]
중첩 서브쿼리 : WHERE절 서브쿼리
SELECT 컬럼명 FROM 테이블명
WHERE 컬럼명 IN (SELECT 컬럼명 FROM 테이블명 [WHERE 조건])
집합 연산자
- UNION : 중복 제거 합집합
- UNION ALL : 중복 포함 합집합
- INTERSECT : 두 쿼리 교집합
- MINUS : 첫 쿼리에 있고 두 번째 쿼리에 없는 결과 반환
1
2
3
SELECT 컬럼명 FROM 테이블명
WHERE 조건 UNION | UNION ALL | INTERSECT | MINUS
SELECT 컬럼명 FROM 테이블명 WHERE 조건;
DCL
[그온트 리온프]
- 권한 부여 : GRANT 권한 ON 테이블 TO 유저;
- 권한 취소 : REVOKE 권한 ON 테이블 FROM 유저;
이 블로그는 저작권자의 CC BY 4.0 라이센스를 따릅니다.