훈스비
개발잡부
훈스비
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • 스터디 (29)
      • 데이터 분석 (4)
      • SQL (4)
      • Python (1)
      • JavaScript (1)
      • Spark (1)
      • DevOps (7)
      • 기타 (8)
      • 검색 엔진 (3)
    • 나의 이야기 (4)
      • 회사 생활 (3)
    • 사이드 프로젝트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Docker
  • elasticsearch
  • flask
  • GCP
  • github copilot
  • helm
  • java
  • jupyterhub
  • k8s
  • Kubernetes
  • leetcode
  • linux
  • ncp
  • Ray
  • ReplicaSet
  • spark
  • spring
  • sql
  • udemy
  • Virtualization
  • vm
  • vsCode
  • vue
  • 개발원칙
  • 검색엔진
  • 데이터 분석
  • 랭킹
  • 백엔드
  • 사이드프로젝트
  • 유사도 정규화

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
훈스비

개발잡부

스터디/SQL

[SQL] SQL 기초교재 01 ~ 03

2019. 8. 3. 15:19

아래의 내용은 김지훈, "칼퇴족 김대리는 알고 나만 모르는 SQL", 책밥(2014)의 내용을 참고하여 공부한 기록입니다.


1장 SQL의 개요

  • 데이터베이스(Database) : 공유의 목적을 가지고, 구조적인 방식으로 관리되는 데이터의 집합. 연관된 정보의 중복을 최소화하여 저장. 정규화를 통해 중복을 단계적으로 제거해 나간다.

  • 데이터베이스 관리 시스템(DBMS, Database Management System) : 데이터를 정리하고 보관하기 위한 시스템

    테이블(Table) : 특정한 종류의 데이터를 구조적 목록으로 묶은 것
    스키마(Schema) : 테이블에 어떤 데이터를 어떤 형식으로 저장할 것인지 정의한 것
    열(Column) : 속성(Attribute). 테이블을 구성하는 각각의 정보
    행(Row) : 레코드(Record) 또는 튜플(tuple). 데이터가 한 줄에 저장된 것

  • SQL(Structured Query Language) : 사용자와 데이터베이스 시스템 간의 의사소통을 위해 특별히 고안된 언어

  • SQL의 종류

1.데이터 정의어(DDL, Data Definition Language) : 데이터와 그 구조를 정의하는 언어

-   CREATE : 데이터베이스 테이블 생성
-   DROP : 데이터베이스 테이블 삭제
-   ALTER : 기존 데이터베이스 테이블 재정의

2.데이터 조작어(DML, Data Manipulation Language) : 데이터 검색과 수정 등의 처리를 위한 언어

-   INSERT : 테이블에 데이터 삽입/입력
-   DELETE : 테이블의 데이터 삭제
-   UPDATE : 기존 테이블 안의 데이터 수정
-   SELECT : 테이블 내 데이터 검색

3.데이터 제어어(DCL, Data Control Language) : 데이터베이스 사용자의 권한 제어를 위해 사용되는 언어

-   GRANT : 테이블에 권한 부여
-   REVOKE : 부여한 권한 취소/회수

2장 SQL의 기초

2-1. 데이터 가져오기

1. SELECT 열 이름 FROM 테이블명;

Ex1) CLERK 테이블에서 사번(ID)을 출력

  • SELECT ID FROM CLERK;

Ex2) CLERK 테이블에서 사번, 이름(STAFF_NM)을 출력

  • -SELECT ID, STAFF_NM FROM CLERK;

EX3) CLERK 테이블에서 사번; 이름; 생년월일(BIRTH_DT)을 출력

  • -SELECT ID, STAFF_NM, BIRTH_DT FROM CLERK;

2-2. SQL의 특성

1.SQL은 소문자와 대문자를 구분하지 않는다.

  • 하지만 구분이 쉽도록 키워드는 대문자로 입력하고 열 이름과 테이블은 소문자로 입력하기도 한다. (공유를 위해 팀원들의 문법을 확인하고 똑같이 따라하는 것이 베스트)

2.SQL은 공백을 무시한다.

  • 가독성을 위해 여러 줄로 나눠서 쿼리문을 작성하자.

3.SQL의 키워드를 열 이름으로 바로 사용하면 에러가 발생한다.

  • 키워드를 숙지하고 열 이름과 중복을 발생시키는 일이 없도록 하자. 하지만 DDL 사용이 많지는 않을 듯

4.SQL 문장은 세미콜론(;)을 사용하여 종결한다.

Ex1) CLERK 테이블에서 모든 열을 출력

  • SELECT * FROM CLERK;

2-3. 열 정렬

1.SELECT 열 이름1, 열 이름2 FROM 테이블명 ORDER BY 열 이름1, 열 이름2;2.SELECT 열 이름1, 열 이름2 FROM 테이블명 ORDER BY 열 위치1, 열 위치2;

  • 출력과 정렬 모두 선행되는 것이 우선순위가 된다. 이 경우에는 열 이름1을 우선 정렬하며 같은 이름에 대하여 열 이름2로 정렬하는 것
  • 오름차순의 경우 ASC(Ascending)이며 기본값, 내림차순의 경우 DESC(Descending)이다.

Ex1) CLERK 테이블에서 이름을 기준으로 오름차순 정렬하여 이름 및 부서명 출력

  • SELECT STAFF_NM, DEP_NM
    FROM CLERK
    ORDER BY STAFF_NM;

Ex2) CLERK 테이블에서 부서명을 기준으로 오름차순 정렬한 후, 이름으로 오름차순 정렬하여 이름 및 부서명을 출력

  • SELECT STAFF_NM, DEP_NM
    FROM CLERK
    ORDER BY DEP_NM, STAFF_NM ASC;

Ex3) CLERK 테이블에서 재직 여부를 기준으로 내림차순 정렬한 후 성별을 기준으로 오름차순 정렬하여 재직 여부, 성별 및 이름을 출력

  • SELECT EMP_FLAG, GENDER, STAFF_NM
    FROM CLERK
    ORDER BY EMP_FLAG DESC, GENDER ASC;

Ex4) PERF 테이블에서 고객 생년월일을 기준으로 오름차순 정렬해서 고객아이디, 고객 생년원일, 방문횟수 출력

  • SELECT CUST_ID, CUST_BIRTH, VISIT_CNT
    FROM PERF
    ORDER BY CUST_BIRTH;

3장 SELECT문에 추가적으로 필요한 키워드

3-1. 중복 제거 (중요)

1.SELECT DISTINCT 열 이름 FROM 테이블명 ORDER BY 열 이름;

  • 중복값을 제거하고 한 개의 값만 보는 것
  • 이걸 잊어서 코딩 테스트를 못 풀었다. 잊지말자…
  • 중복을 제거한 열 이름의 COUNT는 SELECT COUNT(DISTINCT 열 이름) FROM EMP;으로 하면 된다.

2.반대의 경우 ALL 키워드이지만 기본값이므로 사용할 필요는 없을 듯하다.

EX1) EMP 테이블에서 직급에 따라 어떤 인사고과를 받았는지 확인

  • SELECT DISTINCT POSITION, GRADE
    FROM EMP;

3-2. ALLIAS(별칭)

1.SELECT 열 이름 AS 새로운 열 이름 FROM 테이블명;2.SELECT 열 이름 “새로운 열 이름“ FROM 테이블명;

  • AS의 경우 반드시 한 단어로 적어야 하지만, 인용부호(“”)를 이용할 경우 대소문자, 공백, 한글 등의 별칭을 허용한다. 하지만 한 단어로 사용하는 것이 좋을 것 같다.

EX1) EMP 테이블에서 사번을 나타내는 ID를 CLERK_ID로, 인사고과를 나타내는 GRADE를 PERF로 별칭 부여

  • SELECT ID AS CLERK_ID, POSITION, PARTY_NM, MANAGER_ID, TEAM_NM, GRADE AS PERF
  • FROM EMP;
저작자표시 비영리 변경금지 (새창열림)

'스터디 > SQL' 카테고리의 다른 글

[SQL] SQL 기초교재 10 ~ 12  (0) 2019.08.03
[SQL] SQL 기초교재 07 ~ 09  (0) 2019.08.03
[SQL] SQL 기초교재 04 ~ 06  (0) 2019.08.03
    '스터디/SQL' 카테고리의 다른 글
    • [SQL] SQL 기초교재 10 ~ 12
    • [SQL] SQL 기초교재 07 ~ 09
    • [SQL] SQL 기초교재 04 ~ 06

    티스토리툴바