Database/SQL 9

[MySQL] Rename, JOIN

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..

Database/SQL 2025.09.04

[MySQL] SELECT

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로 조건을 주어 데이터를 검색했..

Database/SQL 2025.08.26

[MySQL] 테이블 구조, 생성

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시 데이터가 늘어나면 바로 해당칸에 붙는게 아니고, 맨 뒤 블록에 붙는다. 그게 체이닝 현상. 예전엔 그게 속도 저하의 문제가 있었으나 요즘엔 서버의 발달로 속도 저하이슈는 많이 발생하지 않는다.

Database/SQL 2025.08.22

[MySQL] 구조. 데이터베이스와 스키마.

https://opentutorials.org/course/3161/19533 DATABASE 데이터베이스? SCHEMA 스키마? 데이터베이스 DATABASE데이터가 체계적으로 저장 및 관리되는 물리적 단위. 실제 데이터를 저장하는 데이터 파일, 로그 파일, 인덱스, 테이블 등이 포함. 보통 데이터베이스끼리는 서로 독립적이며, 다른 데이터베이스에 직접 접근하려면 링크, 연결설정 등이 필요. 스키마 SCHEMA데이터베이스안에서 데이터 구조를 정의하는 논리적 단위. 데이터베이스 객체(테이블, 뷰, 인덱스, 저장 프로시저, 함수 등)을 그룹으로 묶어 관리하는 네임스페이스같은 역할. 여러 애플리케이션이나 사용자가 같은 데이터베이스를 사용할 때, 스키마를 통해 객체들을 논리적을오 분리 및 관리 가능. h..

Database/SQL 2025.08.22

FOUND_ROWS, SQL_CALC_FOUND_ROWS

보통 데이터수를 셀때 count(*)로 데이터를 세는데 그러면 풀로 데이터를 스캐닝 하게 된다.속도나 효율성의 측면에서 이를 해결하고자 mysql에서 제공하는 기능.select * from DATA;select FOUND_ROWS();데이터 조회, 전체데이터수 100.직전 쿼리 수행결과에서 row수를 반환한다. FOUND_ROW()는 LIMIT을 따르기에select * from DATA LIMIT 10;select FOUND_ROWS();이 SQL은 10개의 데이터, 10을 반환한다. 만약 LIMIT도 걸고, 전체 ROW수를 찾고자 한다면 select SQL_CALC_FOUND_ROWS * from DATA limit 10;select FOUND_ROWS(); 10개의 데이터, 데이터전체수 100을..

Database/SQL 2025.06.25

[Mybatis] 동적 쿼리, 컨트롤 플래그(가상 파라미터)

COALESCE COALESCE(칼럼1, 칼럼2, ...) FROM TABLE;칼럼1이 NULL이 아니면 칼럼1반환, NULL이면 칼럼2반환.칼럼2이 NULL이 아니면 칼럼2반환, NULL이면 칼럼3반환..... WHERE TRUE와 if 조건WHERE true AND A.COL1 = #{col1} AND A.COL2 = #{col2} AND A.COL3 = (서브쿼리결과) 이처럼 if 조건을 사용하여 동적쿼리를 생성할 수 있다. true, 1=1과 같은 조건을 적어주는 이유.만약 if 구문의 조건에 아무것도 해당되지 않는다면, where 구문은 ..

Database/SQL 2025.05.23