본문 바로가기
Algorithm/SQL

[SQL] DataCamp 수강 (2)

by 호찌민 2021. 3. 12.

Join, UNION, Table 생성 및 업데이트, 행 삽입 및 삭제 방법, 테이블 변수와 임시 테이블 생성 등에 대해 배웠고 

'Introduction to SQL-server' 강의를 수강 완료했다. 😁

<강의 수료증>


JOIN

관계형 데이터 베이스 내의 테이블들을 결합하기 위해 사용하는 함수이다. 이를 활용하기 위해서는 Primary Key, Foreign Key 개념에 대해 알고 있어야 하는데 두 개념은 다음과 같다.

  • Primary Key(기본 키) : 테이블의 각 행을 고유하게 식별하는데 사용되는 열
  • Foreign Key(외래 키) : 다른 테이블과 JOIN 할 때, 참조에 사용되는 열이다.

JOIN의 종류는 INNER/LEFT/RIGHT 3가지가 존재한다. 3가지 개념에 대해 알아보자.

  • INNER JOIN : 두 테이블에서 일치하는 행만 반환
  • LEFT JOIN : 왼쪽 테이블을 기준으로 JOIN하여, 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환, 일치하지 않는 경우 NULL 값을 반환한다.
  • RIGHT JOIN : 오른쪽쪽 테이블을 기준으로 JOIN하여, 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환, 일치하지 않는 경우 NULL 값을 반환한다.

 

*JOIN 쿼리의 위치는 FROM 뒤에 사용하면 된다.

SELECT col1
FROM tableA
INNER JOIN tableB ON tableA.primarykey = tableB.foreignkey

주의할 점은 다른 테이블에서 이름이 같은 열을 선택할 때, 열 이름을 완전히 규정하여 사용해야 한다는 것이다.

예를 들어보자.

SELECT
tableA.col1
tableB.col1

FROM tableA
INNER JOIN tableB ON tableA.primarykey = tableB.foreignkey

또한, 3개 이상의 Table을 조인할 때에는 JOIN의 형식을 계속해서 추가해주면 된다.

SELECT col1
FROM tableA
INNER JOIN tableB ON tableA.primarykey = tableB.foreignkey
INNER JOIN tableC ON tableB.primarykey = tableC.foreignkey

UNION

여러 쿼리의 결과를 결합하는 함수이다. 중복되는 행을 제외하고 결과를 반환해준다.

UNION ALL

여러 쿼리의 결과를 결합하는 함수이다. 중복되는 행을 포함하여 결과를 반환해준다.

 

주의할 점은 동일한 수의 열동일한 순서로 선택하고, 동일한 데이터 유형을 가져야한다. 다른 열 이름이 있는 경우, ALAIS를 사용해 새로운 컬럼 명을 지칭해줘야 한다.

SELECT col1, col2, col3
FROM tableA

UNION -- 또는 UNION ALL

SELECT col1, col2, col3
FROM tableA

CRUD 작업

CRUD는 Create, Read, Update, Delete 4가지의 작업 방법을 의미한다.

  • Create
    • Databases, Tables, Views
    • Users, Permisissions, Security groups
    • INSERT : 데이터 입력
-- 테이블 생성
CREATE TABLE tableA (column name, datatype, size)
-- 테이블 및 열 이름, 각 데이터 유형에 대해서 모두 생각해야 한다.
-- 데이터 입력 방법
-- INSERT
INSERT INTO tableA (col1, col2, col3)
VALUES (val1, val2, vla3)

-- INSERT SELECT
INSERT INTO tableA 
SELECT -- 대상 열 이름이 올바른 순서인지 확인 필요
FROM tableB
  • Read
    • ex) select
  • Update
    • Amend existing database records
UPDATE TableA
SET col1 = value
WHERE -- WHERE을 사용하지 않으면 열의 모든 값을 업데이트 하므로 꼭 사용 !
  • DELETE
    • delete exisiting database records
    • DELETE를 실행할 경우, 어떠한 경고문 없이 바로 값이 삭제되므로 주의해서 사용 !
    • TRUNCATE
      • 모든 열에서 한번에 모든 데이터를 제거
DELETE
FROM tableA
WHERE -- WHERE을 사용하지 않으면 열의 모든 값을 삭제되므로 검증하며 WHERE문 꼭 사용 !

DATA TYPE

  • Strings
    • char, varchar, nvarchar
  • Numeric
    • integer, decimal, float
    • bit (1 = True, 0 = False, NULL도 가능)
  • Dates
    • date(YYYY-MM-DD)
    • datetime(YYYY-MM-DD hh:mm:ss)
    • time

DECLARE

변수 선언을 통해 새로운 쿼리에서 반복적인 사용이 가능하다.

DECLARE @variableA DATATYPE (N) -- 글자수는 최대 100자 가능
SET @variableA = value1

SELECT col1
where col2 = @variableA 
-- 매번 새로운 쿼리에서 값을 지정해주지 않고 해당 변수를 통해 반복적인 사용을 할 수 있다.

임시 테이블 생성

원하는 테이블 이름 앞에 해시(#) 기호를 입력하여 임시 테이블을 생성할 수 있다. 이는 연결 또는 세션이 종료되면 자연히 사라지거나 DROP TABLE을 통해 제거할 수 있다. 

SELECT col1, col2, col3
INTO #tableB -- 임시 테이블 생성
FROM tableA -- tableB에 col1, col2, col3 값이 추가 됨.

select * -- col1, col2, col3 값이 결과로 나옴.
from #tableB -- 임시 테이블로부터 결과값 추출 가능하다.