본문 바로가기

It

웹 프로그래밍 *본 내용은 명품 웹 프로그래밍 책을 참조하여 작성하였습니다. 이제는 웹 프로그래밍에 대해 차근차근 포스팅한다. 전자문서(웹 페이지)를 어떻게 주고받는지, 어떤 요소로 구성되어있는지 등등 전반적인 내용을 간략하게 정리한다. 1. 웹과 인터넷 21세기에 살면서 '웹', '인터넷'을 접하지 않은 사람은 적어도 대한민국에서는 적을 것이다. 아니면 한번쯤이라도 들어봤을 것이다. 보통 웹 = 인터넷이라고 생각하겠지만 둘은 서로 다른 개념이다. 웹(WorldWideWeb. 줄여서 웹이라고 하고, WWW라고도 한다.) -컴퓨터에서 만든 전자문서(웹 문서)를 다른 컴퓨터에게 볼 수 있도록 하는 서비스. 인터넷 -웹 문서를 웹 서버(웹 사이트를 구축한 컴퓨터. 제공자 느낌)와 웹 클라이언트(웹 문서를 보는 이용자 컴퓨터.. 더보기
ROW_NUMBER() OVER() 학원에서 배웠던 오라클 DB 중 마지막으로 배웠던 내용이다. 분석함수 중의 하나로 테이블에 있는 데이터를 특정 용도로 분석하여 결과를 반환하는 함수다. ROW_NUMBER( ) OVER( )는 ROWNUM이랑 비슷하다. *항상 같이 해왔던 testboard를 예시 테이블로 들었다. --기본 형식 ROW_NUMBER() OVER([PARTITION BY 컬럼] ORDER BY COLUMN) --[그룹으로 묶어서 그 그룹 내에] COLOMN 기준으로 정렬한 후 번호를 매기는 함수 --그룹을 설정해서 그룹내 멤버(같은 그룹의 행의 갯수)가 2 이상인 경우 COLUMN 기준으로 번호를 매긴다. *대괄호로 묶여있는 부분은 선택사항이다. 그룹으로 묶는다는 것은 컬럼의 같은 값들끼리로 묶는다는 의미다. -- 사용 예.. 더보기
LEFT JOIN, RIGHT JOIN, ROWNUM 지난 글에 OUTTER JOIN이 무엇인지만 말하고 마무리했다. 그래서 이번엔 예시를 보여주고 ROWNUM에 대해 알아보자. 1.LEFT JOIN 두 테이블을 결합해서 누가 몇 개의 글을 작성했는지를 보여주는 쿼리문이다. bidx의 갯수로 글의 개수를 파악하여 작성했다. 현재 결과를 보면 두 개의 열로 나와있는데, 이걸 합쳐서 나타낼 수 있다. '||'를 이용하면 연달아 하나의 열에 연달아서 나타낼 수 있다. 2.RIGHT JOIN 앞의 예시는 너무 단순해서 약간 복잡하게 해봤다. 두 번째 줄의 DISTINCT의 의미는 컬럼(열)에 대한 중복되는 값을 없애주는 기능이다. 즉, 같은 내용은 한 번만 나타내게 한다. 한 사람이 글을 여러 번 썼을 경우가 있어 DISTINCT를 사용했다. DECODE( )랑 .. 더보기
FOREIGN KEY, INNER JOIN, OUTER JOIN 이번시간엔 외래키(FOREIGN KEY), INNER JOIN, OUTER JOIN 세가지를 알아보겠다. 다음과 같은게시판 형식의 테이블을 하나 더 준비해왔다. *NULL?컬럼의 'N'값은 필수로 입력해야 하는 값이다. 1.외래키FOREIGN KEY 외래키는 두개의 테이블을 연결하는 역할을 한다. test테이블의 midx컬럼과 testboard의 midx컬럼을 연결해보았다. 두 컬럼을 외래키로 정하게 되면 testboard테이블의 midx는 test테이블의 midx값들내에서만 정할 수 있다. testboard테이블을 보면 모두 1~10사이의 값으로 되어있는 것을 확인할 수 있다. 만일 범위 밖의 값으로 설정하게 되면 오류가 발생하게 된다. 어떤 사이트의 회원들만 글을 쓰게하고 싶을 경우 이 기능을 사용하.. 더보기
UNION 이번 시간엔 UNION만 알아보겠다. 서브쿼리와 비교해서 보면 되겠다. 서브쿼리에 대한 내용은 따로 글을 작성해놨으니 한번 보고 오면 좋다. 우선 서브쿼리는 쿼리문은 동시에 두 개를 작성하는 것이라고 했었다. (↓서브쿼리) 위의 쿼리문은 age를 대신할 쿼리문을 작성한 것이다. 즉, 쿼리문 안의 쿼리문이라고 볼 수 있다. UNION은 서브쿼리와 다르게 '쿼리 + 쿼리'의 형식이다. +부분에 UNION이 들어가면 된다. TEST테이블에서 나이가 가장 많은 사람의 나이와 가장 적은 사람의 나이를 출력하는 명령을 내려보겠다. 이제 UNION문을 서브쿼리와 함께 간단하게 응용해보겠다. 나이가 가장 많은 사람의 나이와 가장 적은 사람의 나이의 합을 구해보자. 일부러 별칭을 age라고 지어서 약간 헷갈리게 했지만,.. 더보기
DECODE, NVL, CASE 이번엔 다양한 구문을 소개하겠다. Java의 if문과 비슷한것이 있으니 편하게 보면 되겠다. 1. DECODE( ) 함수 if 대신에 DECODE로 생각하면 되고, 괄호안에 경우에 대한 값들을 작성하면 된다. DECODE( )함수는 경우를 어떻게 두냐에 따라 사용법이 달라진다. 첫번째 방법은 경우를 두 가지로 나누는 방법이다. 두번째 방법은 경우를 세 가지로 나타내는 방법이다. 2. NVL( ) 함수 NVL( ) 함수는 컬럼의 값이 NULL 인경우에 대해서만 사용하는 조건문이다. NULL인 값을 표현할 때 그대로 노출시키지 않고 다르게 표현한다고 보면 된다. 마찬가지로 두 가지 방법이 있다. DECODE( ) 함수와 굉장히 유사하지만, 약간 다르니 주의해서 보면 되겠다. 3. CASE 기능은 DECODE.. 더보기
서브쿼리, 시퀀스 * 본 글은 SQLgate편집기를 이용했습니다. 이번엔 서브쿼리와 시퀀스에 대해 알아보겠다. 꼭 알아두어야할 내용중 하나다. 1. 서브쿼리 서브쿼리는 메인쿼리 안에 들어가는 쿼리다. 쉽게말해 쿼리문을 한번에 두개를 작성한다고 생각하면 된다. 이를 이용해서 좀더 자세한 내용을 명령할 수 있다. 오늘도 등장하는 홍길이들로 보여주겠다. 테이블 이름은 TEST다. 이런 명령을 하고 싶다고 가정하자. 서브쿼리를 어떻게 작성하는지 그림으로 보자. 서브쿼리는 다양하게 이용되기 때문에 거듭 말하지만 알아둬야 한다. 2. 시퀀스 시퀀스는 자동으로 번호를 생성하는 기능이다. 은행의 번호표같은 것이다. 테이블의 행을 구분 짓기위해 사용되는 PRIMARY KEY. 즉, 기본키에 적용시킬 수가 있는데 기본키가 유일한 값을 가져.. 더보기
GROUP BY, 집계함수 이번엔 간단하게 두 가지정도만 알아보겠다. 전에 배웠던 WHERE 절, ORDER BY와 같이 쿼리문을 작성할 예정이다. 1. GROUP BY GROUP BY는 특정 컬럼들을 그룹화 하는 기능이다. WHERE절 처럼 뒤에 붙여서 작성하면 된다. 주의할점은 그룹화한 컬럼을 반드시 조회를 해야한다는 점이다. 2. 집계함수 크게 3가지로 SUM(), AVG(), COUNT()가 있다. SUM( ) : 합 AVG( ) : 평균 COUNT( ) : 갯수 단순하게 보여주는 것보다 전에 작성했왔던 명령어들을 조합해서 보여주겠다. 지역별 나이의 합을 내림차순으로 조회해라. 위와 같은 내용을 구현 하고 싶을때 어떤식으로 해야할지 생각 해보고 작성해보자. 필요한 명령어는 총 세개이므로 하나의 쿼리문에 동시에 사용하면 되겠.. 더보기