MSSQL
-
[데이터베이스] SQL 서브 쿼리의 유형 ( IN, NOT IN, EXISTS )데이터베이스와 SQL 2023. 1. 29. 17:49
서브 쿼리는 하나의 SQL문에 포함되는 또 다른 SQL 문으로, 중첩 서브쿼리와 상관 서브 쿼리로 분류 할 수 있다. 중첩 서브쿼리는 단독 실행 가능한 형태이며, 상관 서브쿼리는 외부 테이블 열 참조가 필요한 형태이다. 서브쿼리는 메인 쿼리의 열을 모두 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다. 중첩 서브쿼리는 SELECT절의 비교 연산자에서 많이 사용한다. SELECT ProductID ,UnitPrice ,AvgPrice = (SELECT UnitPrice FROM dbo.[Order Details]) -- 다중 행 반환 FROMdbo.[Order Details] As od WHEREOrderID 20 ); NOT IN ()은 비교 연산자 ()와 논리 연산자 (AND)와 결..
-
[데이터베이스] MSSQL 조인 방법, inner join과 outer join 차이데이터베이스와 SQL 2023. 1. 23. 17:21
관계형 데이터베이스에서 조인 (JOIN)이란, 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 의미한다. 데이터베이스에서 테이블은 정규화되어 여러 개의 테이블로 나뉘어 있으며, 이때 필요한 데이터를 결합하여 원하는 데이터를 추출할 수 있다. 조인에는 여러가지 종류가 있다. Inner Join = (A ∩ B) A INNER JOIN B on A.key = B.key 결과 집합은 교집합으로 중복을 허용한다. OUTER JOINs 은 차집합 + 교집합으로, 교집합은 inner join 차집합은 NULL 값 열로 결합한다. 조인 조건은 교집합에 대한 조건으로 where 절의 위치나 조인 순서에 따라 결과나 성능이 달라진다. 잘못된 OUTER JOIN은 사용하지 않도록 해야한다. Left O..
-
[데이터 베이스] MSSQL SEQUENCE (시퀀스) 개체 생성 및 사용데이터베이스와 SQL 2022. 12. 17. 14:21
시퀀스(Sequene) 는 단어 의미 그대로, 순서를 부여하는 것을 의미한다. 독립 개체로 생성되는데, 순번의 중앙 저장소로 디폴트 타입은 bigint이다. 독립 개체이므로 관리가 필요하며, IDENTITY와 동일하게 활용할 시에는 테이블 단위 개체가 필요하다. 여러 테이블에 공유되는 고유 순번을 생성할 수 있다. 지정 번호 도달하면 다시 시작이 필요한 경우 처음부터 다시 시작하는 cycling 을 지원하고, 순번의 조정 및 변경이 자유로운 편이다. 시퀀스 값을 다른 열을 기준으로 정렬해야 하는 경우에 NEXT VALUE OVER () 절을 사용하면 된다. SEQUENCE 개체 VS. IDENTITY sequence 와 identity의 차이는 다음과 같이 정리할 수 있다. 기능 IDENTITY SEQU..
-
[데이터베이스] MSSQL 다양한 DML 활용하기, 변수와 임시 테이블데이터베이스와 SQL 2022. 11. 11. 20:44
UPDATE + SET 절 열 값을 변수에 저장할 수 있어 후행 SELECT 쿼리가 불필요하다. DECLARE @PVID int = 3150; BEGIN TRAN SELECT PV_ID, UnitLength FROM dbo.ROAD WHERE PV_ID = @PVID; DECLARE @bLeng length, @aLeng length; UPDATE dbo.ROAD SET @bLeng = UnitLength , @aLeng = UnitLength = UnitLength * 1.15 WHERE PV_ID = @PVID; SELECT @bLeng AS bLeng, @aLeng AS aLeng; SELECT PVID, UnitLength FROM dbo.ROAD WHERE PV_ID = @PVID; IF @@t..
-
[데이터베이스] SQL 테이블 값 생성자 VALUES()데이터베이스와 SQL 2022. 10. 29. 18:29
테이블 값 생성자: Values() 행 집합을 선언한 후에 테이블 값을 입력할 때 사용한다. 구현 1 ) FROM ()의 파생 테이블 이전에는 임의의 값을 생성할 때 Union (all)을 이용해서 생성했다면, 현재는 Values를 생성하여 임의의 테이블을 생성할 수 있다. SELECT * FROM (VALUES (1), (2), (3)) AS d(num) 구현 2) INSERT ... VALUES DECLARE @products TABLE ( productName varchar(80), UnitPrice money ); INSERT INTO @products VALUES ('후추', \1000), ('구름', \2000), ((SELECT ProductName FROM dbo.Products WHERE..
-
[데이터베이스] SQL의 핵심 기능, CASE문과 TOP데이터베이스와 SQL 2022. 10. 20. 21:26
CASE 문은 행 단위의 조건 처리를 위한 Transaction SQL 기능 중 하나이다. 나는 실제 실무에서 데이터 검증을 위해서도 CASE 문을 자주 쓰는 편이다. CASE 문은 SQL 이 아닌 다른 언어에서 IF문과 비슷한 기능을 한다고 볼 수 있다. CASE 문을 사용할 때 참고 및 주의 사항은 다음과 같다. 서로 다른 데이터 형을 반환 하는 경우는 명시적으로 변환 하는 것을 권장한다. ELSE 절이 없는 경우에는 NULL을 반환하는데, SUM()과 같은 집계 작업에 활용할 수 있다. CASE 문 평가 전에 내부 식이 먼저 계산되는 경우, 원치 않는 결과가 나올 수 있음. -> 오류 발생 할 수 있다면 해결 코드 추가가 필요하다. 아래 쿼리는 명시적으로 형 변환이 필요한 이유를 보여주는 쿼리이다...
-
데이터베이스의 개체 - 인덱스, 스토어드 프로시저, 트리거데이터베이스와 SQL 2022. 9. 16. 22:27
데이터베이스에서 '테이블'은 가장 기본이 되는 요소이다. 하지만 테이블 외에도 데이터베이스를 구성하는 중요한 개체들이 있는데 바로 인덱스, 스토어드 프로시저, 트리거, 함수, 커서 등이다. 이 부분에 대해서는 나도 아직 모르는 부분이 많아서, 상세한 내용은 더 공부를 한 후에 포스팅 하도록 하고, 이 포스팅에서는 각각의 개체들에 대해 간단한 개념만 정리하고자 한다. 1. 인덱스 (Index) 인덱스는 흔히 책이나 논문 의 맨 마지막 페이지에서 본 적이 있을 것이다. 책에서 특정 단어가 나오는 내용을 찾고자 할 때 인덱스에서 해당 단어에 해당하는 페이지를 확인하면, 바로 그 단어를 찾을 수 있다. 책이 두꺼울 수록 그 효과는 증대된다. 즉, 인덱스를 활용하여 우리는 훨씬 빠른 속도로 정보를 찾을 수 있다...