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와 city 테이블의 country_no가 같은 것을 연결한다.
  • country 테이블에 있는 데이터는 모두 출력하고, city 테이블에 연결된 값이 있으면 그 값을 출력한다.
select
  country.country_name,
  city.city_name
from country
left join city on country.country_no = city.country_no
;

RIGHT JOIN

  • country 테이블의 country_no와 city 테이블의 country_no가 같은 것을 연결한다.
  • city 테이블에 있는 데이터는 모두 출력하고, country 테이블에 연결된 값이 있으면 그 값을 출력한다.
select
  country.country_name,
  city.city_name
from country
right join city on country.country_no = city.country_no
;

  • 다음과 결과는 같다.
select
  country.country_name,
  city.city_name
from city
left join country on country.country_no = city.country_no
;

FULL JOIN

  • country 테이블의 country_no와 city 테이블의 country_no가 같은 것을 연결한다.
  • 두 테이블의 모든 데이터를 출력하는데, 연결된 것이 있다면 같은 행에 출력한다.
select
  country.country_name,
  city.city_name
from country
full join city on country.country_no = city.country_no
;

 

CROSS JOIN

  • country 테이블의 값 하나하나에 city 테이블의 모든 값을 출력한다.
select
  country.country_name,
  city.city_name
from country
cross join city
;

같은 카테고리의 다른 글
SQL Server / Query / ROLLUP

SQL Server / Query / ROLLUP

부분합 등을 구하고 싶다면 ROLLUP을 사용한다. 기본 다음과 같은 sales 테이블이 있다고 하자. team은 소속, man은 직원, sales는 판매액이다. select * from sales ; 다음과 같이 하면 직원별 소계, 팀별 소계, 전체 합계가 출력된다. select id, team, man, sum( sales ) as sales from sales group by rollup ( team, man, id ) ; 다음과 같이 ...

SQL Server / 데이터베이스 저장 위치 변경하는 방법

SQL Server / 데이터베이스 저장 위치 변경하는 방법

데이터베이스 기본 저장 위치 변경 데이터베이스를 만들거나 복원할 때 기본적으로 저장되는 위치는 SQL Server를 설치할 때 정합니다. 그 위치를 변경하고 싶다면 다음과 같이 합니다. 서버를 선택하고 마우스 우클릭 후 을 클릭합니다. 왼쪽 메뉴에서 을 클릭합니다. 를 원하는 위치로 변경하고... 을 클릭합니다. 서버를 재부팅하거나, 서비스에서 SQL Server를 다시 시작해야 반영됩니다. 데이터베이스 만들 때 저장 위치 ...

SQL Server / Query / 메모

최근 날짜 가져오기 Name으로 그룹화한 후 최근 날짜를 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name 최근 날짜가 2020년인 것만 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name HAVING MAX( Date ) BETWEEN '2020-01-01' AND '2020-12-31' 모든 데이터베이스 출력하기 EXECUTE sp_helpdb;

SQL Server 2022 / SQL Server 서비스 시작, 중지, 다시 시작하는 방법

SQL Server 2022 / SQL Server 서비스 시작, 중지, 다시 시작하는 방법

SQL Server의 서비스를 시작, 중지, 다시 시작하는 방법은 여러 가지가 있다. 그 중 UI를 이용하는 세 가지 방법을 소개한다. SQL Server Configuration Manager SQL Server Configuration Manager를 연다. 왼쪽에서 를 선택한다. 오른쪽에서 SQL Server를 선택하고 마우스 우클릭한다. 원하는 서비스 관련 작업을 클릭한다. SSMS SSMS로 SQL Server에 접속한다. 개체를 선택하고 마우스 우클릭한다. 원하는 서비스 관련 작업을 클릭한다. 서비스 SQL Server를 ...

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

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

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

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 / SSMS / 쿼리 만들고 실행하는 방법

SQL Server / SSMS / 쿼리 만들고 실행하는 방법

쿼리(Query)를 이용하여 필요한 데이터를 추출하거나 여러 가지 작업을 할 수 있다. SSMS에서 쿼리를 만들고 실행하는 과정은 다음과 같다. SQLServer에 접속하고 데이터베이스 선택 데이터베이스 서버에 접속하고 를 클릭한다. 드롭다운 목록에서 쿼리를 할 데이터베이스를 선택한다. 쿼리 작성하고 실행 쿼리를 입력하고 을 클릭한다. 단축키는 F5이다. SQL은 대소문자를 구분하지 않는다. 하단에 쿼리 결과가 나온다. 여러 개의 쿼리를 입력했다면 각각 결과가 나온다. 일부 쿼리 ...

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와 ...

SQL Server / 테이블 / 기본 키(PRIMARY KEY)

SQL Server / 테이블 / 기본 키(PRIMARY KEY)

기본 키(PRIMARY KEY) 테이블의 각 행을 고유하게 식별하는 값을 가진 열 또는 열 조합을 기본 키라 한다. 테이블은 하나의 기본 키만 가질 수 있다. 기본 키를 만들면 인덱스가 자동으로 생성되며, 쿼리에서 기본 키를 사용하는 경우 빠르게 액세스할 수 있다. 쿼리로 만들기 기본 키 만들기 테이블을 만들 때 기본 키 만들기     이미 만든 테이블에서 기본 키 만들기       자동으로 증가하는 ...

SQL Server / Query / 주석

SQL Server / Query / 주석

주석으로 처리하면 해당 문자열은 실행되지 않습니다. 코드에 설명을 달거나 특정 쿼리를 잠시 실행시키고 싶지 않을 때 사용합니다. 주석에는 한 줄 주석과 여러 줄 주석이 있습니다. 한 줄 주석은 --로 만듭니다. -- 뒤에 있는 문자열이 주석이 됩니다. -- Commnet SELECT * FROM myDB; -- Comment 여러 줄 주석을 만들고 싶다면 /*와 */로 감쌉니다. 그 사이에 있는 ...