본문 바로가기

SQL

ROW_NUMBER() OVER() 학원에서 배웠던 오라클 DB 중 마지막으로 배웠던 내용이다. 분석함수 중의 하나로 테이블에 있는 데이터를 특정 용도로 분석하여 결과를 반환하는 함수다. ROW_NUMBER( ) OVER( )는 ROWNUM이랑 비슷하다. *항상 같이 해왔던 testboard를 예시 테이블로 들었다. --기본 형식 ROW_NUMBER() OVER([PARTITION BY 컬럼] ORDER BY COLUMN) --[그룹으로 묶어서 그 그룹 내에] COLOMN 기준으로 정렬한 후 번호를 매기는 함수 --그룹을 설정해서 그룹내 멤버(같은 그룹의 행의 갯수)가 2 이상인 경우 COLUMN 기준으로 번호를 매긴다. *대괄호로 묶여있는 부분은 선택사항이다. 그룹으로 묶는다는 것은 컬럼의 같은 값들끼리로 묶는다는 의미다. -- 사용 예.. 더보기
UNION 이번 시간엔 UNION만 알아보겠다. 서브쿼리와 비교해서 보면 되겠다. 서브쿼리에 대한 내용은 따로 글을 작성해놨으니 한번 보고 오면 좋다. 우선 서브쿼리는 쿼리문은 동시에 두 개를 작성하는 것이라고 했었다. (↓서브쿼리) 위의 쿼리문은 age를 대신할 쿼리문을 작성한 것이다. 즉, 쿼리문 안의 쿼리문이라고 볼 수 있다. UNION은 서브쿼리와 다르게 '쿼리 + 쿼리'의 형식이다. +부분에 UNION이 들어가면 된다. TEST테이블에서 나이가 가장 많은 사람의 나이와 가장 적은 사람의 나이를 출력하는 명령을 내려보겠다. 이제 UNION문을 서브쿼리와 함께 간단하게 응용해보겠다. 나이가 가장 많은 사람의 나이와 가장 적은 사람의 나이의 합을 구해보자. 일부러 별칭을 age라고 지어서 약간 헷갈리게 했지만,.. 더보기
서브쿼리, 시퀀스 * 본 글은 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( ) : 갯수 단순하게 보여주는 것보다 전에 작성했왔던 명령어들을 조합해서 보여주겠다. 지역별 나이의 합을 내림차순으로 조회해라. 위와 같은 내용을 구현 하고 싶을때 어떤식으로 해야할지 생각 해보고 작성해보자. 필요한 명령어는 총 세개이므로 하나의 쿼리문에 동시에 사용하면 되겠.. 더보기
TCL TCL(Data Control Language) TCL은 업무 단위인 트랜잭션의 완료와 취소를 위한 명령문이다. 글쓴이가 배운 TCL은 두 가지만 배웠다. 1. COMMIT 하나의 과정을 마쳤다고 확정하는 명령어다. COMMIT 명령어를 사용하게 되면, 영구적으로 COMMIT을 선언하기 전 내용을 불러올 수 없다. 2. ROLLBACK 마지막으로 COMMIT명령어를 선언한 부분으로 되돌아가는 명령어다. 다음 그림과 같이 보자. 기본적으로 SQL 은 JAVA와 달리 한번 명령어를 실행하면 저장되는 특징이 있다. 테이블을 만드는 쿼리문부터 첫 번째 ROLLBACK까지 실행해보자. 결과는 결과는 테이블이 만들어지기 전이 아니라 만들어진 후가 된다. 이번엔 첫번째 ROLLBACK 이후부터 쿼리문을 실행해보자. .. 더보기
DML명령문 *본 글에 앞서 사용한 편집기는 sqlgate을 이용한 오라클 DB를 다루고 있다. DML(Data Manipulation Language) -DML을 간단하게 소개하자면, 데이터를 조작하는 명령어라고 할 수 있다. 테이블에 데이터를 추가하거나(INSERT), 조회(SELECT), 변경(UPDATE), 삭제(DELETE)하는 기능이다. 영어 문법에 맞춰진 명령어들이라 편하게 볼 수 있다. 1. 데이터를 추가 : INSERT INSERT : 신규 데이터를 테이블에 저장하는 명령어 기본 형식 : INSERT INTO 테이블명 [ (컬럼들....) ] VALUES(컬럼에 대한 데이터들...); * 대괄호[ ] 부분은 상황에 따라 생략 가능. 아래의 설명을 보면 이해할 수 있다. 다음과 같은 데이터들이 모여있는.. 더보기