SQL Server / Query / SELECT / 데이터 조회

예제로 사용한 데이터베이스는 AdventureWorks이다.

SELECT로 원하는 데이터를 조회한다.

SELECT FROM

기본

SELECT 뒤에는 조회할 열 이름을, FROM 뒤에는 조회할 테이블 이름을 입력한다. 모든 열을 조회한다면 *를 사용한다.

  • HumanResources.Employee 테이블의 모든 열을 조회한다.
select 
  *
from HumanResources.Employee
;

  • HumanResources.Employee 테이블에서 BusinessEntityID, JobTitle, BirthDate, HireDate를 조회한다.
select 
  BusinessEntityID,
  JobTitle,
  BirthDate,
  HireDate
from HumanResources.Employee
;

TOP

TOP으로 조회 개수를 정한다.

  • 상위 10개를 조회한다.
select top( 10 )
  *
from HumanResources.Employee
;
  • 상위 10%를 조회한다.
select top( 10 ) percent
  *
from HumanResources.Employee
;

DISTINCT

DISTINCT로 중복된 것은 하나만 조회할 수 있다.

  • 중복된 것을 제외하고 JobTitle을 조회한다.
select distinct
  JobTitle
from HumanResources.Employee
;

JOIN

WHERE

WHERE 절을 이용하여 특정 조건에 부합하는 데이터만 조회할 수 있다.

  • JobTitle이 Design Engineer인 데이터만 조회한다.
select 
  BusinessEntityID,
  JobTitle,
  BirthDate,
  HireDate
from HumanResources.Employee
where JobTitle = 'Design Engineer'
;

GROUP BY

GROUP BY 절을 이용하여 데이터를 그룹화할 수 있다. COUNT(), SUM() 등 집계함수와 함께 사용한다.

  • JobTitle로 그룹화하고 BusinessEntityID의 수를 조회한다. 즉 JobTitle별 사람 수를 의미한다.
select 
  JobTitle,
  count( BusinessEntityID ) as Count
from HumanResources.Employee
group by JobTitle
;

HAVING

집계 함수에 대해 조건은 HAVING으로 만든다.

  • 사람 수가 2보다 큰 JobTitle을 조회한다.
select 
  JobTitle,
  count( BusinessEntityID ) as Count
from HumanResources.Employee
group by JobTitle
having count( BusinessEntityID ) > 2
;

ROLLUP

ORDER BY

ORDER BY 절을 이용하여 오름차순 또는 내림차순으로 정렬할 수 있다. 오름차순일 때는 ASC를, 내림차순일 때는 DESC를 붙인다. 기본값은 ASC이므로 생략 가능하다.

  • JobTitle 오름차순으로 정렬한다.
select 
  *
from HumanResources.Employee
order by JobTitle
;
  • JobTitle 오름차순, HireDate 내림차순으로 정렬한다.
select 
  *
from HumanResources.Employee
order by
  JobTitle,
  HireDate desc
;

ntext, text, image, geography, geometry, xml 등의 데이터 형식에 대해서는 order by를 사용할 수 없다.

OFFSET, FETCH

OFFSET은 지정한 행의 수만큼 생략하고 출력하게 한다. ORDER BY와 함께 사용한다.

  • BusinessEntityID 오름차순으로 출력하되, 상위 4개의 행을 생략한다.
select
  *
from HumanResources.Employee
order by BusinessEntityID
offset 4 rows
;

FETCH로 출력할 행의 수를 제한할 수 있다.

  • BusinessEntityID 오름차순으로 출력하되, 상위 4개의 행을 생략하고, 10개를 출력한다.
select
  *
from HumanResources.Employee
order by BusinessEntityID
offset 4 rows
fetch next 10 rows only
;

 

같은 카테고리의 다른 글

SQL Server / 열 / 만들기, 삭제하기, 수정하기, 조회하기

열 정보 조회하기 방법 1 client 테이블의 열의 모든 정보를 조회한다. select * from information_schema.columns where table_name = 'client'; client 테이블의 열의 특정 정보만 조회한다. select column_name, ordinal_position, data_type from information_schema.columns where table_name = 'client'; 방법 2 execute sp_columns @table_name = 'city'; 열 추가하기 client 테이블에 client_name 열을 추가한다. 테이터 형식은 varchar, 최대 길이는 50이다. alter table client add ...

SQL Server 2022 / 설치

SQL Server 2022 / 설치

SQL Server 설치 DVD 또는 ISO 파일 안에 있는 setup 파일을 더블 클릭하여 실행한다. 왼쪽에서 를 클릭한다. 무료 버전을 선택하거나 제품 키를 입력 후 을 클릭한다. 약관에 동의하고 을 클릭한다. 체크 안 해도 되지만, 권장사항이므로 인터넷에 연결되어 있다면 [Microsoft 업데이트를 통해 업데이트 ...

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

만약 공부에 필요한 샘플 데이터베이스가 필요하다면 Micrososft에서 제공하는 AdventureWorks를 사용하자. AdventureWorks 샘플 데이터베이스 페이지에 접속하여 백업 파일을 다운로드한다. AdventureWorks는 OLTP 데이터베이스, AdventureWorksDW는 OLAP 데이터베이스, AdventureWorksLT는 AdventureWorks의 경량 및 축소 버전이다. 디스크 공간이 충분하다면 AdventureWorks와 AdventureWorksDW를 설치하자. SSMS에서 를 선택하고... 마우스 우클릭 후 을 클릭한다. 를 선택하고, 찾아보기 아이콘을 클릭한 후... 를 클릭하고... 다운로드한 파일을 선택하고 을 클릭한다. 을 ...

SQL Server / Agent XPs 구성 요소는 이 서버의 보안 구성에 따라 해제되었습니다.

SQL Server / Agent XPs 구성 요소는 이 서버의 보안 구성에 따라 해제되었습니다.

SSMS로 작업하다보면 다음과 같은 메시지를 만날 때가 있습니다. 이를 해결하는 방법은... SQL Server가 설치된 컴퓨터에서 SSMS를 실행한 후, 을 선택하고... 마우스 우클릭 한 후 을 클릭합니다. 를 클릭하고... 잠시 기다리면... 다음과 같이 메뉴가 바뀌면서 해결됩니다.

SQL Server / Query / GO

예를 들어 DB라는 데이터베이스를 만들고, ID라는 열을 갖는 TB라는 테이블을 만든다고 하자. 쿼리로 만드는 경우 다음과 같이 할 수 있는데... CREATE DATABASE DB; USE DB; CREATE TABLE TB ( ID int ); 다음과 같은 에러가 난다. 데이터베이스 'DB'이(가) 없습니다. 이름을 제대로 입력했는지 확인하십시오. 이런 경우 GO를 사용한다. GO를 기준으로 해서 GO 위의 쿼리 실행을 마친 후 ...

SQL Server / 연산자 / 비교 연산자, 논리 연산자

예제로 사용한 데이터베이스는 AdventureWorks이다. 같다 HumanResources.Employee 테이블에서 BusinessEntityID가 10인 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID = 10 ; 같지 않다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 큰, 즉 같지 않은 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID <> 10 ; <> 대신 !=를 사용해도 된다. select * from HumanResources.Employee where BusinessEntityID != 10 ; 크다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 큰 데이터를 출력한다. select ...

SQL Server / 포트 변경하는 방법

SQL Server / 포트 변경하는 방법

SQL Server의 기본 포트는 1433이다. 보안을 비롯하여 여러 가지 이유로 포트를 변경해야 할 경우가 있다. SQL Server의 포트를 1433에서 다른 것으로 변경하는 방법은 다음과 같다. 를 연다. 에서 인스턴스를 선택한다. 을 클릭한다. 의 TCP 포트를 원하는 것으로 변경한다. 또는 ...

SQL Server / 관리 / 스케줄에 따라 자동 백업하는 방법

SQL Server / 관리 / 스케줄에 따라 자동 백업하는 방법

데이터베이스는 주기적으로 백업을 해야 합니다. SQL Server의 유지 관리 계획을 이용하면, 백업 되풀이 작업을 만들어 일정 주기마다 자동으로 백업하게 할 수 있습니다. SSMS로 자동 백업을 만드는 방법을 알아보겠습니다. 을 선택합니다. 마우스 우클릭하고 를 클릭합니다. 을 클릭합니다. 이름을 적절히 정하고 을 클릭합니다. 를 선택하고 ...

SQL Server / SSMS / 다이어그램 만드는 방법

SQL Server / SSMS / 다이어그램 만드는 방법

다이어그램 생성 시 아래와 같은 에러가 난다면 여기를 참고하여 해결할 수 있습니다. 보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (Microsoft SQL Server, 오류: 15517) 데이터베이스 하위에 있는 을 선택합니다. 마우스 우클릭 후 을 클릭합니다. 다이어그램에 포함될 테이블을 ...

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

테이블 만들기 client 테이블을 만든다. 열이 하나도 없으면 만들어지지 않으므로, 적어도 하나의 열은 같이 만들어야 한다. create table client ( id int ); 테이블 삭제하기 client 테이블을 삭제한다. drop table client; 테이블 이름 변경하기 테이블 client의 이름을 account로 변경한다. sp_rename client, account; 테이블 목록 조회하기 방법 1 select * from information_schema.tables; 방법 2 execute sp_tables @table_type = "'table'"; SSMS 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...