Develop

13일차_SQL(table, DB type, SQL 문법(select~join)) 본문

백엔드/KDT_Programmers

13일차_SQL(table, DB type, SQL 문법(select~join))

230801 2025. 3. 25. 14:07

안녕하세요 ! 

13일차 (3주 4일차) 입니다.

 

오늘은 DBeaver 로 실습하면서, SQL 이론과 문법에 대해서 알아봤습니다.

 

공부 내용

Table

  • 행 : record, tuple, row
  • 열 : field, attribute, column
  • 행의 수 : cardinality
  • 열의 수 : degree

 

DB Type 

정수형

  • tinyint 1byte
  • smallint 2byte
  • mediumint 3byte
  • int 4byte (표준)
  • bigint 8byte

 

실수형

  • float 4byte
  • double 8byte
  • decimal : 크기에 따라 다름

 

논리형

  • bool : 내부적으로 tinyint로 저장됨 (0 또는 1) 

 

문자열

  • char : 고정길이데이터, 255byte
  • varchar :  가변길이데이터 65535 byte
  • text : 대량의 텍스트를 저장하는 용도로 사용, varchar 보다 많이 느림
  • mediumtext : 16,777,215 byte
  • longtext : 4,294,967,295 byte

 

날짜

  • date 연월일
  • time 시분초
  • datetime 날짜 + 시간
  • timestamp 날짜 + 시간, DBMS의 timezone 을 따라간다.

 

 


DQL (Data Query Language)

  • query : '묻다' 라는 뜻으로, 데이터베이스에서 데이터를 조회하는 구문을 의미함

 

작성법

select 컬럼명 [, 컬럼명 ...] 대괄호는 optional 임
from 테이블명
where 조건절

 

SQL 문 실행 순서

from -> where -> group by -> having -> select -> order by

 

 


 

SQL 문법

Where + between A and B (A 이상 B 이상)

  • 연산 우선순위가 and, or, not 보다 높음
 select *
 from EMPLOYEE
 where salary between 4000000 and 5500000;

 

 

Like

  • '컬럼명' like '패턴' 형태이며, 패턴문자는 %와 _ 가 있음
  • %를 앞/뒤 혹은 양옆에 붙이기에 따라 다르게 결과를 조회할 수 있음
 'A%' A로 시작하는 
 '%A' A로 끝나는 
 '%A%' A가 포함된

 

 

 

Group by

  • 특정 컬럼을 기준으로 그룹화
  • group by 컬럼명 형태로 사용함
  • having 조건 절 : 집계된 결과에 조건을 적용
SELECT dept_code, SUM(salary), AVG(salary)
FROM employee
GROUP BY dept_code
HAVING AVG(salary) > 3000000;

 

 

Order by

  • 결과 집합(result set) 을 정렬하기 위해 사용
  • LIMIT : 결과의 상위 n 개를 출력
- ASC(오름차순) , DESC(내림차순)
- top n 구문
  limit 시작 인덱스, 출력할 개수
  ex) limit 0,3 (0번부터 3개 출력하는 구문)

 

 

Subquery

  • subquery는 쿼리 안에 쿼리를 넣는것으로, 복잡한 작업을 간소화

 

서브쿼리의 분류

 1. 사용 위치에 따른 분류

  •  select절 : 스칼라(단일값) 서브쿼리
  •  from절 : inline view
  •  where, having : subquery 사용

 2. 서브쿼리의 result set 형태에 따라 분류

  • 단일행, 단일열, 다중행, 다중열


join

  • 여러테이블을 결합하여 데이터를 조회하는 방법
  • 데이터의 중복을 최소화 하고, 이상현상을 방지하기 위해 테이블을 설계하는 과정에서 연관된 데이터를 분리하여 저장
  • join 컬럼1 별칭1 on (별칭2. 컬럼2 = 별칭1.컬럼1) 의 형태로 사용

 

join 종류

  • inner join (equals join, 등가조인)
  • using (컬럼이 동일할 때 on 대신 사용)
  • outer join (특정행의 모든 join 조건이 false 를 반환하더라도 result set에 공백으로 추가함)
  • left, right join (left join 은 join 절 기준 왼쪽에 있는 별칭2 테이블 결과에 false가 뜨더라도 결과를 넣어주고싶을때 사용)
  • self join (테이블을 가르키는 포인터가 자기자신 1개임)