본문 바로가기

전체 글

(71)
[SQL] NULL 관련 함수 NVL, ISNULL, IFNULL NVL은 오라클 문법이고, ISNULL은 MS-SQL, IFNULL은 MY-SQL 문법이다. 기능은 모두 같다. -- SQL NVL(job, 0) -- MS SQL ISNULL(salary, 0) -- MY SQL IFNULL(expr1, expr2) 모두 표현식을 두개 받은 뒤 첫번째 받은 값이 NULL이라면 두번째 받은 값을 반환하고 아니라면 그대로 첫번째 값으로 사용된다. ( 첫번째 값이 NULL이면 두번째 값 사용, NULL이 아니면 첫번째 값 사용 ) NULLIF nullif 역시 NULL과 관련된 기능으로, 두개의 값을 받아서 첫번째 값이 두번째 값과 같다면 NULL을 반환하고, 같지 않다면 첫번째 값을 반환한다. nullif('oracle','oracle)..
TOP, LIMIT, ROWNUM - 반환할 레코드 수를 지정하는 데 사용됩니다. - 수천 개의 레코드가 있는 대형 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있습니다. 참고: 데이터 베이스에 따라 문법이 다르다. TOP = MS SQL, LIMIT = MY SQL, ROWNUM = ORACLE MS SQL - top 예제 SELECT TOP number|percent column_name(s) FROM table_name WHERE condition; top 뒤에 원하는 컬럼의 갯수 혹은 percent를 적어주면 된다. MY SQL - LIMIT 예제 SELECT column_name(s) FROM table_name WHERE condition LIMIT number; 마지막에 LIMIT를 넣어주고 원하..
MySQL Foregin Key 설정 CREATE TABLE 테이블이름( ..., [CONSTRAINT 제약조건이름] FOREIGN KEY (필드이름) REFERENCES 테이블이름 (필드이름)); ALTER TABLE 테이블이름 ADD [CONSTRAINT 제약조건이름] FOREIGN KEY (필드이름) REFERENCES 테이블이름 (필드이름) ON DELETE, ON UPDATE - 외래키로 참조되는 값이 변경이 되거나 삭제가 된다면 이를 참조하는 테이블의 값 역시 변화가 있어야하는데 이를 설정하는 방법 외래키 생성할 때 위에 추가 해주면 된다. CASCADE 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다. SET NULL 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하..
SQL Constraints Constraints (제약조건) - SQL 테이블에 문제되는/결함있는 데이터가 입력되지 않도록 컬럼별로 미리 지정해 둔 조건. - 테이블 생성시 추가할 수 있고 테이블 생성 후 ALTER명령어를 통해 추가가 가능하다. Constranits NULL 허용 여부 데이터 중복 여부 특징 NOT NULL NULL 불가 중복 가능 UNIQUE NULL 가능 중복 불가 PRIMARY KEY NULL 불가 중복 불가 지정한 속성 유일한 값을 가져야하며, 테이블마다 1개씩 있어야 한다. FORIEGN KEY 다른 테이블 열을 참조하여 해당 테이블에 존재하는 값만 입력 가능 다른 테이블의 고유키(PRIMARY KEY)를 참조 CHECK 설정한 조건식을 만족하는 데이터만 입력가능 조건식을 만족하지 않는 데이터는 입력이 ..
Commit, Rollback, Save Point COMMIT ( 커밋 ) - 변경 된 데이터를 DB에 영구적으로 반영하는 것. commit 이전에는 단순히 Buffer에 영향을 주기 때문에 복구가 가능하지만, Commit을 하게 되면 변경사항이 DB에 반영이 되기 때문에 복구가 안된다. ROLLBACK ( 롤백 ) - 테이블 데이터 베이스에 데이터를 추가, 변경, 삭제를 해도 Commit을 하지 않았다면, Rollback을 사용해서 복구가 가능하다. Rollback은 마지막으로 Commit햇던 지점으로 돌아가는 기능이라고 생각하면 된다. SAVE POINT ( 저장지점 ) - Rollback이 마지막으로 Commit된 지점으로 돌아가는 기능이라면 Save Point는 커밋을 하기 전에 여러 군데 지정하여 원하는 시점으로 돌아가는 기능이다. 만일 동일한..
[DB] DDL, DML, DCL 종류 명령어 설명 DML - 데이터 조작어 (DML : Data Manipulation Language) SELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어. INSERT UPDATE DELETE 데이터베이스에 들어 있는 데이터 삽입, 수정, 삭제의 명령어. DDL - 데이터 정의어 (DDL : Data Definition Language) CREATE ALTER DROP RENAME TRUNCATE 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어. DCL - 데이터 제어어 (DCL : Data Control Language) GRANT REVOKE 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어..
Front-Controller 정리 우리는 Front-Controller를 V1부터 V5까지 조금씩 변화를 주며 최종적으로는 중복을 최대한 제거하고 단순화하고 편리하게 개편하면서 만들어왔다. v1: 프론트 컨트롤러를 도입 기존 구조를 최대한 유지하면서 프론트 컨트롤러를 도입 v2: View 분류 단순 반복 되는 뷰 로직 분리 v3: Model 추가 서블릿 종속성 제거 뷰 이름 중복 제거 v4: 단순하고 실용적인 컨트롤러 v3와 거의 비슷 구현 입장에서 ModelView를 직접 생성해서 반환하지 않도록 편리한 인터페이스 제공 v5: 유연한 컨트롤러 어댑터 도입 어댑터를 추가해서 프레임워크를 유연하고 확장성 있게 설계 이 이상 발전할 방법도 있지만 스프링 MVC의 핵심구조를 파악하는데는 충분하다고 한다. 지금까지 만든 방식이 스프링 MVC 프..
Front Controller (5-1) 이제 앞서 만든 V5 버전에 어댑터에 V3만 넣엇다면 이번에 V4버전을 넣어보자. 이때 어댑터의 진가가 보인다. 이유는 V3와 V4의 방식은 각 컨트롤러의 process메서드가 사용될때 V3에서는 paramMap만 이용이 되었지만 V4에서는 paramMap와 model 두가지가 사용이 되어 조금의 사용법이 다르지만 이 문제를 어댑터를 통해 극복이 가능하다. 먼저 FrontControllerServletV5에 V4를 넣어주자. @WebServlet(name="frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { //private Map..