Language 20

[Python] copy와 deepcopy의 차이

copy & deepcopycopy와 deepcopy는 파이썬의 copy 모듈에서 제공하는 두 가지 복사 방법이다.두 개의 차이를 이해하기 위해서는 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)에 대해 알아야한다! 얕은 복사 (copy.copy())객체를 새롭게 생성하지만, 내부의 요소들은 원본 객체와 같은 참조를 가진다.즉, 최상위 객체 (바깥쪽 객체)는 새롭게 생성되지만, 내부의 요소 (하위 객체들)는 원본 객체와 같은 주소를 공유하게 된다. import copylist1 = [[1, 2, 3], [4, 5, 6]]list2 = copy.copy(list1)list2[0][0] = 100 # 내부 요소를 변경print(list1)print(list2)list2를 copy.copy..

Language/Python 2025.02.10

[Python] ContextManager의 개념

ContextManagercontextmanager는 파이썬의 ContextManager 프로토콜을 구현하는 기능으로, with 문을 사용할 때 리소스 (자원)의 획득 및 해제를 자동화하는 역할을 한다.예시로, 파일 입출력, 데이터베이스 연결, 네트워크 소켓 사용 등에서 활용된다. contextmanager는 __enter__와 __exit__ 메서드를 구현하여 특정 코드 블록이 실행되는 동안 필요한 리소스를 설정하고, 블록이 끝나면 자동으로 해제하는 구조를 제공한다. - 파일을 읽고 파일을 자동으로 닫는 예제with open("file_txt", "r") as f: content = f.read() # 파일을 읽는 부분# with 블록을 벗어나면 파일이 자동으로 닫힌다 ContextManager Dec..

Language/Python 2025.02.10

[Python] Python Decorator 개념과 활용

Python DecoratorPython Decorator는 기존 함수를 수정하지 않고, 기능을 추가하거나 수정할 수 있는 기능을 말한다.재사용성과 확장성을 가진 것이 특징이다!직접 Decorator 패턴을 구현할 수 있지만, Python에서는 표현적 구문과 기능을 제공함으로써 Decorator 구현을 쉽게 할 수있도록 한다. 함수의 특징1. 함수를 변수에 대입할 수 있다.# 함수를 변수에 할당해보자def greeting(name): return f"Hello, {name}!" say_hello = greeting # 함수 객체를 변수에 대입하기print(say_hello("Seora")) 2. 함수 내부에 다른 함수를 정의할 수 있다.def outer_function(): def inner_fun..

Language/Python 2025.02.10

[MySQL] 자동으로 실행되는 트리거 (Trigger) 에 대해 알아보자

트리거 (Trigger)데이터의 무결성을 위한 기능이다.테이블에 INSERT, UPDATE, DELETE 작업이 발생하면 실행되는 코드 (DML 작업)예시퇴사자의 정보를 DELETE 하려고 할 때 다른 별도의 장소에 자동으로 저장해둔다. - 트리거 이해를 위한 테이블 생성 및 트리거 부착하기// 테이블 생성USE market_db;CREATE TABLE IF NOT EXISTS trigger_table (id INT, txt VARCHAR(10));INSERT INTO trigger_table VALUES(1, '레드벨벳');INSERT INTO trigger_table VALUES(2, '잇지');INSERT INTO trigger_table VALUES(3, '블랙핑크');// 테이블에 트리거 부착(..

Language/SQL 2024.08.21

[MySQL] 스토어드 함수와 커서에 대해 알아보자

스토어드 함수 (Stored Function)MySQL이 제공하는 내장함수 외에, 직접 함수를 만드는 기능을 제공한다.스토어드 프로시저와 모양은 비슷하나 다른 개념이다.RETURNS 예약어를 통해 하나의 값을 반환한다. - 기본 형태DELIMITER $$CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환_형식BEGIN 프로그래밍_코딩 RETURN 반환값; END $$DELIMITER ;SELECT 스토어드_함수_이름();    스토어드 함수의 사용스토어드 함수를 사용하기 전에 스토어드 함수 생성 권한을 허용해줘야 한다.SET GLOBAL log_bin_trust_function_creator = 1;  - 숫자 2개의 합을 계산하는 스토어드 함수USE market_db;DROP..

Language/SQL 2024.08.21

[MySQL] 스토어드 프로시저 (Stored Procedure) 에 대해 알아보자

스토어드 프로시저 (Stored Procedure)MySQL에서 제공하는 프로그래밍 기능쿼리문의 집합, 한 동작을 일괄 처리하는 용도로 사용 - 스토어드 프로시저 생성DELIMITER $$CREATE PROCEDURE 스토어드_프로시저_이름(IN 또는 OUT 매개변수)BEGIN 스토어드_프로시저_내용END $$DELIMITER ;  - 스토어드 프로시저 호출 (실행)CALL 스토어드_프로시저_이름();    매개 변수로 유연하고 강력한 스토어드 프로시저 만들기  입력 매개 변수 - 입력 매개 변수 지정IN 입력_매개변수_이름 데이터_형식 - 입력 매개 변수가 있는 스토어드 프로시저 실행CALL 프로시저_이름(전달_값);   - 1개의 입력 매개 변수가 있는 스토어드 프로시저 생성 / 호출USE m..

Language/SQL 2024.08.21

[MySQL] 인덱스를 활용해보자

인덱스의 생성과 제거 인덱스 생성 문법CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC|DESC]📌 CREATE INDEX 로 생성되는 인덱스는 보조 인덱스📌 UNIQUE 는 중복이 안 되는 고유 인덱스를 생성 인덱스 제거 문법DROP INDEX 인덱스_이름 ON 테이블_이름📌 기본 키, 고유 키로 자동 생성된 인덱스는 DROP INDEX로 제거하지 못한다📌 자동 생성된 인덱스는 ALTER TABLE 문으로 기본 키와 고유 키를 제거한 후에 제거 가능  - 인덱스 생성 실습 : 마켓 데이터베이스의 회원 테이블 데이터 조회해보기use market_db;select * from member  - 인덱스 확인하기show index from member;→ mem..

Language/SQL 2024.08.21

[MySQL] 인덱스의 내부 작동 방식을 이해하자

균형 트리클러스터형 인덱스와 보조 인덱스 모두 내부적으로 균형 트리(B-tree) 자료 구조이다. 균형 트리 (Balanced Tree, B-Tree)최상단의 노드 : 루트 노드중간 노드최하단의 노드 : 리프 노드 MySQL 에서 노드는 ‘페이지’ → 페이지는 최소한의 저장 단위균형 트리로 검색하지 않으면 처음부터 끝까지 Full Scan 해야한다.루트 페이지에서 첫번 째 검색 후 , 리프 페이지에서 검색 (효율 good)   균형 트리의 페이지 분할 페이지 분할 : 새로운 페이지를 준비해서 데이터를 나누는 작업이다.→ 페이지 분할이 일어나면 MySQL 이 느려지고, 자주 발생하면 성능이 저하된다.    인덱스의 구조  - 클러스터형 인덱스 구성하기  use market_db;create table cl..

Language/SQL 2024.08.21

[MySQL] 인덱스의 개념을 알아보자

인덱스의 개념 인덱스 : 데이터를 빠르게 찾을 수 있도록 하는 도구클러스터형 인덱스 : 기본 키로 지정 시 자동 생성, 테이블에 1개만 생성 가능보조 인덱스 : 고유 키로 지정하면 자동 생성, 여러 개 생성 가능, 자동 정렬 x  인덱스의 장점SELECT 문 검색 속도 향상컴퓨터의 부담 감소 → 전체 시스템 성능 향상   인덱스의 단점 인덱스도 공간을 차지하기 때문에 DB 내에 추가적인 공간이 필요하다.처음 인덱스 생성 시 시간 소요된다.SELECT가 아닌 INSERT, UPDATE, DELETE가 자주 일어나면 오히려 성능 저하를 유발하게 된다.   인덱스의 종류   클러스터형 인덱스→ 자동으로 생성되는 인덱스 - 자동으로 생성되는 인덱스 확인하기use market_db;create table tabl..

Language/SQL 2024.08.21

[MySQL] 가상의 테이블인 뷰(View)에 대해 알아보자

뷰 (View) 테이블과 밀접하게 연관되어 있는 데이터베이스 개체이다.테이블처럼 데이터를 가지고 있지는 않다.  단순 뷰, 복합 뷰 로 구분된다.  뷰 (View) 의 기본 생성- 뷰를 만드는 형식CREATE VIEW 뷰_이름AS SELECT 문; - 뷰에 접근하는 방식SELECT 열_이름 FROM 뷰_이름 [WHERE 조건]; - 회원 테이블의 아이디, 이름, 주소에 접근하는 뷰 생성, 접근하기// 뷰 생성USE market_db;CREATE VIEW v_memberAS SELECT mem_id, mem_name, addr FROM member; // 뷰 접근SELECT * FROM v_member; 뷰의 실체는 SELECT 문이다   뷰를 사용하는 이유 📌 보안(security)에 ..

Language/SQL 2024.08.21