728x90

MSSQL 21

ms-sql 요일 정보 , 요일 한글 함수

DATENAME,DATEPART 날짜 관련 함수 요일정보를 확인하는 방법에 대해 알아 보겠습니다. 요일정보를 확인하는 함수는 DATENAME,DATEPART로 MSSQL내장되어있는 함수로 사용가능하며 요일값을 변환(일,월,화,수...토)해서 받고 싶을경우는 사용자 함수를 만들어서 사용하면됩니다. 1. DATENAME, DATEPART함수사용 DATENAME함수를 사용해서 날짜필드의 요일값을 확인할 수 있습니다. DATENAME(weekday, 날짜필드)문으로 실행해보면 아래와 같이 일요일,월요일...토요일 한글로 나타나는 부분을 확인 할 수 있습니다. MSSQL이 한글버전이여서 아래와 같이 나오며 영문버전은 Sunday와 영문으로 결과값을 반환합니다. MSDN자료를 살펴보면 DATENAME(datepar..

MS-SQL 2023.01.02

Clustered Index, Non-Clustered Index 차이

인덱스(Index)란 데이터베이스 분야에서 테이블에 대한 동작 속도를 높여주는 자료구조 Database에서 말하는 index는 일반적인 책에서 말하는 목차에 비유할 수 있다. 만약 책에서 특정 챕터를 찾아보고 싶다면, 책의 목차(index)를 찾고 목차에 적힌 페이지로 이동하면된다. index도 마찬가지이다. 데이터의 위치를 가리키는 지표와 같은 것이다. 따라서, 빠른 시간내에 원하는 자료를 찾을 수 있다는 장점이있다. 이러한 index에는 테이블에 있는 하나 이상의 열로 작성되는 키가 포함된다. 그리고 이 키값은 SQL SERVER에서 B-Tree 에 저장된다.(B-Tree는 키 값과 연결된 행을 빠르게 찾을 수 있는 자료구조이다.) Database에서 index의 구조는 크게 Clustered 와 N..

카테고리 없음 2022.12.26

인덱스 생성

인덱스의 정의와 사용방법 - 인덱스란? 테이블의 데이터를 조회할 때 빠르고 효과적으로 조회할 수 있도록 도와주는 역활을 하는 데이터 구조입니다. 조회는 빠르지만 INSERT, UPDATE등을 수행할 떄는 느려지기 때문에 조회가 많은 테이블을 기준으로 설정하여야 합니다. ​ - MSSQL INDEX 생성 방법 (중복 허용) ​ CREATE INDEX [인덱스명] ON [테이블명] ([컬럼명] [정렬기준]) ​ - MSSQL UNIQUE INDEX 생성 방법 (중복 비 허용) ​ CREATE UNIQUE INDEX [인덱스명] ON [테이블명] ([컬럼명] [정렬기준]) ​ [참고사항] INDEX 와 UNIQUE INDEX INDEX 와 UNIQUE INDEX는 둘다 조회를 효과적으로 하는역활을 하지만 UN..

MS-SQL 2022.12.21

Merge 문이란? (feat. 조건부 데이터 변경)

MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을 사용하여 UPDATE나 INSERT로 분기하는 로직을 작성해야 하는 번거로움이 있다. MERGE 문의 경우 단일(한개의) 테이블에 UPDATE 또는 INSERT를 하는 경우 많이 사용하지만, 두개의 테이블을 비교하거나 서브 쿼리의 결과에 따라서 UPDATE, INSERT 작업이 가능하다. 단일 테이블 사용법 (DUAL) 오라클에서는 DUAL이라는 dummy 테이블을 USING 절에 사용하면 단일 테이블 작업이 간단하지만, MSSQL에서는 DUAL 테이블이 없기 때문에 dumm..

MS-SQL 2022.12.17

단일 사용자 모드 해제

갑자기 단일 사용자로 데이타베이스를 엑세스 할수 없을 때 - 해제 방법 1. 명령어로 연결된 데이터베이스 확인 sp_who2 2. 연결되어있는 PID 값 삭제 kill pid값 3.다중접속으로 수정 ALTER DATABASE [디비명] SET MULTI_USER 4.단일 사용자 모드로 변경 EXEC sp_dboption '디비명', 'single user' , ' TRUE ' 4-1 단일사용자 해제 EXEC sp_dboption '디비명', 'single user' , ' FLASE' 5. 디비명 변경 ( 이전 디비명 , 바꿀디비명) EXEC sp_renamedb 'aaa', 'bbb' USE master; GO ALTER DATABASE AdventureWorks2012 SET SINGLE_USER W..

MS-SQL 2022.12.15

IF ELSE 조건문(+ 유의점)

IF ELSE 구문 (조건문) IF (조건식) BEGIN 조건식이 참일경우 SQL구문 END ELSE BEGIN 조건식이 거짓일경우 SQL구문 END IF (조건식1) BEGIN 조건식1이 참일경우 SQL구문 END ELSE IF (조건식2) BEGIN 조건식1이 거짓이고, 조건식2가 참일경우 SQL구문 END ELSE BEGIN 조건식1,2 모두 거짓일경우 SQL구문 END 예제와 함께 살펴보자 조건식 (1=1)이 참일 경우 IF의 BEGIN... END 안에 있는 SQL 구문이 실행된다. IF (1=1) BEGIN PRINT('참') END ELSE BEGIN PRINT('거짓') END 결과 조건식 (1=2)이 거짓일 경우 ELSE의 BEGIN... END 안에 있는 SQL 구문이 실행된다. IF ..

MS-SQL 2022.12.14

Convert(), Cast() 함수 사용예제

CONVERT함수와 CAST함수 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습니다. 자세한 설명은 해당 사이트에 있으니 참조하시기 바랍니다. Conver함수와 Cast함수 사용링크 Convert 개인적으로 가장 많이 사용하는 데이터 변환 함수라고 생각합니다. 날짜 변환하는데도 유용하게 사용 가능합니다. 참고로 부동 소수점 또는 숫자에서 정수로 변환할 때 CONVERT() 함수는 결과를 자르고 다른 변환일 경우에는 반올림합니다. 사용법 --문법-- CONVERT(data_type[(length)], expression[style]) --예시-- SELECT CONVERT(NVARCHAR(10),칼럼) AS 칼럼명 FROM MY_TABL..

MS-SQL 2022.12.13

WITH (NOLOCK) 의 개념

MSSQL 은 기본적으로 SELECT 시 공유잠금(S Lock) 이 걸린다. 이는 MSSQL 의 기본 격리수준(Isolation Level) 이 Read Committed 이기 때문이다. 즉, DML(INSERT, UPDATE, DELETE) 작업중인 ROW 또는 TABLE 에 SELECT 할 경우,해당 작업이 끝나야 SELECT 할 수 있다는 의미이다. 만일 이렇게 수행된다면 DB의 성능은 떨어지고, 데드락(Deadlock) 이 발생될 수 있다. 이를 방지하기 위해 WITH(NOLOCK) 을 사용할 수 있다. WITH(NOLOCK) 의 격리수준(Isolation Level)은 Read Uncommitted 와 같다고 보면 된다. 즉, SELECT 할 ROW 또는 TABLE 이 잠겨있어도(작업중이여도) ..

MS-SQL 2022.12.13

WITH 구문, CTE(Common Table Expression)이란?

WITH 절 -> CTE, Common Table Experssion을 표현하기 위한 구문 CTE? CTE란 기존의 뷰나 파생 테이블, 임시 테이블 등으로 사용되는 것들을 대신할 수 있고, 보다 더 간결한 표현을 사용할 수 있따는 장점이 있다. CTE는 Non-Recursive(비재귀) CTE 와 Recursive(재귀) CTE 로 두가지 종류가 있다. Non-Recursive(비재귀) CTE 일단 상대적으로 간단한 Non-Recursive(비재귀) CTE 에 대해 먼저 알아보자. Non-Recursive CTE의 경우는 보다 복잡한 쿼리문을 단순화 시키는데 주로 사용된다. 형식은 아래와 같다. WITH CTE_테이블명(열이름1, 열이름2, 열이름3...) AS ( ) SELECT 열이름1, 열이름2, ..

MS-SQL 2022.12.11

GROUPING, GROUPING_ID 함수

GROUPING, GROUPING_ID 함수는 소계와 합계를 집계할 때 사용하는 ROLLUP, CUBE, GROUPING SETS 함수와 함계 사용된다. 소계와 합계로 집계되어 출력된 행을 구분할 때 사용한다. 기본 사용법 GROUPING 함수는 1개의 매개변수만 있으며, GROUPING_ID 함수는 여러개의 매개변수를 입력할 수 있다. GROUPING 함수 SELECT job , deptno , SUM(sal) , GROUPING(job) , GROUPING(deptno) FROM emp WHERE job IN ('ANALYST', 'MANAGER') GROUP BY ROLLUP(job, deptno) GROUPING 함수는 소계, 합계로 집계된 행의 컬럼 NULL을 구분할 수있다. NULL인 경우 1..

MS-SQL 2022.12.11
728x90