전산직으로 살아남기

MSSQL - 데이터 조회하기 본문

Development/MSSQL

MSSQL - 데이터 조회하기

케이마 2024. 4. 23. 13:54
728x90
반응형

1. 데이터 조회하기

데이터를 조회할 때는 기본적으로 최상단에 DB를 선언하고 SELECT 문을 작성합니다.

use DB이름 -- DB를 변경할 때 use를 사용한다.

SELECT *               -- select에는 확인하고 싶은 컬럼을 입력한다. 전체는 * 이다.
  FROM Table_A A       -- from에는 조회할 Table을 입력한다. Table 뒤에 있는 A는 Alias이다.

 

참고로 use를 사용하지 않더라도 해당 쿼리문에 대한 DB를 설정할 수 있습니다.

DB 설정 예시
DB 설정 예시

 

🗒️ Alias란?

Alias는 값에 별칭을 주어 접근을 별칭 형태로 할 수 있도록 하는 역할을 합니다. 데이터, 컬럼, 테이블, 서브쿼리, WHERE 절 등에 사용할 수 있다. 대표적으로 알아보기 힘든 컬럼에 AS(별칭)을 많이 사용합니다. 사용 시 AS는 생략이 가능합니다.

 

2. 중복 데이터 제거 후 조회하기

중복데이터를 제거하고 조회하고 싶을 때는 DISTINCT를 사용합니다. 중복 조건은 SELECT에서 선언된 컬럼입니다.

SELECT DISTINCT column1, column2
FROM table_name

 

3. 데드락을 방지하여 조회하기

MSSQL은 DML(INSERT, UPDATE, DELETE) 작업 중에는 LOCK 상태가 되어 해당 작업 이후에 SELECT 할 수 있습니다다. 문제는 이 작업중에 SELECT를 진행하면 멈추게 된다는 것입니다. 이러한 멈춤을 방지하기 위해 WITH(NOLOCK)을 사용합니다.

SELECT A.name
FROM table_name with(nolock) A

 

4. 조회 조건 추가하기

WHERE 절을 사용하면 Table 자료를 특정 조건으로 조회할 수 있습니다. 조건을 여러 개 사용할 경우에는 AND 또는 OR Syntax를 사용하여 추가할 수 있습니다.

SELECT *               
  FROM Table_A A       
 WHERE A.Name = '홍길동' -- 이름이 홍길동인 경우

SELECT *               
  FROM Table_A A       
 WHERE A.Name <> '홍길동' -- 이름이 홍길동이 아닌 경우

SELECT *               
  FROM Table_A A       
 WHERE A.Name = '홍길동' -- 이름이 홍길동이고 나이가 30인 경우
   AND A.Age = 30

SELECT *               
  FROM Table_A A       
 WHERE A.Name = '홍길동' -- 이름이 홍길동이거나 나이가 30인 경우
    OR A.Age = 30

 

5. IN 조건 사용하기

WHERE 절에서 조건을 설정할 때 A, B, C 이 세 가지 조건 중에 해당하는 값을 찾을 경우 OR을 여러 번 사용해야 되는 번거로움이 있습니다. 이때 IN 구문을 사용하면 간편하게 조건을 설정할 수 있습니다.

SELECT *               
  FROM Table_A A       
 WHERE A.Name IN ('홍길동','이순신','김유신')

--위와 동일한 결과를 보여주는 쿼리문
SELECT *               
  FROM Table_A A       
 WHERE (A.Name = '홍길동' 
    OR A.Name = '이순신'
    OR A.Name = '김유신')

 

6. LIKE 조건 사용하기

-- A로 시작하는 문자 찾기
SELECT *               
  FROM Table_A A       
 WHERE A.Name LIKE '홍%'

-- A로 끝나는 문자 찾기
SELECT *               
  FROM Table_A A       
 WHERE A.Name LIKE '%홍'

-- A를 포함하는 문자 찾기
SELECT *               
  FROM Table_A A       
 WHERE A.Name LIKE '%홍%'

 

7. BETWEEN 조건 사용하기

WHERE 조건에서 구간을 조건으로 데이터를 조회할 경우에 BEWENN을 사용합니다.

SELECT *               
  FROM Table_A A       
 WHERE A.Age BETWEEN 30 AND 60 -- 30~60세 까지의 인원을 조회

 

8. ISNULL 사용하기

데이터가 NULL값인 경우 ISNULL을 사용하면 다른 값으로 대체할 수 있습니다.

SELECT ISNULL(SCORE,0) --SCORE값이 NULL인 경우에 0으로 대체            
  FROM Table_A A

 

9. 조회 순서 추가하기

ORDER BY 절을 사용하여 조회되는 데이터의 조회 순서를 정할 수 있습니다. 조건이 되는 컬럼은 여러 개도 가능하며 ASC는 오름차순, DESC는 내림차순이며 ASC|DESC를 입력하지 않은 경우에는 Default로 ASC가 적용됩니다.

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... -- ASC|DESC

 

10. 다국어 조회하기

일부 다국어의 경우 SELECT 문을 사용하여 조회하면 깨지는 경우를 확인할 수 있습니다. 문자열을 데이터베이스의 기본 코드 페이지로 변환되는데 이 기본 코드 페이지는 특정 문자를 인식하지 못할 수 있습니다. 그렇기에 이 경우에는 후속 문자가 유니코드임을 명시하는 N 접두사를 사용합니다.

SELECT ' Rất Han Hạnh' -- 자료가 깨짐
SELECT N' Rất Han Hạnh' -- 정상적으로 나옴

SELECT *
  FROM FOREIGN_DATA A 
 WHERE A.GREETING = N'Rất Han Hạnh' -- 조건절에서 비교할 때도 N을 사용한다.

 

11. 상위 몇 개의 데이터만 조회하기

TOP 명령어를 사용하면 원하는 만큼의 데이터를 조회할 수 있습니다.

SELECT TOP 1 column_name
FROM table_name
WHERE condition;

 

12. JOIN 사용하기

SQL의 장점은 다른 테이블과의 관계성을 이용하여 데이터 조회가 가능하다는 점입니다. 이때 사용하는 구문이 Join입니다.

SELECT A.Name, B.Dept
  FROM EMP_DATA A JOIN DEPT_DATA B
                    ON A.EMP_CD = B.EMP_CD -- ON에는 기준 테이블과 JOIN 테이블의 조건을 작성하면 된다.

 

  • INNER JOIN : 기준 테이블과 조인 테이블 모두 데이터가 있는 경우에 조회된다. INNER JOIN은 JOIN으로 생략하여 사용 가능하다.
  • OUTER JOIN : 기준 테이블에만 데이터가 존재하면 조회된다. OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN으로 나뉘며 둘의 차이는 기준 테이블이 다르다는 점이다. (LEFT : 왼쪽, RIGHT : 오른쪽) 참고로 LEFT OUTER JOIN은 LEFT JOIN, RIGHT OUTER JOIN은 RIGHT JOIN으로 사용 가능하다.

 

🗒️ OUTER JOIN은 언제 사용할까요?

일반적으로 하나의 테이블에 모든 데이터를 입력하지 않고 분산하여 데이터를 정리합니다. 예를 들어 구매한 물품내역 테이블이 있다면 해당 테이블에 물품의 이름이 들어있는 게 아닌 물품 코드가 들어있고, 코드 테이블을 참조하여 실제 이름을 불러오곤 합니다. 아래가 그 사례입니다.

SELECT A.Product_CD, B.Minor_NM
  FROM Purchase_DATA A LEFT JOIN Code_Table B 
                              ON B.Major_CD = '0001' -- Table에서 물품에 해당하는 기준키
                             AND A.Product_CD = B.Minor_CD -- 기준테이블과 조인 테이블의 조건값

 

 

 

 

출처

 

SQL SELECT DISTINCT Statement

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

728x90
반응형

'Development > MSSQL' 카테고리의 다른 글

MSSQL - 반복문 사용하기  (0) 2024.05.09
MSSQL - 조건문 사용하기  (0) 2024.05.08
MSSQL - 변수 활용하기  (0) 2024.05.07
MSSQL - Table 제어하기  (0) 2024.04.30
MSSQL 설치하기  (0) 2024.04.23