본문 바로가기

전체 글

(71)
[SQL] 기본 함수 문자함수 LOWER, UPPER () : 문자열을 소문자, 대문자로 반환 SELECT 'DataBase', LOWER('DataBase') FROM dual; --데이터베이스에서 제공하는 가상의 테이블 SUBSTR () : 특정 부분 문자열 반환 SELECT SUBSTR('abcdefg', 2, 4) FROM dual; -- 2번째 문자부터 4글자 반환 -- bcde SELECT SUBSTR('ABCDEFG',4) FROM DUAL; -- DEFG LENGTH () : 문자열 길이 SELECT LENGTH('12345') FROM DUAL; -- 5 LENGTHB () : 특정 데이터의 바이트 수 구하기 select lengthb('joker'), lengthb('조커') from dual; -- 결과 ..
[SQL] DDL 사용법 DDL이란 Data Definition Languaged의 약어로 데이터 정의어를 뜻한다. 데이터 정의어란 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어이다. 종류 create alter drop truncate 대부분 직접적으로 구조에 관한 명령어들이다. 데이터를 담는 구조는 기본적으로 table을 생각 할 수 있지만 더 많은 종류가 존재한다. table : 데이터를 저장하는 기본 저장 단위이고, 행과 열로 구성 index : 검색 속도를 향상시키기 위한 db 오브젝트 view : 테이블을 바라보는 쿼리문이 출력되는 결과(하나 이상의 테이블에 있는 데이터의 부분 집합) sequence : 일련번호 생성기(번호를 생성하는 db 오..
HandlerMapping, HandlerAdapter 핸들러 매핑과 핸들러 어댑터가 어떤 것들이 어떻게 사용되는지 알아보자. 지금은 전혀 사용하지 않지만, 과거에 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보자. 과거의 애노테이션을 사용하기 전에 스프링 컨트롤러를 보자. org.springframework.web.servlet.mvc.Controller public interface Controller { ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; } 과거의 컨트롤러이다. 참고로 현재 사용되는 @Controller와 완전히 다른 것이므로 헷갈리면 안된다. 한번 과거의 컨트롤러를 만들..
SPRING MVC 구조 이전에 글들을 보면 Front-Controller라고 해서 우리가 직접 MVC구조를 하나씩 수정해가면서 만들어왔다. 그렇다면 이제는 실제 SPRING MVC구조와 우리가 직접 만든 MVC의 구조를 비교해보자. 그림에서 보면 알 수 있듯이 구조는 똑같다. 단지 이름에서 차이가 있을 뿐이다. 우리가 만든 MVC에서 가장 중요했던 Front-Controller는 SPRING MVC에서 Dispatcher Servlet이라는 이름으로 되어있는지 역시 마찬가지로 이 Dispatcher Servlet이 SPRING MVC의 핵심이라고 할 수 있다. 이 핵심같은 디스패처 서블릿은 많은 상속을 받고 있는데 그중에 하나가 우리가 사용한 HttpServlet이다. DispatcherServlet -> FrameworkSe..
[DB] SQL 구문 순서, 실행 순서 구문 순서 SELECT FROM WHERE GROUT BY HAVING ORDER BY 실행 순서 FROM : 각 테이블 확인 ON : 조인 조건 확인 JOIN : 테이블 조인 WHERE : 데이터 추출 조건 확인 GROUP BY : 특정 컬럼으로 데이터 그룹화 HAVING : 그룹화 이후 데이터 추출 조건 확인 SELECT : 데이터 추출 DISTINCT : 중복 제거 ORDER BY : 데이터 정렬
[SQL] JOIN - 2 INNER JOIN 가장 많이 사용되는 JOIN 기법으로 두 개의 합쳐서 새로운 테이블을 만들고 조건에 부합하는 레코드만 반환한다. SELECT A.* FROM A INNER JOIN B ON B.n = A.n; - 3개의 테이블 합치기 SELECT A.* FROM A INNER JOIN B ON B.n = A.n INNER JOIN C ON C.n = A.n; LETF OUTER JOIN 먼저 기술된 왼쪽 테이블을 기준으로 오른쪽 테이블의 데이터를 합치며 오른쪽 테이블에 만족하는 정보가 없다면 NULL로 반환한다. SELECT A.*, B.* FROM A LEFT JOIN B ON B.n = A.n; 코드와 그림의 예시는 다르지만 좋은 예제라고 생각한다. 왼쪽 테이블의 x값과 오른쪽 테이블의 y값이 같..
[SQL] Join 데이터들을 정규화 하다보면 여러 테이블이 생기기 마련이다. 그런 데이터들을 조합하여 결과를 도출하기 위해 JOIN을 사용한다. Equi join 두 테이블에서 공통적으로 존재하는 컬럽의 값이 일치되는 행을 연결해서 결과를 생성하는 것을 equal join이라 한다. select d.department_name from employees e, departments d where e.department_id = d.department_id and e.employee_id = 110; Inner Join & Outer Join - Inner Join : 두 테이블을 조인했을때 조건에서 값이 일치하는 컬럼만 반환 select d.department_name from employees e join departme..
[SQL] CASE WHEN THEN END CASE WHEN THNE END 문법은 JAVA에 나오는 if ~ else문과 비슷하다. case 컬럼명| 표현식 when 조건식1 then 결과1 when 조건식2 then 결과2 ... else 결과 end 기능을 설명하자면, 컬럼 값이 하나씩 들어오면서 조건을 거치게 된다. 자신의 조건에 맞는 조건식과 만난다면 해당 결과 값으로 반환이 되고 모두 맞지 않다면 마지막에 else에 지정된 결과값으로 반환이 된다. SELECTNAME, NOTE, CASE NOTE WHEN NOTE>=90 THEN '1등급' WHEN NOTE = 80 THEN '2등급' WHEN NOTE = 70 THEN '3등급' WHEN NOTE = 6..