목록SQL과 DB (12)
wintertreey 님의 블로그
TRANSACTION 주요 트랜잭션 명령어명령어설명BEGIN TRANSACTION / START TRANSACTION트랜잭션 시작COMMIT트랜잭션 확정 → 변경 사항을 DB에 반영ROLLBACK트랜잭션 취소 → 변경 사항 모두 되돌림SAVEPOINT 이름트랜잭션 중간 저장 지점 설정ROLLBACK TO SAVEPOINT 이름지정한 SAVEPOINT까지 롤백SET TRANSACTION트랜잭션 격리 수준 지정 (READ COMMITTED, SERIALIZABLE 등) 예시START TRANSACTION; -- 트랜잭션 시작UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;UPDATE accounts SET balance = balance + 1..
RENAME테이블 이름 변경RENAME TABLE table1 TO table2; 자세한 설명은 하단에 첨부한 글을 참고.JOINhttps://opentutorials.org/course/3161/19545 DATABASE가 다음과 같다고 가정 LEFT JOINSELECT D.product_id, -- 상품 ID D.product_name, -- 상품 이름 D.product_type, -- 상품 타입 P.user_id -- 해당 유저가 상품을 보유/권한 있는지FROM PRODUCT DLEFT JOIN PRODUCT_USER P ON P.product_id = D.product_id AND P.user_id = '13'; 실행 결과 product_id..
1:N 관계를 객체 구조로 매핑할 때 사용된다. Service에서 비즈니스 로직을 처리할 때 Map 안에 List의 구조를 이중으로 넣을 수도 있지만, 의 개념을 사용하면 mybatis xml 에서 쿼리상으로 한 번에 출력할 수 있다. 즉 이런 식으로 출력한다는 것.{ "user_id": 1, "user_name": "홍길동", "order_list": [ { "order_id": 101, "product": "노트북" }, { "order_id": 102, "product": "키보드" } ]} 이게 mybatis에서 쓰일 때의 모습이다. SELECT U.user_idx, U.user_name FROM USERS U SELECT O.order_id, ..
https://opentutorials.org/course/3161/19541 UPDATE TABLENAMESET COL1='..', COL2='...'WHERE ID=''; WHERE 조건에는 되도록이면 PK로 하기. 속도 향상을 위해. DB상에서 UPDATE를 할 때는 무조건 작업 전 백업을 해두고 해야한다. ((프로그래밍 상이면 괜찮음!))
https://opentutorials.org/course/3161/19540 SELECT COL1, COL2.. FROM TABLENAME; FROM 이 없는 경우SELECT 1; → 결과는 1SELECT 'HELLO'; → 결과는 HELLOSELECT NOW(); → 현재 시간SELECT 2+3; → 5즉, FROM 절이 없으면 DB는 테이블 조회가 아니라 표현식 계산을 하고, 그 결과를 출력 LIMIT 3; 맨 뒤에 이렇게 붙이면 나오는 데이터 들 중 3개만 출력. ORDER BY 시 유의사항PK, CREATED 모두 데이터가 생성되면서 계속 값이 증가하므로 둘 중 아무거나 해도 해당 데이터를 특정짓기 쉽다.그러나 PK의 경우 인덱스 테이블이 생성된다.따라서 PK로 조건을 주어 데이터를 검색했..
https://opentutorials.org/course/3161/19539 테이블 생성 예시CREATE TABLE member ( id INT AUTO_INCREMENT primary KEY, NAME VARCHAR(50) UNIQUE KEY, price INT NOT NULL DEFAULT 0, cnt INT NOT NULL DEFAULT 0); INSERT SHOW DATABASES;USE DATABASENAME;SHOW TABLES;DESC TABLENAME; INSERT INTO EXAMPLETABLE (COL1, COL2..) VALUES('CONT1', 'CONT2'..); 없으면 INSERT, 있으면 UPDATE UK의 값이 중복되면 UPDATE, 값이 존재하지 않으면 INSERT I..
https://opentutorials.org/course/3161/19536 Structured Query Language row 2, column 4. https://opentutorials.org/course/3161/19537 File은 가로로 읽고, DB는 세로로 읽음. CHAR vs VARCHARCHAR는 무조건 해당 메모리만큼 할당한다. 따라서 주어진 값이 그보다 작다면, 뒤에 그만큼 공백을 붙여준다. VARCHAR는 가변적. 근데 그 뒤에 update시 데이터가 늘어나면 바로 해당칸에 붙는게 아니고, 맨 뒤 블록에 붙는다. 그게 체이닝 현상. 예전엔 그게 속도 저하의 문제가 있었으나 요즘엔 서버의 발달로 속도 저하이슈는 많이 발생하지 않는다.
https://opentutorials.org/course/3161/19533 DATABASE 데이터베이스? SCHEMA 스키마? 데이터베이스 DATABASE데이터가 체계적으로 저장 및 관리되는 물리적 단위. 실제 데이터를 저장하는 데이터 파일, 로그 파일, 인덱스, 테이블 등이 포함. 보통 데이터베이스끼리는 서로 독립적이며, 다른 데이터베이스에 직접 접근하려면 링크, 연결설정 등이 필요. 스키마 SCHEMA데이터베이스안에서 데이터 구조를 정의하는 논리적 단위. 데이터베이스 객체(테이블, 뷰, 인덱스, 저장 프로시저, 함수 등)을 그룹으로 묶어 관리하는 네임스페이스같은 역할. 여러 애플리케이션이나 사용자가 같은 데이터베이스를 사용할 때, 스키마를 통해 객체들을 논리적을오 분리 및 관리 가능. h..