피벗테이블이란? 테이블을 조회한 데이터를 특정 데이터 칼럼으로 사용, 요약된 결과를 만들어 표시하는 것입니다. 사용자 입장에서 데이터를 좀 더 쉽게 볼 수 있도록 출력 형태를 가공할 때 사용합니다. 예제 피벗테이블을 활용하여 세로로 되어있는 칼럼을 가로로 바꿔보는 예제 (행을 열로 변환) MM_TEST 테이블안에는 위와 같이 DT(날짜), QT(수량)의 데이터가 10만 개가 있습니다. 위 테이블의 월별 합계 수량을 가로로 나타내시오 해결방법 1. 테이블의 월별 합계 수량을 Select 합니다. DECLARE @DT_FROM NVARCHAR(6) = '200802' DECLARE @DT_TO NVARCHAR(6) = '200904' SELECT MAX(DT) AS DT, SUM(QT) AS QT FROM ..
프로시저란? 데이터베이스에서의 프로시저란 프로그래머가 생성해놓은 쿼리문을 마치 하나의 메서드 형식으로 관리하는 것입니다. 실무에서는 굉장히 복잡한 쿼리문을 많이 사용해요. 많은 컬럼을 조회하고 여러 테이블을 조인하고 거기다가 WHERE조건까지... 심한 것은 하나의 쿼리를 만드는데 1000라인이 넘어가는 경우도 종종 있어요. 이렇게 장문의 쿼리를 사용할 때마다 써줘야 한다면 굉장히 불편할 거예요. 그러므로 이 장문의 쿼리를 프로시저에 저장해주고, 쿼리문이 저장된 프로시저를 호출하여 프로그래밍을 하는 것이 훨씬 효율적입니다. 프로시저 사용법 프로시저 생성 문법 CREATE PROC [프로시저명] AS [쿼리문] 프로시저 생성 예제 CREATE PROCEDURE UP_EXPRO ( @P_COMPANY NVA..
서브 쿼리란? 하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문을 말합니다. 서브 쿼리는 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계입니다. 여러 번의 쿼리를 수행해야만 얻을 수 있는 결과를 하나의 중첩된 SQL 문장으로 간편하게 결과를 얻을 수 있게 해 줍니다. 쉽게 말해서 쿼리 문안에 쿼리문을 또 쓴다고 생각하면 됩니다. ※ Sub Query를 Inner Query라고도 합니다. 주의사항 ☞ 서브 쿼리를 괄호로 묶어서 사용해야 한다. ☞ 서브 쿼리 안에서 Order By 절은 사용할 수 없다. ☞ 연산자 오른쪽에 사용하여야 한다. 서브 쿼리의 반환값에 따른 서브쿼리 ☞ 단일 행 서브쿼리 : 서브쿼리의 결과가 1행 ☞ 다중 행 서브쿼리 : 서브쿼리의 결과가 여러 행 ☞ 다중 칼럼 서브 쿼리 : 서..
GROUP BY절이란? 테이블 SELECT시 조회 결과를 그룹으로 묶어서 그 결과를 가져오는 역할을 한다. DISTINCT절이란? DISTINCT는 GROUP BY절과 마찬가지로 조회결과를 그룹으로 묶어서 그 결과를 가져온다. 주로 UNIQUE한 컬럼을 조회할 경우 사용되는 구절이다. GROUP BY절과 DISTINCT의 차이점 두 구절은 똑같이 그룹을 지어준다는것에 대해 공통점이 있다. 하지만 두 구절의 차이는 GROUP BY는 결과물을 정렬해서 표현하고 DISTINCT는 결과물을 정렬하지 않는다. 즉 정렬이 필요하다면 GROUP BY절을 사용하면 되고 그것이 아니라면 DISTINCT절을 사용하면 된다. 정렬이 필요하지않다면 DISTINCT절을 사용하는것이 속도면에서 GROUP BY절보다 빠르다. 문법..
집계 함수 집계 함수는 계산을 수행하고 단일 값을 반환합니다. Count() 함수를 제외한 집계 함수는 Null 값을 무시하며 SELECT문 혹은 HAVING 절에만 사용할 수 있습니다. 집계 함수 종류 COUNT() : 수량 계산 --테이블(MY_TABLE)에 남아있는 칼럼수 조회-- SELECT COUNT(*) AS 칼럼수 FROM MY_TABLE --테이블(MY_TABLE) 이름(MY_NAME)값이 있는 ROW 수 조회-- SELECT COUNT(MY_NAME) AS ROW수 FROM MY_TABLE AVG(): 평균 --테이블 (MY_TABLE)의 평균나이(AGE) 조회-- SELECT AVG(AGE) AS 평균나이 FROM MY_TABLE --테이블(MY_TABLE)의 수량(QT)의 전체 평균(..
ALIAS란? ALIAS 는 값에 별칭을 주어 접근을 별칭 형태로 할 수 있도록 하는 역할을합니다. 데이터,칼럼,테이블,서브쿼리,WHERE절 등에 사용할 수 있습니다. 대표적으로 알아보기 힘든 칼럼에 AS(별칭)을 많이 사용합니다. 예약어는 AS입니다. ALIAS(문법) ColumnName AS 컬럼명칭 --컬럼에 별칭 부여하기 TableName AS 테이블명칭 --테이블에 별칭 부여하기 ALIAS(예제) 1. 칼럼명에 별칭(AS)짓기 SELECT NO_NUM AS 사원번호,NO_NAME AS 사원명,AGE AS 나이 FROM EX_TABLE 2. 칼럼 NUM1+NUM2의 값을 TOTAL이라는 별칭(AS)짓기 SELECT NUM1 + NUM2 AS TOTAL FROM EX_TABLE 3.EX_TABLE이..
SELECT는 테이블에 있는 데이터를 조회하는 명령어입니다. Select(검색) --My_Table로 부터 모든 칼럼 조회 SELECT * FROM My_Table --My_Table의 No_Emp,Nm_Kor,Age 칼럼 조회 SELECT No_Emp,Nm_Kor,Age FROM My_Table Where(조건문) --이름이 '홍길동'인사람 검색 SELECT * FROM My_Table WHERE Nm_Kor ='홍길동' --나이가 25살인 사원의 한국이름과 나이 조회 SELECT Nm_Kor,Age FROM My_Table WHERE Age=25 --나이가 25살이 아닌 사원 조회 SELECT * FROM My_Table WHERE Age25 --사원번호가 '0315' 이고 나이가 25살보다 작거나 ..
데이터베이스 MS_SQL 데이터 삽입(Insert) 사용법 및 예제입니다. Insert 문법 INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3,....) values(데이터1,데이터2,데이터3,......) INSERT INTO My_Table(no_emp,nm_kor,age) values('dz000','홍길동',20) Insert문의 사용법은 다음과 같습니다. 하지만 위 방법은 일일이 수작업으로 데이터를 한줄한줄 넣는 방식이므로 테이블에 다량의 데이터를 삽입하려고 하면 굉장히 번거롭고 비효율적입니다. 여기서 만약 삽입해야 할 데이터가 다른 테이블에 이미 삽입되어 있다면..?? 새로 데이터를 일일이 넣는 것보다 이미 삽입되어있는 테이블의 데이터를 가지고 오는 방법이 더 효율적이지 않을까요? 이럴 때 ..
데이터베이스 DDL에는 Create(생성), Alter(수정), Drop(삭제)를 시킬 수 있는 명령어가 있습니다. 이 테이블의 구조를 생성, 변경, 삭제를 하는 것이 DDL입니다. 이번 포스팅에서는 여러 DBMS 중에서 MSSQL의 DDL에 대해서 포스팅하려 합니다. CREATE TABLE(테이블 생성) --문법 CREATE TABLE 테이블명( 컬럼명 타입(크기) NOT NULL, --널값이 들어갈 수 없음 컬럼명 타입 NULL DEFAULT(값), --초기값 지정 CONSTRAIN PK이름 PRIMARY KEY(컬럼명) --PK설정 ) --예제 CREATE TABLE MY_TABLE( NO_EMP NVARCHAR(10)NOT NULL, -- NULL 값이 들어갈 수 없음 NM_KOR NVARCHAR..
DBMS란? 데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니라 데이터베이스를 조작하는 별도의 소프트웨어가 있는데 이를 데이터베이스 관리 시스템(DBMS : DataBase Management System)이라고 합니다. 즉 데이터베이스 관리 시스템이란 데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어입니다. DBMS 종류 및 장단점 분석 대표적인 DBMS는 Oracle사의 Oracle, My_SQL MicroSoft사의 MS_SQL이 있다. 세계 DB시장 점유율 링크 Oracle 오라클에서 만들어 판매 중인 상업용 데이터베이스 윈도우, 리눅스, 유닉스 등 다양한 운영체제에 설치를 할 수 있다. MS_SQL , MY_SQL보다 대량의 데이터..