[Basic] SQL 기초, 잡다구리 기초 기능

고보·2024년 1월 23일

0 SQL

  • 관계형 데이터 베이스 조작하는 표준 언어.
  • 일반적 코딩과 달리 비절차적 언어. 순서대로 처리가 아니라, 집합 개념으로 접근해야.
  • SQL은 일반적으로 대소문자를 구분하지 않는다. 특수하게 지정하는 경우가 아니면.

1 SQL 명령문의 종류

  • 질의어(DQL, Data Query Language)
    • SELECT 데이터 검색
  • 조작어(DML, Data Manipulation Language):
    • INSERT 데이터 입력
    • UPDATE 데이터 수정
    • DELETE 데이터 삭제
  • 정의어(DDL, Data Definition Language):
    • CREATE 데이터베이스 객체 생성
    • ALTER 데이터베이스 객체 변경
    • DROP 데이터베이스 객체 삭제
    • RENAME 데이터베이스 객체 이름변경
    • TRUNCATE 데이터 및 저장공간 삭제
  • 트랜잭션 처리어(TCL Transaction Control Language)
    • COMMIT 정상 종료, 영구 저장
    • ROLLBACK 취소하고 원복
    • SAVEPOINT 임시 저장점 설정
  • 제어어(DCL, Data Control Language)
    • GRANT 데이터베이스 객체 접근 권한 부여
    • REVOKE 데이터베이스 객체 접근 권한 취소

2 SQL 질의문(query) 표준 형식

SELECT [DISTINCT]칼럼이름, 함수, 값 등
FROM 출처테이블
WHERE 조건
GROUP BY 그룹핑 조건
HAVING 그룹 조건
ORDER BY 순서 기준 칼럼
  • SELECT: 검색 명령문. FROM에서 SELECT에서 지시한 것을 검색해라. => 결과에 포함하는 속성(Attribute)들의 리스트 열거
    DISTINCT는 중복값을 다 제거하고 낸다는 뜻
    ex) distinct deptno, grade로 하면 101 1, 101 2, 101 3 이렇게만 출력
  • FROM: 필요로 하는 릴레이션(Relation)들 리스트 열거
  • WHERE: 연산 조건
  • GROUP BY: 동일한 값을 갖는 튜플들을 한 그룹으로 묶는다. group by job이면 job 칼럼에서 같은 값을 기준으로.
  • HAVING: 그룹 조건. 튜플의 그룹이 만족해야 하는 조건.
  • ORDER BY: 결과 튜플 정렬 순서. 저 칼럼을 기준으로 정렬.
  • 여기서 실행 순서: FROM => WHERE => GROUP BY => HAVING => SELECT => ORDER BY => limit

3 잡다구리한 기초 기능

  • 별명 부여 student AS s 이런 식으로. 여기서 AS 지우고 그냥 띄우기만 해도. student s
    만약 별명에 공백을 포함하거나, 대소문자를 구분, 특수문자를 포함하려면 " " 큰 따옴표 사용
    ex) deptno "Department Number 부서 번호#"
  • SELECT *: 모든 걸 뜻함
  • FROM tab: table의 약자. 모든 테이블.
  • DESC 테이블이름: 테이블 구조를 확인
  • ||: 합성 연산자. 하나의 칼럼을 다른 칼럼, 산술 표현식, 상수와 연결해서 하나의 칼럼처럼 출력할 때
SELECT studno || ' ' || name "Student"
FROM student;

=> 10101 전인하 (칼럼 이름은 Student)

  • 같은 기능으로 concat(a, b). 문자열 연결.
  • 산술 연산자: +, -, *, / 숫자 또는 날짜 에만 사용 가능
  • limit 10 첫 몇 개의 행만 보여줌. 전체 구조 파악하거나 특정 구간 자를 때. => 항상 제일 마지막에 실행.
SELECT *
FROM table_name
LIMIT 10;

4 팁

  • 1 가능하다면, 동일한 결과는 DML보다 DDL로 작업하도록 연습
  • 2 Driving Table(조인 연산에서 기준이 되는 테이블)은 FROM절의 가장 왼쪽에 위치
  • 3 WHERE 절의 처음엔 테이블 간 JOIN 관계부터 기술
  • 4 Driving Table부터 필터링 조건을 적는다(모수를 줄인다)
  • 5 WHERE절의 왼쪽은 절대 가공하지 않고, 오른쪽을 가공해서 왼쪽에 맞춘다
  • 6 ORDER BY는 맨 마지막에 한 번만 기술
  • 실행 계획을 확인해서, 내가 생각하는 실행 계획과 비교 => 더 빠른 방법에 익숙해져라

WHERE에 AND로 조건 여러 개 추가

profile
일본에서 일하는 게임 기획자. 시시해서 죽어버리지 않게, 재밌고 의미 있는 컨텐츠에 관심 있습니다. 그 도구로 데이터, AI도 찝적댑니다.

0개의 댓글