Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- mycli
- cs
- MySQL
- 터미널
- 동적 프로그래밍 방법
- 순차탐색
- 데이크스트라
- table status
- 오일러 경로
- zsh
- 분할정복 방법
- mysql 표 출력
- zsh theme
- 인프런워밍업클럽
- 티스토리챌린지
- 이진탐색
- 인프런
- Less
- CS스터디
- 스터디2기
- 욕심쟁이 방법
- VI
- 오블완
- Pager
- spring boot
- 알고리즘
- oh-my-zsh
- 네트워킹데이
- 맥
- mysql 표
Archives
- Today
- Total
Develop
13일차_SQL(table, DB type, SQL 문법(select~join)) 본문
안녕하세요 !
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개임)
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 15일차_SQL(View, Procedure, Function, Trigger, JDBC 등) (0) | 2025.03.25 |
|---|---|
| 14일차_SQL 문법(Function, DDL, DML, DCL, TCL) (0) | 2025.03.25 |
| 12일차_MySQL, DBeaver 설치, DB 이론, Java 프로젝트에서 .env 파일 적용하기(feat. 나름 딥다이브) (0) | 2025.03.20 |
| 11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP (0) | 2025.03.19 |
| 10일차_디자인패턴, 디미터법칙, IO, FileIO (0) | 2025.03.18 |