일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- R
- Serialization
- 메모리구조
- Stack
- 혼자 공부하는 C언어
- datastructure
- insertion sort
- C 언어 코딩 도장
- buffer
- Graph
- 이스케이프 문자
- 알기쉬운 알고리즘
- coding test
- stream
- Selection Sorting
- s
- 이것이 자바다
- 윤성우 열혈자료구조
- JSON
- 윤성우의 열혈 자료구조
- C programming
- Algorithm
- list 컬렉션
- Today
- Total
목록Computer Science/Database (19)
Engineering Note
FLUSH와 COMMIT 차이구분FLUSHCOMMIT역할메모리의 변경 사항을 DB 트랜잭션 버퍼에 동기화(SQL 전송)현재 트랜잭션 내의 모든 변경 사항을 DB에 영구적으로 확정영구성일시적(트랜잭션 버퍼에 존재, Rollback 가능)영구적(DB에 최종 반영, Rollback 불가)가시성(다른 트랜잭션)일반적으로 보이지 않음(트랜잭션 고립 유지)보이게 됨(트랜잭션 완료 및 고립 해제)트랜잭션 종료 여부트랜잭션 유지트랜잭션 종료자동 실행COMMIT 시 내부적으로 포함되어 자동 실행수동으로 호출하거나, 설정에 따라 트랜잭션 종료시 자동 실행됨
학습을 위해 인프런 강의를 듣다가 h2 데이터베이스 접속 방법이 매번 헷갈려서 정리해두려고 작성한 글이다. 1.H2 다운로드 및 실행방법 1-1. H2 데이터베이스 엔진 DBMS를 다운로드 한다.https://www.h2database.com/html/main.html 1-2. 다운로드 하고 압출을 풀어주면 안에 bin 디렉터리가 있는데 그 안에 h2.sh 파일이 있다. 1-3. h2.sh 파일의 권한을 준다. 'chmod 755 h2.sh`. 권한 변경 후 실행(터미널에서 './h2.sh ' 입력)하면 브라우저에 h2데이터베이스 접속을 위한 웹 콘솔이 열린다. 1-4. h2 데이터베이스는 메모리모드와 파일모드가 있는데, 데이터를 유지하기 위해서 파일모드로 실행하고 싶으면 파일 모드로 실행하면 된다. ..
INNER JOIN과 LEFT JOIN, 뭐가 다를까?회원 테이블과 게시글 테이블을 조회할 때, "게시글을 쓴 회원만" 볼 것인가, "게시글 안 쓴 회원도" 볼 것인가의 차이입니다. JOIN의 정식 명칭INNER JOIN = JOIN (정식 명칭)LEFT OUTER JOIN = LEFT JOIN (정식 명칭) 실무에서는 JOIN, LEFT JOIN으로 줄여서 많이 씁니다.INNER JOIN: 교집합만 조회언제 사용? 두 테이블에 모두 존재하는 데이터만 필요할 때예시 상황회원 3명이 있습니다: SELECT * FROM member; 이 중 김철수, 이철수만 게시글을 작성했습니다: SELECT * FROM board; INNER JOIN 실행SELECT *FROM member m JOIN board..
MySQL로 데이터베이스를 연습하면서, 게시판 프로젝트로 데이터베이스를 설계하고 SQL로 직접 테이블을 조작해보면서 에러가 발생했다.실행 쿼리INSERT INTO likes (member_id, content, comemnt_id) values(1, "내용", 100) Error Code: 1054. Unknown column 'content' in 'field list' 에러메세지cannot add or update a child row: a foreign key constraint 에러 원인 분석 첫 번째 원인좋아요 like 테이블에 데이터를 넣으려고 했는데 like 테이블의 부모 comment_id 부모 PK값이 없어서 발생한 오류다. 두 번째 원인content 컬럼 - likes 테..
프로젝트에서 JPA를 사용하면서 기본적인 쿼리도 같이 익혀야 겠다고 생각해서 정리하고 있습니다. JPA가 대부분 해주지만 문제를 파악하거나 직접 DB에 접근해서 문제를 해결해야할 일도 있기 때문에 SQL도 같이 익혀두는 과정도 필요하다고 생각합니다. 기본적인 게시판의 테이블을 설계해보고 workbench에서 쿼리문을 실행해보면서 SQL을 정리하고 있습니다. 오늘은 DDL을 연습했습니다.CREATE DATABASE blog_test;use blog_test;-- 1. Member 테이블 (회원)CREATE TABLE member ( member_id BIGINT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(100) UNIQUE, name VARCHAR(50)..
WHERE- 특정한 조건만 조회하는 SQL 문법- WHERE와 같이 사용하는 관계 연산자 : >, =, =- 두 가지 이상의 조건을 만족하는 결과를 원할 때 : ANDWHERE 조건절에 조건을 세분화하기 위한 문법BETWEEN ~ ANDIN()- OR 조건을 여러개 쓰는 대신 IN으로 OR조건 표현- 경기/전남/경남 사는 회원 조회 => SELECT * FORM MEMBER WHERE ADDRESS IN('경기', '전남', '경남')LIKE- 문자열의 일부 글자 검색- %와 같이 사용- _와 같이 사용 ----- ORDER BY- 결과의 정렬 위한 SQL문법- ASC 기본값 = 오름차순, 오름차순은 작은 숫자가 가장 위로 온다. row 값이 점점 커진다. 날짜를 기준으로 생각하면 날짜가 빠른순서가..
LIMIT- SELECT 명령에서 결과값으로 반환되는 행을 제한하는 명령어 사용 예시- 인터넷 쇼핑몰에서 물건을 구매하거나 커뮤니티 사이트의 게시판을 읽다보면, 수많은 상품과 게시물을 전부 하나의 페이지에 표시하는 대신 몇 건씩 나누어 표시할 때 사용 사용 방법SELECT 열명 FROM 테이블명WHERE 조건식 ORDER BY 열명LIMIT 행수SELECT * FROM sampleLIMIT 3; -> sample 데이터에서 최대 3개의 행만 반환. 테이블에 1개의 데이터만 있다면 1개의 데이터만 반환 OFFSET- 데이터를 취득할 위치를 가리키는 것, LIMIT구에 OFFSET으로 지정할 수 있다.- 페이지네이션을 구현할 때, 첫 번째 페이지라면 LIMIT만으로 데이터를 조회할 수 있지만, 두 번째 페..
낙관적 락은 충돌 발생 가능성이 낮다고 가정하고 실제 데이터 수정시점에 충돌이 발생했는지 확인하고 처리하는 방식이다. 이 방식은 데이터베이스 자체의 잠금 방식을 사용하는 것이 아니라 데이터 버전 정보를 통해 애플리케이션 레벨에서 비교하는 방식을 통해 동시성을 제어 하는 방법이다. 반면 비관적 잠금은 'SELECT ... FOR UPDATE'와 같이 쿼리를 사용해 직접 데이터 레벨에서 직접 잠금을 통해 동시성 제어를 방지하는 방법이다. 여러 트랜잭션이 동시에 같은 데이터를 수정하려고 할 때 충돌이 발생할 것이라고 '비관적으로' 가정하고, 데이터를 읽는 시점부터 잠금을 거는 방식입니다. 이렇게 하면 데이터가 수정되는 동안 다른 트랜잭션이 접근할 수 없으므로 동시성 문제를 확실하게 방지할 수 있습니다.