본문 바로가기
728x90

SQL22

저장 프로시저(Stored Procedure) 무엇인가?? 1) 저장 프로시저란?여러 SQL을 하나의 이름 있는 블록으로 DB 내부에 저장해 두고 CALL로 실행하는 프로그램 단위.“특정 로직의 쿼리를 함수처럼” 재사용한다는 점이 포인트.프로시저 vs 함수프로시저: 일련의 작업 절차. 리턴값이 없거나 여러 개일 수 있음(OUT/INOUT). 서버에서 실행되는 전형적인 저장형 코드.함수: 반드시 하나의 반환값을 돌려주며, 보통 SQL 문맥에서 값처럼 사용. 2) 일반 쿼리와 차이일반 쿼리는 매번 구문 분석 → 개체 확인 → 권한 확인 → 최적화 → 실행계획 캐시 등록 → 실행 과정을 거침.프로시저는 정의 시점과 실행 시점이 나뉘고, 지연된 이름 확인으로 정의 시점에 대상 테이블이 없어도 생성이 가능(실행 시 존재여부를 검사). 처음 실행 때는 일반 쿼리와 유사한.. 2025. 8. 30.
DB Lock을 활용한 동시성 제어방법 🔒 Lock이란? (DB 관점)1. 정의데이터베이스에서 Lock(락) 은 트랜잭션들이 동시에 같은 데이터에 접근할 때 충돌을 막고 일관성을 보장하기 위한 동시성 제어 메커니즘입니다.DBMS는 여러 사용자가 동시에 쿼리를 실행하더라도 데이터 무결성(Integrity)과 일관성(Consistency)을 유지해야 합니다. Lock은 이를 위해 트랜잭션 단위에서 자원 접근 순서를 조율하는 역할을 합니다. 2. Lock이 필요한 이유만약 Lock이 없다면 여러 트랜잭션이 동시에 같은 데이터를 수정할 수 있어 데이터 불일치(Inconsistency) 문제가 생깁니다. 대표적인 문제는 다음과 같습니다:Lost Update (갱신 손실)두 트랜잭션이 같은 데이터를 읽고 각각 갱신하면, 나중에 실행된 값이 먼저 실행.. 2025. 8. 30.
MYSQL VIRTUAL 과 STORED 란? 가상(VIRTUAL) 열특징:실시간 계산: VIRTUAL 열의 값은 실제로 데이터베이스에 저장되지 않고, 데이터가 조회될 때마다 실시간으로 계산됩니다. 예를 들어, SELECT 쿼리를 실행할 때 해당 열의 값이 계산됩니다.저장 공간 절약: 값이 물리적으로 저장되지 않기 때문에 저장 공간을 절약할 수 있습니다.성능: 값이 실시간으로 계산되므로, 계산이 복잡하거나 조회 빈도가 높을 경우 성능에 영향을 미칠 수 있습니다.사용 예:sqlCREATE TABLE example ( base_value INT, calculated_value INT AS (base_value * 2) VIRTUAL );위 예제에서 calculated_value 열은 base_value의 두 배를 나타내지만, 실제로는 저장되지 않고 조회.. 2024. 7. 28.
파이썬으로 다루는 MySQL pymysql 설치 pymysql은 Python에서 mysql을 사용할 수 있는 가장 쉬운 라이브러리이다. pymysql 라이브리러 이외에도 MySQLdb, MySQL connector 등의 다양한 라이브러리가 존재한다. 설치 pip install pymysql (터미널 창) mysql 핸들링 코드 작성 순서 1. pymysql 모듈 import 2. pymysql.connect() 함수를 사용하여 MySQL에 연결(호스트명, 포트, 로그인, 암호, 접속할 DB 등을 인자로 지정) 3. MySQL에 접속을 성공하면, Connection 객체로부터 cursor() 함수를 호출하여 Cursor 객체를 호출 4. Cursor 객체의 execute() 함수를 사용하여 SQL 문장을 DB 서버에 전송 5. SQL.. 2023. 4. 10.
프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기 문제 설명 다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다.USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다. Column nameTypeNullable USER_ID INTEGER FALSE GENDER TINYINT(1) TRUE AGE INTEGER TRUE JOINED DATE FALSE GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며, ONLINE_SALE_ID, USE.. 2023. 3. 27.
프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 문제 설명 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. Column nameTypeNullable BOARD_ID VARCHAR(5) FALSE WRITER_ID VARCHAR(50) FALSE TITLE VARCHAR(100) FALSE CONTENTS VARCHAR(1000) FALSE PRICE NUMB.. 2023. 3. 26.
728x90