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 2022 / 설치

SQL Server 2022 / 설치

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

SQL Server / SSMS / 탭 설정하는 방법

SQL Server / SSMS / 탭 설정하는 방법

SSMS의 텍스트 에디터의 기본 탭 크기는 4이다. 만약 탭 크기를 변경하고 싶다면 을 열고, 텍스트 편집기 > 모든 언어 > 탭 으로 이동하여, 탭 크기의 수를 조정한다. 그리고 이에 맞게 들여쓰기도 같이 조정한다. 개인적으로 선호하는 설정은 탭 크기 2에 공백 삽입.

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server에 스케줄에 따라 자동 백업하는 작업을 추가할 때 다음과 같은 메시지가 나왔습니다. SQL Server Agent가 실행되고 있지 않아 작업을 추가할 수 없는 것입니다. SQL Server Agent가 실행 중이 아니어서 발생한 문제이므로, 실행시키면 해결되겠죠? SQL Server가 설치된 컴퓨터의 서비스를 엽니다. Windows Server라면 서버 관리자에서 를 클릭하면 됩니다. 아니면, 실행 창을 ...

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

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

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

SQL Server / SSMS / 글꼴 변경하는 방법

SQL Server / SSMS / 글꼴 변경하는 방법

SQL Server 관리는 보통 SSMS(SQL Server Management Studio)로 한다. 다른 툴도 많이 있지만, 전용 도구가 갖는 장점이 많이 있기 때문이다. 보통 한글 버전을 설치하게 되는데, 쿼리 창 기본 글꼴이 돋움체이다. 만약 이 글꼴이 마음에 들지 않는다면 옵션에서 변경할 수 있다. 변경은 에서 한다. 에서 글꼴을 설정해주면 끝. 개인적으로 ...

SQL Server 2022 / SQL Server 사용자 인증 가능하게 하는 방법

SQL Server 2022 / SQL Server 사용자 인증 가능하게 하는 방법

SQL Server를 설치할 때 별도의 설정을 하지 않았다면, Windows 인증만 가능하다. 만약 SQL Server의 인증도 필요하게 되었다면 설정 변경을 해야 한다. 아래는 SSMS를 이용하여 서버 인증 방식을 변경하는 방법이다. SSMS에서 개체를 선택하고 마우스 우클릭한다. 을 클릭한다. 왼쪽에서 을 선택한다. 오른쪽에 있는 를 선택한다. 을 클릭한다. 이 변경은 SQL Server ...

SQL Server / 데이터베이스 / 만들기, 삭제하기, 수정하기, 조회하기

데이터베이스 만들기 데이터베이스는 create database로 만든다. shop이라는 이름의 데이터베이스를 만든다. create database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. create database "shop.shop"; create database ; 데이터베이스 삭제하기 데이터베이스는 drop database로 삭제한다. drop database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. drop database "shop.shop"; drop database ; 데이터베이스 사용하기 작업 대상이 되는 데이터베이스를 ...

SQL Server / 스키마 / 만들기, 조회하기, 수정하기, 삭제하기

스키마(Schema)를 이용하여 테이블을 분류하고 권한 관리를 할 수 있다. 스키마 만들기 a라는 이름의 스키마를 만든다. create schema a; 스키마 조회하기 스키마 정보를 출력한다. select * from sys.schemas; 테이블 만들기 스키마 지정 없이 테이블을 만들면 dbo 스키마가 붙는다. create table client ( id int ); 스키마를 지정하고 만들면, 그 스키마에 테이블이 만들어진다. create table a.client ( id int ); dbo.client와 a.client는 테이블 이름은 ...

SQL Server Express, SSMS, AdventureWorks 설치하는 방법

SQL Server Express, SSMS, AdventureWorks 설치하는 방법

SQL Server Express는 Microsoft가 제공하는 무료 SQL Server입니다. SQL Server Express, 그것을 관리하는 툴인 SSMS(SQL Server Management Studio), 샘플 데이터베이스 AdventureWorks를 설치하는 방법을 알아보겠습니다. SQL Server Express 다음 링크로 접속합니다. https://www.microsoft.com/ko-kr/sql-server/sql-server-downloads 밑으로 조금 내려가면 Express 다운로드 링크가 있습니다. 클릭하면 바로 다운로드합니다. 다운로드한 파일을 실행하면 다음과 같은 창이 나옵니다. 을 클릭합니다. 을 클릭합니다. 설치 위치를 정한 후 를 ...

SQL Server / Query / JOIN

SQL Server / Query / JOIN

JOIN으로 여러 개의 테이블의 데이터를 연결하여 조회할 수 있다. 다음과 같은 두 개의 테이블이 있다고 하자. country에는 나라의 이름이, city에는 도시의 이름이 있다.  INNER JOIN country 테이블의 country_no와 city 테이블의 country_no가 같은 것을 연결한다. 두 테이블에 모두 존재하는 데이터를 출력한다. select country.country_name, city.city_name from country inner join city on country.country_no = city.country_no ; LEFT JOIN country 테이블의 country_no와 ...