SQL Basic

SQL Basic

[MSSQL] COMMIT, ROLLBACK, SAVEPOINT

TCL(Transaction Control Language) 이란? TCL(Transaction Control Language) 은 트랜잭션 제어어로서 하나의 논리적 기능을 수행하는 연산자들의 집합인 트랜잭션 자체를 제어하는 구문을 말한다. 대표적으로 COMMIT, ROLLBACK, SAVEPOINT 가 존재한다. - COMMIT : 트랜잭션 저장 - ROLLBACK : 현재 실행되고 있는 트랜잭션 취소 -> 원복 - SAVEPOINT : 트랜잭션 내 저장점을 만들어 ROLLBACK 시 SAVEPOINT 로 돌아갈 수 있다. TCL 실습 아래의 데이터를 이용하여 실습을 진행해보자. SELECT * FROM dbo.TBLINSASHTEST WITH(NOLOCK) BEGIN TRAN UPDATE dbo.TB..

SQL Basic

[MSSQL] partition by

partition by 는 전제집합을 기준에 의해 소그룹으로(SUBSET) 나눈다. 아래의 로직은 다음과 같다 TBLINSA 테이블에서 buseo 컬럼을 기준으로 GROUP BY 시켜 파티션을 나눠 서브셋을 생성한 다음, SELECT 절에 존재하는 buseo값과 일치하는 서브셋에 내용들을 가져와서 집계함수를 통해 계산한다. 예시를 위해 사용된 TBLINSA 테이블 조회 SELECT * FROM dbo.TBLINSA WITH(NOLOCK) PARTITION BY 를 통해서 소그릅화 시켜 계산해주는 쿼리 SELECT num ,name ,buseo ,SUM(basicPay) OVER(PARTITION BY buseo) AS buseoPaySum FROM dbo.TBLINSA WITH(NOLOCK) 아래에는 b..

SQL Basic

[MSSQL] window 함수

Window 함수란 무엇인가? 기존 관계형 데이터베이스는 칼럼과 칼럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행간의 관계를 정의하거나, 행과 행간을 비교, 연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 일이었다. 하지만, 윈도우 함수를 이용한다면 행과 행사이의 관계를 쉽게 정의할 수 있다. "윈도우 함수"(window function)란, 함수가 기반으로 하는 쿼리로부터 나오는 행들의 서브 집합을 대상으로 각 행별로 계산을 해서 스칼라 값을 출력하는 함수를 말한다. 행들의 서브집합을 윈도우 라고 하며, 현재 행과 관련된 윈도우 설정을 기반으로 한다. 윈도우 함수 문법에는 OVER라는 절이 포함된다. 간단히 말해서 집합을 대상으로 계산한 다음 단일 값을 출력하는 것이..

SQL Basic

[MSSQL] 테이블 생성,수정,삭제 (CREATE, ALTER, DROP)

MSSQL 도 다른 RDBMS와 마찬가지로 테이블이나 프로시저와 같은 개체들을 CREATE(생성) , ALTER(수정), DROP(삭제) 할 수 있다. 1. CREATE -- 테이블 의 경우 -- 형식 CREATE TABLE (소유자).테이블명 ( 컬럼명 타입(크기) identity(시작시퀀스,증가시퀀스) -- 자동시퀀스 지정 ,컬럼명 타입(크기) null허용유무 ,컬럼명 타입 DEFAULT(값) -- 초기값 지정 ) ALTER TALBE (소유자).테이블명 PK명 PRIMARY KEY (PK로 지정할 열 이름) -- PK 값 지정 --EX) CREATE TABLE dbo.TESTTBL ( seq bigint identity(1,1) -- 자동증가 시퀀스 열 ,name nvarchar(5) not nul..

SQL Basic

[MSSQL] OUTER JOIN

1. 외부 조인(Outer Join)의 기본개념 외부 조인은 ANSI SQL-92에서 소개되었으며, 내부 조인이나 크로스 조인과는 달리 단 하나의 표준 문법만을 가지고 있다. 즉 테이블들 간에 JOIN 키워드를 사용하는 방식으로, 조인 조건이 ON절에 지정되는 방식이다. 외부 조인은 내부 조인에서 처리되는 두 개의 논리적 프로세싱 단계(카티전 곱과 ON 필터) 외에도 외부 조인에서만 존재하는 세 번째 단계인 외부 행을 추가하는 단계를 수행하게 된다. 외부 조인에서는 테이블 이름 사이에 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 키워드를 사용해서 테이블들 중 하나를 "보존되는" 테이블로 지정해야 한다. OUTER 키워드는 선택적으로 사용 가능하다. LEFT ..

SQL Basic

[MSSQL] INNER JOIN

1. 내부조인 (Inner Join) 내부조인은 두 개의 논리적 쿼리 프로세싱 단계를 수행한다. 우선, 두 입력 테이블간에 카티션 곱을 적용한 후, 지정한 술어에 따라 행들을 필터링 한다. 크로스 조인과 같이 내부 조인 역시 ANSI SQL-92 및 ANSI SQL-89 두개의 표준 문법 형태로 사용할 수 있다. 예시를 위해 아래와 같은 테이블을 생성하여 연습해보자. -- 회원 테이블 CREATE TABLE dbo.TB_CUST( cust_no INT NOT NULL, --회원번호 cust_name NVARCHAR(100) NOT NULL --회원이름 CONSTRAINT PK_TB_CUST PRIMARY KEY(cust_no) ); INSERT INTO TB_CUST(cust_no, cust_name) ..

SQL Basic

[MSSQL] CROSS JOIN

1. CROSS JOIN 논리적으로 봤을 때 크로스 조인은 조인들 중에서 가장 단순한 형태이다. 크로스 조인은 카티전 곱(Cartesian Product) 이라는 하나의 논리적 쿼리 프로세싱 단계만 처리한다. 이 단계에서는 조인을 하기 위해 입력값으로 지정된 두 개의 테이블에 대해 연산을 해서 두 테이블 간의 카티전 곱 결과를 만들어낸다. 즉 하나의 입력 테이블에 있는 각 행은 다른 테이블의 각 행과 매칭된다. 따라서 하나의 테이블에 m개가 있고 다른 테이블에는 n개의 행이 있다면, 결과로는 m x n 개의 행이 만들어진다. CREATE TABLE dbo.TB_CUST( cust_no INT NOT NULL, cust_name NVARCHAR(100) NOT NULL CONSTRAINT PK_TB_CUS..

SQL Basic

[MSSQL] JOIN

쿼리의 FROM 절은 논리적으로 가장 먼저 처리되는 부분으로, FROM 절 내에서 입력 테이블들간의 테이블 연산을 수행하게 된다. Microsoft SQL Server 에서는 네 종류의 테이블 연산자를 제공한다. JOIN, APPLY, PIVOT, UNPIVOT가 바로 이에 해당한다. JOIN 테이블 연산자는 표준 방식인데 비해 APPLY, PIVOT, UNPIVOT 은 T-SQL에만 있는 확장형 연산자들이다. 각 테이블 연산자들은 입력값으로 제공되는 테이블들을 대상으로 하며 논리적 쿼리 프로세싱 단계들을 적용한 다음, 테이블 형태의 결과를 반환한다. JOIN 테이블 연산자는 두 개의 입력 테이블을 대상으로 수행한다. 논리적으로 기본적인 조인 방식으로는 1) 크로스 조인(cross join) 2) 내부 ..

SQL Basic

SQL 이란?

1. 이론적 배경 SQL 은 (Structure Query Language) 의 약어로 관계형 데이터베이스 관리 시스템(DBMS) 에 있는 데이터를 쿼리하고 관리하기 위해 설계된 표준 언어이다. RDBMS는 관계형 모델(데이터를 표현하는 의미론적 모델)을 기반으로 하는 데이터베이스 관리 시스템을 말한다. 관계형 모델은 두개의 수학적인 원리. 즉, 집합 이론(Set Theory) 과 술어논리 (Predicate Logic) 을 기반으로 하고 있다. 2. SQL 이란? SQL은 RDBMS에 저장된 데이터를 쿼리하고 관리할 목적으로 설계된, 관계형 모델을 기반으로 하는 ANSI및 ISO 표준 언어이다. SQL은 영어와 상당히 유사한 구조로 매우 논리적인 형태를 띄고 있다. 다른 많은 프로그램에서 명령 형식의 ..

SQL Basic

[MSSQL] STRING_SPLIT 함수

sql server 로 코딩을 하다보면 간혹 어떤 데이터의 값들을 특정한 기호로 나눠야 하는 경우가 생긴다. 이럴경우 로직단에서 나눠줘서 작업을 해도 상관없지만, db 단에서 작업을 하여 정리한다음에 로직단에 넘겨서 로직을 깔끔하게 정리 할 수 있다. 이럴 경우에 STRING_SPLIT 함수를 사용할 수 있다. STRING_SPLIT 함수는 지정된 구분 기호 문자에 따라 문자열을 부분 문자열의 행으로 분할하는 테이블 반환 함수이다. STRING_SPLIT 에 대한 상세설명은 아래를 참고바란다. https://docs.microsoft.com/ko-kr/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 STRING_SPLIT(Trans..

ssh9308
'SQL Basic' 카테고리의 글 목록