Ajax란?
-
기존의 웹브라우저는 전자 문서를 염두에 두고 고안된 시스템이기 때문에 내용이 바뀌면 페이지 새로고침을 해서 내용을 새롭게 변경해야 되는 정적인 시스템이였다.
그러다 Ajax 개념이 도입되면서 모든 것이 바뀌었다. Ajax는 웹브라우저와 웹서버가 내부적으로 데이터 통신을 하게 된다. 그리고 변경된 결과를 웹페이지에 프로그래밍적으로 반영함으로써 웹페이지의 로딩 없이 서비스를 사용할 수 있게 한다.
Ajax는 Asynchronous JavaScript and XML의 약자다. 한국어로는 비동기적 자바스크립트와 XML 정도로 직역할 수 있는데 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 데이터를 주고 받는 방식을 의미한다. 이 때 사용하는 API가 XMLHttpRequest이다. 그렇다고 꼭 XML을 사용해서 통신해야 하는 것은 아니다. 사실 XML 보다는 JSON을 더 많이 사용한다.
HTTP 프로토콜이란?
- 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜(상호 간에 정의한 규칙)이다.
- 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다. 즉 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다.
- 이러한 특징 덕택에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생긴다.
- HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.
HTTP 접근 제어(CORS)란?
CORS는 무엇인가?
- 다른 도메인으로부터 요청될 경우, 일반적인 HTTP 요청이 아닌 cross-origin HTTP 요청으로 처리하게 된다.
- 브라우저는 보안상의 이유로 cross-origin HTTP 요청을 제한하게 된다.
- 이유는 단순히 same-origin 정책이다.
- 이러한 불편함으로 인해, 시간이 지나 W3C에서 대안으로 CORS 메커니즘을 내놓은 것이다.
CORS는 어떻게 동작되는 건가?
- CORS는 라이브러리 혹은 구현 기술이 아닌 방침이라고 보면된다.
- CORS는 브라우저의 정보를 읽을 수 있도록 서버에게 알려주도록 허용하는 HTTP 헤더를 추가함으로써 동작한다.
RESTful 설계란?
REST가 무엇인가?
- REST는 분산 시스템 설계를 위한 아키텍처 스타일이다.
- 아키텍처 스타일이라는건 쉽게 말하면 제약 조건의 집합이라고 보면 된다.
- REST는 URI를 통해 자원을 표시하고, HTTP METHO를 이용하여 해당 자원의 행위를 정해주며 그 결과를 받는 것을 말한다.
RESTful은 무엇인가?
RESTful은 위의 제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족하는 것을 의미한다.
REST라는 아키텍처 스타일이 있는거고 RESTful API라는 말은 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻이다.
SQL Subquery란?
- 쿼리 안에 있는 쿼리. Where/From/Select 절 안에 들어가는 쿼리.
- 서브쿼리는 하나의 쿼리문 안에 포함된 또 하나의 쿼리문으로(중첩문) 메인쿼리가 서브쿼리를 포함하는 종속적 관계
- 문법은 서브쿼리를 괄호로 묶어서 사용한다.
- Order By절은 사용불가하며 연산자 오른쪽에 사용해야 한다.
서브쿼리의 반환값에 따른 서브쿼리
단일 행 서브쿼리 : 서브쿼리의 결과가 1행
다중 행 서브쿼리 : 서브쿼리의 결과가 여러 행
다중 컬럼 서브쿼리 : 서브쿼리의 결과가 여러 컬럼
SQL Join의 종류
두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색한다.
보통 primary key 혹은 Foreign key로 두 테이블을 연결한다.
연결하려면 적어도 하나의 컬럼은 서로 공유 되고 있어야한다.
1) 이너 조인(Inner Join)
교집합. 기존 테이블과 조인한 테이블의 중복 값을 보여주는데 결과값은 교집합만 검색
Sele
ct <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭> Inner Join <조인테이블 별칭> On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> 예) Select A.NAME, B.AGE From EX_TABLE A Inner Join JOIN_TABLE B On A.NO_EMP = B.NO_EMP And A.NO_DEPT = B.NO_DEPT
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭>
Inner Join <조인테이블 별칭>
On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
예)
Select
A.NAME, B.AGE From EX_TABLE A
Inner Join JOIN_TABLE B
On A.NO_EMP = B.NO_EMP
And A.NO_DEPT = B.NO_DEPT
2) 아우터 조인(Left/Right Outer Join)
기존 테이블 값 + 교집합
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭> Left Outer Join <조인테이블 별칭> On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> 예) Select A.NAME, B.AGE From EX_TABLE A Left Outer Join JOIN_TABLE B On A.NO_EMP = B.NO_EMP And A.NO_DEPT = B.NO_DEPT
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭>
Left Outer Join <조인테이블 별칭>
On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
예)
Select
A.NAME, B.AGE From EX_TABLE A
Left Outer Join JOIN_TABLE B
On A.NO_EMP = B.NO_EMP
And A.NO_DEPT = B.NO_DEPT
3) 풀 아우터 조인(Full Outer Join)
합집합
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭> Full Outer Join <조인테이블 별칭> On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키> 예) Select A.NAME, B.AGE From EX_TABLE A Full Outer Join JOIN_TABLE B On A.NO_EMP = B.NO_EMP And A.NO_DEPT = B.NO_DEPT
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭>
Full Outer Join <조인테이블 별칭>
On <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
And <기존테이블 별칭>.<기준키> = <조인테이블 별칭>.<기준키>
예)
Select
A.NAME, B.AGE From EX_TABLE A
Full Outer Join JOIN_TABLE B
On A.NO_EMP = B.NO_EMP
And A.NO_DEPT = B.NO_DEPT
4) 크로스 조인(Cross Join)
모든 경우의 수(N*M)
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭> Cross Join <조인테이블 별칭> 예) Select A.NAME, B.AGE From EX_TABLE A Cross Join JOIN_TABLE B
Select <별칭.칼럼>, <별칭.칼럼> From <기준테이블 별칭>
Cross Join <조인테이블 별칭>
예)
Select
A.NAME, B.AGE From EX_TABLE A
Cross Join JOIN_TABLE B
5) 셀프 조인(Self Join)
하나의 테이블을 여러번 복사해서 조인
Select <별칭.칼럼>, <별칭.칼럼> From <테이블명 별칭1>, <테이블명 별칭2>
Select <별칭.칼럼>, <별칭.칼럼> From <테이블명 별칭1>, <테이블명 별칭2>
데이터베이스 트랜젝션이란?
- 데이터베이스의 상태를 바꾸는 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미
- 모든 명령어의 성공 또는 실패를 한번에 처리 흔한 예로 계좌입금에서 일어날 수 있는 오류등을 생각해보면 좋다.
- 하나의 트랜잭션으로 관리하면 계좌에 입금하는 기능이 실패 했을 경우, 철수의 계좌에서 돈이 다시 입금되어야한다.(이를 Rollback이라고 한다.)
데이터베이스의 외래키와 무결성 제약 조건
데이터베이스의 외래키
- 외래키는 두 테이블을 서로 연결하는 데 사용되는 키
- 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라한다.
MySQL: CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) ); SQL Server / Oracle / MS Access: CREATE TABLE Orders ( OrderID int NOT NULL PRIMARY KEY, OrderNumber int NOT NULL, PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );
MySQL:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
무결성의 제약조건
- 개체 : 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구한다.(같은 값 X)
- 참조 : 외래키 값은 NULL이거나 참조 테이블의 PK값이여야함
- 영역 : 한 칼럼에 대해 NULL 허용 여부와 자료형 , 규칙으로 타당한 데이터 값을 지정
':: IT > 기술면접' 카테고리의 다른 글
SW 테스트 방법론 (0) | 2020.08.10 |
---|---|
웹개발3 (0) | 2020.08.10 |
웹개발 (0) | 2020.08.10 |
파이썬 개발 (0) | 2020.08.10 |
[기술면접] 데브옵스 (0) | 2020.07.31 |