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
;

 

Related Posts

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 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...

SQL Server / 외부 접속 허용하는 방법

SQL Server / 외부 접속 허용하는 방법

SQL Server는 보통 Windows Server에 설치하게 되는데, 외부에서 접속하기 위해서는 SQL Server가 사용하는 1433 포트를 열어줘야 한다. 설정은 에서 한다. SQL Server의 기본 포트는 1433이다. 가능하다면 보안을 위해 다른 포트로 변경하는 것이 좋다. 별도의 방화벽에서 포트 포워딩을 할 수도 있고, 기본 포트를 변경할 수도 있다. 에서 ...

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의 사용자 계정은 Windows 인증을 이용한 사용자 계정, SQL Server 자체의 사용자 계정이 있습니다. 그 중 SQL Server 자체의 사용자 계정을 만들고, 권한을 부여하는 방법을 알아보겠습니다. SSMS로 SQL Server에 접속합니다. 을 선택합니다.(확장하면 전체 사용자 목록을 볼 수 있습니다.) 마우스 우클릭하고 을 클릭합니다. 사용자를 추가하는 창이 뜹니다. 을 선택하고... 로그인 ...

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

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

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

SQL Server / Query / GO

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

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 / 논리 연산자 / IN, NOT IN

SQL Server / 논리 연산자 / IN, NOT IN

예제로 사용한 데이터베이스는 AdventureWorks이다. IN 다음은 Person.Person 테이블에서 FirstName, MiddleName, LastName을 10개 추출하는 쿼리이다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person 만약 FirstName이 Syed 또는 Sam 또는 John인 사람을 추출하고 싶다면 아래처럼 쿼리한다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName IN ( 'Syed', 'Sam', 'John' ) 물론 아래와 같이 해도 된다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName ...

SQL Server / 제어문 / CASE

SQL Server / 제어문 / CASE

CASE 함수는 데이터의 값에 따라 특정 값을 부여할 때 사용한다. CASE로 시작하여 END로 끝나고, 조건은 WHEN, 부여할 값은 THEN으로 정의한다. 예를 들어 다음과 같은 점수 데이터가 있다고 하자. 20점 이하는 E, 20점 초과 40점 이하는 D, 40점 초과 60점 이하는 C, 60점 초과 80점 이하는 B, 80점 초과 100점 이하는 A를 주고 ...

SQL Server / 설치하는 방법

SQL Server / 설치하는 방법

SQL Server 상용 버전인 SQL Server Standard 또는 SQL Server Enterprise를 설치하고, 샘플 데이터베이스를 가져오는 과정을 정리한다 SQL Server 평가판 다운로드 만약 SQL Server 라이선스가 없다면 다음 링크에서 평가판을 다운로드한다. 180일 동안 사용 가능하다. https://www.microsoft.com/ko-kr/evalcenter/evaluate-sql-server SQL Server 설치 DVD 또는 ISO 파일 안에 있는 setup 파일을 더블 클릭하여 실행한다. 왼쪽에서 를 선택한 후 [새 SQL Server ...