5절 WHERE 절WHERE 절SELECT * FROM [WHERE 조건문]원하는 자료만을 검색하기 위해 검색 조건을 설정WHERE 절에 조건이 없는 FTS(Full Table Scan)은 SQL 튜닝 1차 검토 대상※ 병렬 처리 등을 이용해 FTS를 유용하게 사용하는 경우도 있음 연산자비교연산자 : =, >, >=, SQL연산자 BETWEEN a AND b : a와 b 사이에 있는 값들 IN (list) : 리스트에 있는 값중에서 하나라도 일치 여부. 리스트값은 쉼표로 구분LIKE '비교문자열' : 형태 일치 여부, 와일드 카드사용% : 0개 이상의 문자열 (이름이 S로 시작하면, LIKE 'S%')_ : 1개의 단일 문자 (두번째 글자가 A라면 LIKE '_A')IS NULL : NULL 값인지의 여..
4절 트랜잭션 제어어(TCL; Transaction Control Language)트랜잭션데이터베이스의 논리적 연산단위밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작(SQL)데이터를 수정하는 DML(UPDATE, INSERT, DELETE)은 트랜잭션의 대상SELECT FOR UPDATE 등 배타적 LOCK을 요구하는 SELECT도 트랜잭션의 대상DDL은 트랜잭션의 대상이 아님(Auto-commit)Oracle은 Auto-Commit 옵션을 꺼놔도 자동으로 커밋함SQL Server는 BEGIN TRANSACTION을 명시적으로 사용하지 않으면 DML도 트랜잭션의 관리 대상이 아님트랜잭션의 특성(ACID)원자성(Atomicity) : 트랜잭션의 연산은 모두 적용되던지, 모두 취소되어야 한다..
3절 데이터 조작어(DML; Data Manipulation Language)데이터 조작어(DML)비절차적 데이터 조작어는, 사용자가 무슨(What) 데이터를 원하는 지만을 명세👉 추후에 배울 절차적 SQL (PL/SQL, T-SQL 등)은 어떻게(How) 까지 명세함INSERTINSERT INTO 테이블명 [(컬럼1, 컬럼2, 컬럼3 ...)]VALUES (컬럼1값, 컬럼2값, 컬럼3값 ...); 데이터(레코드)를 삽입하는 SQL 구문컬럼리스트를 생략할 경우 전체 컬럼을 의미하며, VALUES에 컬럼 순서에 맞게 입력하면 된다.컬럼값의 경우, 데이터타입이 문자형에 한하여 '(작은따옴표)로 묶어서 입력UPDATEUPDATE 테이블명 SET 컬럼명 = 값;데이터(레코드)를 수정하는 SQL 구문DELETE..
2절 데이터 정의어(DDL; Data Definition Language)데이터 타입 (앞은 Oracle, 뒤는 SQL Server)CHAR(s) : 고정 길이 문자열, 할당된 변수 값의 길이가 s 이하일 때 뒷부분은 공백으로 채워짐s는 최소 1byte, Oracle은 최대 2000 / SQL Server는 최대 8000byte비교시 뒷부분의 공백을 제거해서 비교VARCHAR2(s) : 가변 길이 문자열, 할당되는 변수 값의 길이의 최대값이 s으로 실제 길이(용량)은 줄어듬s는 최소 1byte, Oracle은 최대 4000byte (12c 이후론 Extended Data Types로 32767byte 까지 가능)SQL Server는 VARCHAR(L)을 사용하며, 최대 8000byte (VARCHAR(M..
1절 관계형 데이터베이스 개요데이터베이스(DB; Database)데이터를 일정한 형태로 저장해 놓은 것, DBMS를 이용하여 효율적인 데이터 관리와 데이터 손상 복구 가능종류계층형 DB : 트리 형태의 자료구조에 데이터 저장, 1:N 관계 표현네트워크형 DB : 오너와 멤버 형태로 데이터 저장, M:N 관계 표현관계형 DB : 릴레이션에 데이터 저장, 집합 연산과 관계 연산 가능관계형 DB(RDB; Relational Database)1970 영국의 수학자 E.F.Codd 박사의 논문에서 소개릴레이션(relation)을 기반으로 하며, 행(튜플)과 열(속성)의 개념이 존재장점정규화(Normalization)를 통해 이상현상(Anomaly) 및 중복 데이터 제거 동시성 관리와 병행 제어를 통해 데이터 공유..
홈화면 작성(templates/home.html) 방댕이들 안녕!! 회원 기능 회원 가입 회원 목록 컨트롤러 작성import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping("/") public String home(){ return "home"; }} @GetMapping은 해당 도메인에서 뒤의 url로 들어왔을때를 매핑시켜주는 어노테이션이다."/"는 아무것도 없이 ..
import static org.assertj.core.api.Assertions.assertThat;import com.bdid.bdid.domain.Member;import java.util.List;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.Test;public class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach public void afterEach(){ repository.clearStore(); } @Test public vo..
도메인(Domain)이란 비즈니스 로직을 포함하는 객체(Object)를 의미한다. 회원, 주문, 상품 등 DB에 저장되고 관리되는 데이터를 의미하면 편하다.스프링 생태계에서 도메인 객체는 컨트롤러, 서비스, 리포지토리 세 계층에서 사용된다. 리포지토리(Repository)는 DB에 직접 접근하여, 도메인 객체에 담긴 정보를 DB에 저장하고 불러오는 계층이다.서비스(Service)는 애플리케이션의 핵심 비즈니스 로직들을 구현하는 계층이다.컨트롤러(Controller)는 웹 MVC에서 컨트롤러에 해당되는 계층으로, 쉽게 말해 외부 요청을 특정 서비스로 연결한다. 가장 기본적인 회원(Member) 도메인을 사용한 비즈니스 로직을 생각해보자. 우리는 아래와 같은 간단한 비즈니스 로직을 생각해볼 수 있을 것이다..
- Total
- Today
- Yesterday
- 알고리즘
- 데이터베이스
- 테이블
- Scanner
- 자료구조
- 레코드
- oracle
- SQL이란
- BufferedReader
- Java
- 입출력
- SQL
- BufferedWriter
- db의 역사
- 필드
- DB
- db오브젝트
- APS
- dialect
- DBMS
- 배열
- StringBuilder
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |