목록Backend/SQL (6)
개발 무지렁이
𐂂 MySQL에서 PRIMARY KEY가 아니면 AUTO_INCREMENT를 사용할 수 없다. 더불어, MySQL은 시퀀스 기능을 지원하지 않는다. 따라서, 시퀀스 기능을 하는 시퀀스 테이블을 만들어 시퀀스 기능을 구현해야 한다. 이 시퀀스 테이블을 만드는 과정에서 프로시저를 정의하고 호출해야한다. 𐂂 프로시저 (Procedure) 란 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 말한다. 🎯 목적: - 반복적 작업: 프로시저를 호출하여 코드의 🧩 재사용성 증가 - 복잡한 작업: 여러 단계로 구성된 프로시저를 작성하여, 코드를 관리가능한 단위로 분리⭕ - 트랜잭션 관리: 여러개의 SQL문을 하나의 트랜잭션으로 묶어 데이터 🧩 일관성 유지 - 보안상 이점: 사용자에게 직접적인 데이터베이스..
𐂂 데이터베이스 (Database) 란 특정조직에서 다양한 데이터를 다수의 사용자가 사용할 수 있도록, (동시사용, 질의어 사용) 구조적으로 통합된 데이터의 집합을 말한다. (중복최소화, 스키마명세) 🎲 프로그램-데이터 독립성 : 하위레벨 스키마의 변화가 상위레벨 스키마에 영향을 미치지 않는다.) 🧸 스키마(intension[내연], 구조) / 인스턴스(extension[외연], 상태) 𖠃 '정규화' 란 테이블을 분할하여 데이터의 불필요한 중복을 제거하는 것을 말한다. 즉, 테이블 설계 시 중복저장을 최소화하도록 구조화하는 작업을 말한다. 이는 검색효율을 높여주고, 테이블 🧩 무결성(정확한 데이터 보장)을 유지할 수 있게 한다. 🎯 삽입/수정/삭제 성능 향상 🥯 '반정규화' 란 : 데이터 중복을 통해 성..
𐂂 퍼포먼스(성능) #1. SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = e.deptno WHERE d.deptno = 10; #2. SELECT e.ename, d.dname FROM emp e JOIN (SELECT * FROM dept WHERE deptno = 10) d ON e.deptno = d.deptno; 🪅#2가 퍼포먼스가 더 좋다/ WHY emp 테이블의 레코드가 10개라고 하고, dept 테이블의 레코드가 100개라고 했을 때, #1은 emp 레코드 하나당 dept 레코드 100개를 검사해야하므로, 총 1000번의 비교연산이 들어간다. #2는 인라인뷰에서 dept 레코드 100개 중 deptno = 10인 레코드를 뽑고(6..
> 🦔 DDL(Data Definition Language)문 작성시 Primary key, Foreign key 설정은 따로 빼둔다. WHY DDL을 작성한 후, INSERT문을 통해 테스트용 데이터를 넣을 때, 여러 제약이 걸려있으면 번거롭다. 테스트할 때는, 따로 빼둔 ALTER문을 주석처리하고 전체 스크립트를 돌리고, 데이터가 유효한지 검사할 때, 주석을 풀고 전체 스크립트를 돌려본다. CREATE TABLE emp { empno INT(4) NOT NULL, ename VARCHAR(10), job VARCHAR(9), mgr INT(4), hiredate DATETIME, sal DECIMAL(7, 2), comm DECIMAL(7, 2), deptno INT(2) } CREATE TABLE ..
RDBMS 릴레이션(relation)이라는 2차원 테이블을 통해 데이터를 저장하는 데이터베이스를 말한다. SQL 쿼리문을 통해 데이터에 접근하며, 효율적으로 데이터를 보관하기 위해 🧩 구조화가 굉장히 중요하다. 🎭. 무결성 제약조건 (🧩 무결성: 결점이 없는 상태) (1) 도메인 제약조건 : 각 애트리뷰트가 가질 수 있는 값의 범위가 있다. (2) 키 제약조건 : 키 애트리뷰트에 중복된 값이 올 수 없다. (3) 기본키와 엔티티 무결성 제약조건 : 기본키 애트리뷰트는 null값을 가질 수 없다. (4) 외래키와 참조 무결성 제약조건 : 참조하는 애트리뷰트의 도메인은 참조된 애트리뷰트의 도메인과 같아야한다 NOSQL 자유로운 형태로 데이터를 저장한다. 스키마 유연성이 높고, 대량의 데이터를 분산처리하는데 ..