목록분류 전체보기 (451)
코딩항해기
ROLLUP주어진 그룹 기준에 따라 계층적인 소계를 계산한다. 주로 데이터의 총합, 부분합을 구할 때 사용한다. 예를 들어, 부서별, 직급별 급여 합계를 구하고 전체 합계를 구할 수 있다. 계층적이기 때문에 앞쪽 열부터 소계가 계산되고, 마지막에는 전체 합계가 포함된다. 예시: ROLLUP(a, b, c)(a, b, c) : a, b, c별 소계(a, b) : a, b별 소계(a) : a별 소계() : 전체 소계 CUBE주어진 그룹 기준의 모든 조합에 대해 소계를 계산한다. ROLLUP과 달리, 모든 가능한 그룹 조합의 소계를 계산하며, 각각의 열에 대한 소계, 그리고 전체 합계도 함께 계산한다. 매개변수의 순서가 달라져도 값에 영향이 없다. 예시: CUBE(a, b, c)(a, b, c) : a, b,..
NULL 아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자이고, 공백은 문자다)테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않으면 NULL을 포함할 수 있다. NULL을 포함하는 연산의 결과도 NULL이다 ( 1 + NULL = NULL) row에서 연산을 할 때 (컬럼1+컬럼2) NULL이 있다면 결과값은 NULL이 되며,집계함수를 사용할 때 column에 NULL이 있다면 해당 NULL을 무시하고 집계한다.NULL과의 비교는 무조건 false가 반환된다. (IS NULL, IS NOT NULL을 사용해야 비교가 가능하다) NULLIF(표현식1, 표현식2)표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.특정 값을 NULL로 변경해야 ..
JSON데이터를 직접 받아와서 뭐든 페이지 구현해보기아이디 중복체크 해보기 JSON데이터를 직접 받아와서 뭐든 페이지 구현해보기일단 JSON 데이터가 필요하므로, JSON 파일을 만들어 데이터를 넣었다.[ {"type":"text", "placeholder":"텍스트 타입"}, {"type":"password", "placeholder":"패스워드 타입"}, {"type":"number", "placeholder":"넘버 타입"}] JSON 데이터를 이용하여 type과 placehloder를 지정하여 input 태그를 만들어줄 예정이다.다음으로는 ajax를 할 페이지에 script 태그를 열고 ajax를 작성했다.$(document).ready(function(){ $.ajax({ type : "G..
Ajax (Asynchronous JavaScript and XML) JavaScript와 XML을 이용한 비동기적 정보 교환 기법이다. 과거에는 XML로 데이터를 전달했기 때문에 XML로 정의되어있지만, 요즘에는 JSON을 주로 사용한다. (태그로 이뤄진 xml과 달리 가독성도 높고 데이터도 더 가볍다) HttpRequest를 이용해 페이지를 새로 가져오지 않고도 페이지 일부를 변경할 수 있도록 자바 스크립트를 통해 데이터만을 별도로 요청하거나 전달하는 기술이다. HTTP 프로토콜을 이용한 비동기 통신이며 브라우저는 정적 HTML 파일과 CSS파일, 데이터를 어떻게 요청하면 되는지를 설명한 javascript를 통해 HTML,CSS를 이용해 골격을 먼저 형성하고 ajax 실행 부가 담긴 javascr..
POJO (Plain Old Java Object)오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다.여기서 오래된 방식의 간단한 자바 오브젝트란 특정 기술에 종속되지 않은 순수한 자바 객체를 의미한다. POJO를 지향해야하는 이유스프링 이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 직접적으로 사용하는 객체를 설계했다. 즉, 특정 기술과 환경에 종속된 것으로 가독성이 떨어지고 유지보수에 어려움이 생겼다. 그리고, 특정 기술의 클래스를 상속받거나 직접 의존하게 되어 확장성도 떨어지게 됐다.객체 지향의 장점을 잃어버리게 되므로, 객체 지향의 장점을 가지고 있었던..
SQL 실행 순서다음과 같은 순서로 진행된다. FROMONJOINWHEREGROUP BY (집계함수)HAVING SELECT (별칭, ROWNUM 등)DISTINCTORDER BY 실행 순서가 중요한 이유복잡한 쿼리를 작성하거나 쿼리의 성능을 최적화 할 때 실행 순서를 정확하게 이해하고 있어야 하기 때문이다.또한 실행 순서를 잘못 이해하면 원하는 방향과 전혀 다른 데이터가 나올 수 있어 실행 순서를 정확하게 인지하고 있는 것이 좋다.(앞 단에 실행된 부분만 현재 단계에서 인지할 수 있기 때문에, WHERE절에서 GROUP BY된 데이터를 인지할 수 없다.)실행 순서를 불가피하게 변경해야하는 경우에는 서브쿼리를 사용하여 실행 순서를 변경시킬 수 있다. 상황에 따른 조건 위치 효율성JOIN을 사용할 때ON..
[JSP] Controller Servlet기존 실습들에서는 Controller가 분할되었다 다시 하나로 통합되는 과정을 거쳤다.하지만 여전히 응집도가 낮고 하나의 기능을 수정하기 위해서는 전체 기능이 사용 불가하다는 단점이 있었다.또minibcake.tistory.com 전의 게시물에서 작성했던 Controller 버전을 살펴보면, if문으로 분기를 나누는 기능 부분이 있다. ActionForward forward=null; if(command.equals("/main.do")) { MainAction mainAction=new MainAction(); forward = mainAction.execute(request, response); } else if(command.equals("/..
jsp / apache tomcat 10.1 1. 선택한 글의 댓글 출력 순서 (로직) 설계하기Model에서 댓글을 불러오는 쿼리 작성하기불러온 데이터를 C에게 넘겨주기Controller는 받은 데이터를 요청에 담아 V에게 전달하기V는 받은 데이터를 화면에 보여주기(이미 게시물 내용을 상세보기로 보여주며, 보드 게시물의 PK값을 넘겨주고 있기 때문에 쿼리에 필요한 정보를 요청하는 과정이 생략됐다.) 쿼리문 작성하기SELECT R.RID,R.BID,B.TITLE,R.CONTENT,M.NAME FROM REPLY R JOIN BOARD B ON R.BID=B.BID JOIN MEMBER M ON R.WRITER=M.MID WHERE B.BID = 101 조회하는 게시물의 댓글리스트를 조회하는 것이므로 WHE..
기존 실습들에서는 Controller가 분할되었다 다시 하나로 통합되는 과정을 거쳤다.하지만 여전히 응집도가 낮고 하나의 기능을 수정하기 위해서는 전체 기능이 사용 불가하다는 단점이 있었다.또한 html 태그를 사용하지 않는데도, jsp파일로 생성하는 단점이 있었다. jsp는 컴파일되면 servlet파일이 된다는 점을 생각하여 컨트롤러를 java 단으로 옮겨보자. java단으로 옮긴 컨트롤러는 Servlet 파일로 생성한다.이러한 Servlet 파일을 JSP에서 frontController라고 한다.public class frontController extends HttpServlet { private static final long serialVersionUID = 1L; //직렬화 코드 ..
자바스크립트의 호이스팅코드에서 변수와 함수 선언이 실제 코드 작성 위치와 관계없이 스코프의 최상단으로 끌어올려지는 것처럼 동작하는 특징이다. 이는 자바스크립트 엔진이 코드를 실행하기 전에 변수와 함수의 선언을 메모리에 미리 할당하기 때문에 발생한다. 다만, 변수와 함수 선언 방식에 따라 호이스팅의 동작 방식이 다르다. 변수 호이스팅변수 호이스팅은 변수 선언이 스코프의 최상단으로 끌어올려지는 것이다. var, let, const 세 가지 변수 선언 방식이 있는데, 각기 다른 호이스팅 동작 방식을 가지고 있다. var로 선언한 변수var로 선언된 변수는 선언만 호이스팅되고, 초기화(할당)는 호이스팅되지 않는다. 이로 인해 선언 전에 해당 변수를 참조하면 undefined가 반환된다. console.log(m..