DB와 SQL

ken6666·2023년 10월 10일
0

데이터 베이스

데이터베이스 역할: 데이터를 저장하고 조작(CRUD)

관계형 데이터베이스

관계형 데이터 베이스: 데이터간에 관계가 있는 데이터 항목들의 모음


두 테이블을 사용하여 데이터를 다양한 형식으로 조회할 수 있음
EX>

  • 특정 날짜에 구매한 모든 고객 조회
  • 지난 달에 배송일이 지연된 고객 조회

고객 데이터 간 비교를 위해서는 어떤 값을 활용해야할까?
-> 각 데이터에 고유한 식별 값을 부여하기, Primary key(기본 키)

누가 어떤 주문을 했는지 어떻게 식별할까?
-> 고객의 고유한 식별 값을 저장, Foreign Key(외래 키)

Table(aka. Relation)


데이터를 기록하는 곳

Field(aka. Column, Attribute)


각 필드에는 고유한 데이터 형식(타입)이 지정됨

Record(aka. Row, Tuple)


각 레코드에는 구체적인 데이터 값이 저장됨

Database (aka. Schema)


테이블들의 집합

Primary key(기본 키)

  • 각 레코드의 고유한 값
  • 관계형 데이터베이스에서 레코드의 식별자로 활용

Foreign Key(외래 키)

  • 테이블 필드 중 다른 테이블의 레코드를 식별할 수 있는 키
  • 다른 레이블의 기본 키를 참조
  • 서로 다른 테이블 간의 관계를 만드는데 사용

SQL

Structure Query Language, 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어

Query란?
:데이터베이스로부터 정보를 요청 하는 것, SQL 작성하는 코드를 쿼리문이라 함.

SQL Statements 4가지 유형

DQL

SELECT

1.


테이블에서 모든 데이터를 조회

2.

테이블 employees 에서 FirstName 필드의 모든 데이터를 조회

3.

테이블 tracks에서 Name, Milliseconds 필드의 모든 데이터 조회(단, Milliseconds 필드는 60000으로 나눠 출력)

ORDER BY

오름차순 (ASC, 기본값)
내림차순 (DESC)

1.

테이블 employees에서 FirstName 필드의 모든 데이터를 오름차순으로 조회

2.

테이블 employees 에서 FirstName 필드의 모든 데이터를 내림차순으로 조회

Null 값이 존재하는 경우 오름차순 정렬 시 결과에 NULL이 먼저 출력

Filtering data

DISTINCT

테이블 customers 에서 Country 필드의 모든 테이터를 중복없이 오름차순 조회

조회 결과에서 중복된 레코드를 제거

Where

조회시 특정 검색 조건을 지정

1. '='

2. '!='

3. NULL, 'AND'

4. BETWEEN

5. 'OR'

6. LIKE, '%'

7 LIKE, '_'

LIMIT

조회하는 레코드 수를 제한

1.

2.

GROUP BY

레코드를 그룹화하여 요약본 생성('집계 함수'와 함께 사용)

1.

2.



WHERE 가 아닌 HAVING 으로 세부조건 지정해야함

DDL

CREAT TABLE

테이블 생성


'INTEGER','VARCHAR(50)' : 데이터 타입
'PRIMARY KEY', 'NOT NULL': 제약 조건

'AUTOINCREMENT'

  • 필드의 자동 증가를 나타내는 특수한 키워드
  • 항상 새로운 레코드에 대해 이전 최대 값 보다 큰 값을 할당
  • 삭제된 값은 무시되며 재사용할 수 없게 됨

테이블 스키마(구조) 확인

ALTER TABLE

ALTER TABLE ADD COLUMN

examples 테이블에 Coutry 필드 추가

ALTER TABLE RENAME COLUMN

ALTER TABLE DROP COLUMN

ALTER TABLE RENAME TO


필드의 이름이 아닌 테이블 이름을 바꿈

DROP TABLE


테이블 자체를 삭제

DML

INSERT DATA


테이블에 데이터 추가

UPDATE DATA


데이터를 수정

DELETE DATA

JOIN

둘 이상의 테이블에서 데이터를 검색하는 법

INNER JOIN


두 테이블에서 값이 일치하는 레코드에 대해서만 결과를 반환

LEFT JOIN


오른쪽 테이블의 일치하는 레코드와 함께 왼쪽 테이블의 모든 레코드 반환

0개의 댓글