SQL/MSSQL

    [MSSQL] Select Into / 테이블 복사 쿼리 사용 방법

    다음은 SELECT INTO문을 사용하여 테이블을 복사하는 예시입니다. SELECT * INTO new_table FROM original_table; 위 예시에서 new_table은 복사된 새로운 테이블의 이름을 나타내고, original_table은 복사할 기존 테이블의 이름입니다. * 는 모든 열을 선택하는 것을 의미합니다. 위 예시를 사용하면, original_table의 모든 행과 열이 new_table로 복사됩니다. 또 다른 방법으로는 INSERT INTO문을 사용하는 것입니다. 이 방법은 기존 테이블과 동일한 스키마를 가진 새로운 테이블을 만들고, 기존 테이블의 데이터를 새로운 테이블에 복사하는 방법입니다. CREATE TABLE new_table AS SELECT * FROM origina..

    [MSSQL] With 절 사용 방법

    MS SQL Server에서 WITH 절은 일시적인 서브쿼리를 생성하는 방법 중 하나입니다. 이 서브쿼리는 WITH 절 뒤에 정의된 이름을 가지며, 이 이름을 사용하여 서브쿼리 결과를 참조할 수 있습니다. 이러한 구문을 "공통 테이블 식(Common Table Expression, CTE)"이라고도 부릅니다. WITH 절은 보다 복잡한 쿼리를 작성할 때 유용하며, 코드 가독성을 높이고 중복을 줄일 수 있습니다. 일반적으로 WITH 절은 두 가지 방식으로 사용됩니다. 1. WITH 절과 함께 서브쿼리 사용하기 WITH sales_data AS ( SELECT customer_id, SUM(amount) AS total_sales FROM sales GROUP BY customer_id ) SELECT cu..

    [MSSQL] Create Temp Table / 임시 테이블 생성 쿼리

    MS SQL Server에서 임시 테이블을 사용하려면 다음과 같은 구문을 사용할 수 있습니다. CREATE TABLE 문과 함께 #을 사용하여 임시 테이블을 생성합니다. CREATE TABLE #임시테이블명 ( 컬럼1 데이터형, 컬럼2 데이터형, ... ); 예를 들어, "temp_table" 이라는 임시 테이블을 생성하려면 다음과 같이 쿼리를 작성할 수 있습니다. CREATE TABLE #temp_table ( id INT, name VARCHAR(50), age INT ); SELECT INTO 문과 함께 #을 사용하여 임시 테이블을 생성합니다. SELECT * INTO #임시테이블명 FROM [원본테이블명] WHERE [조건]; 예를 들어, "employees" 테이블에서 "city" 컬럼이 "Se..

    [MSSQL] SQL SERVER Table NOLOCK 쿼리

    MS SQL Server에서 NOLOCK 키워드는 데이터베이스에서 읽기 작업을 수행할 때 다른 트랜잭션에서 동일한 데이터에 대한 업데이트나 삭제 등의 작업을 수행하더라도 대기하지 않고 무시하도록 지정하는 옵션입니다. NOLOCK 키워드는 SELECT 문의 FROM 절 또는 JOIN 절에 사용됩니다. 다음은 NOLOCK 키워드를 사용한 예시입니다. SELECT * FROM [테이블 이름] WITH (NOLOCK); 데이터베이스에서 읽기 작업을 수행할 때 다른 트랜잭션에서 동일한 데이터에 대한 업데이트나 삭제 등의 작업을 수행하면 대기하게 되는데, NOLOCK 키워드를 사용하면 해당 작업을 무시하고 바로 읽기 작업을 수행합니다. 이렇게 함으로써 데이터베이스 성능을 향상시킬 수 있습니다. 하지만 NOLOCK ..

    [MSSQL] Truncate Table / 테이블 데이터 전체 삭제 쿼리

    MS SQL Server에서 테이블의 모든 데이터를 삭제하는 또 다른 방법은 TRUNCATE TABLE 구문을 사용하는 것입니다. TRUNCATE TABLE 구문은 DELETE 구문과 다르게 테이블의 모든 행을 한 번에 삭제하므로 성능상의 이점이 있습니다. TRUNCATE TABLE 구문은 다음과 같은 구문을 사용합니다. TRUNCATE TABLE [테이블 이름]; 예를 들어, "customers" 테이블의 모든 데이터를 삭제하려면 다음과 같이 쿼리를 작성할 수 있습니다. TRUNCATE TABLE customers; 위 쿼리는 "customers" 테이블의 모든 데이터를 삭제합니다. 하지만 TRUNCATE TABLE 구문은 데이터를 바로 삭제하므로 롤백이 불가능하며, 트리거를 사용할 수 없습니다. 따라..

    [MSSQL] Delete Table 테이블 데이터 삭제 방법 및 예시

    `DELETE` 문은 테이블에서 하나 이상의 행을 제거하는 데 사용됩니다. 예시를 위해 다음과 같은 `Customers` 테이블을 사용하겠습니다. 이 테이블은 고객 정보를 저장하는 간단한 테이블입니다. CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Email VARCHAR(100) ); 이제 몇 가지 예시를 통해 `DELETE` 문을 설명하겠습니다. 예시 1: 특정 조건을 만족하는 행 삭제 -- 고객 중에서 이메일 주소가 'example@email.com'인 고객 삭제 DELETE FROM Customers WHERE Email = 'example@email.com'; 이 쿼리..

    [MSSQL] Update Table / 테이블 업데이트 쿼리

    MS SQL Server에서 데이터를 업데이트하는 쿼리는 다음과 같은 구문을 사용합니다. UPDATE [테이블 이름] SET [컬럼 이름] = [새로운 값] WHERE [조건]; 예를 들어, "customers" 테이블에서 "city" 컬럼이 "Seoul"인 고객의 "phone" 컬럼 값을 "010-1234-5678"로 업데이트하려면 다음과 같이 쿼리를 작성할 수 있습니다. UPDATE customers SET phone = '010-1234-5678' WHERE city = 'Seoul'; 위 쿼리는 "customers" 테이블에서 "city"가 "Seoul"인 모든 행을 선택하고, 해당 행의 "phone" 컬럼 값을 "010-1234-5678"로 업데이트합니다.

    [MSSQL] Create Table / 테이블 생성 쿼리

    MS SQL Server에서 새로운 테이블을 만드는 CREATE TABLE 쿼리 예제입니다. CREATE TABLE MyTable ( ID INT PRIMARY KEY, Name VARCHAR(50), Age INT, Email VARCHAR(100) ) MyTable이라는 테이블을 만들고, ID, Name, Age, Email의 4개의 열(column)을 정의했습니다. ID는 주요 키(primary key)로 설정되고, 나머지 열은 각각 INT, VARCHAR 등의 데이터 타입을 가지며, 각각의 최대 길이도 지정할 수 있습니다.

    [MSSQL] 데이터베이스 인덱스 조각화 조회 쿼리

    MSSQL 데이터베이스 내 인덱스 조각화 조회 쿼리입니다. SYS.DM_DB_INDEX_PHYSICAL_STATS 테이블과 SYS.INDEXES, SYSINDEXES 테이블 inner join 하여 인덱스 조각화 데이터를 추출합니다. 조각화가 많이 진행된 인덱스 내림차순으로 정렬합니다. 'Database_Name' 에 데이터베이스명 적어주시면 됩니다. SELECT ROW_NUMBER() over (order by ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) desc) AS Rownum ,DB_NAME() AS DatabaseName ,OBJECT_NAME(S.OBJECT_ID) AS TableName ,I.NAME AS IndexName ,ROUND(AVG_FRAGMENTATIO..

    [MSSQL] 데이터베이스 테이블 모든 컬럼명 조회 쿼리

    [MSSQL] 데이터베이스 테이블 모든 컬럼명 조회 쿼리입니다. INFORMATION_SCHEMA.COLUMNS 테이블에 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 테이블을 LEFT OUTER JOIN 하여 추출하는 쿼리 입니다. 조회 컬럼은 카탈로그, 스키마, 테이블명, 컬럼명, 데이터 타입(데이터 형식과 크기), 기본키(RPIMARY_KEY), 데이터 정렬 방식, 널(NULL) 값 허용으로 설정 했습니다. 스키마, 테이블명, 컬럼 순서 순으로 오름차순 정렬했습니다. Database_name 부분에 데이터베이스 명을 넣어주시면 됩니다. SELECT A.TABLE_CATALOG,A.TABLE_SCHEMA, A.TABLE_NAME, A.COLUMN_NAME, CASE WHEN A.DA..