목록db (16)
멋쟁이v의 개발일지
01. 트랜잭션 01. 트랜잭션💡1) 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산을 모아 놓은 것이다. 2) 작업 수행에 필요한 SQL문의 모임이다. 3) 장애 발생 시, 복구 작업이나 병행 제어 작업을 위한 중요한 단위로 사용한다. 4) 데이터베이스의 무결성과 일관성을 보장하기 위해 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 제대로 정의하고 관리해야 한다. ➡️ DBMS가 데이터베이스를 다룰 때, 사용하는 작업(프로그램)의 단위➡️ 데이터의 무결성을 유지하기 위해 원자성, 일관성, 고립성, 지속성의 성질을 갖는다.구문👉🏻START TRANSACTION(SQL 문)COMMIT; / ROLLBACK; 개념👉🏻보통 단일 SQL문을 다루기도 하지만, 여러 개의 SQL문을 순차적으로 수행하기도 한..
[목차]01. 스토어드 함수02. Trigger 01. 스토어드 함수💡사용자가 직접 함수를 만들어서 사용한다. 내장 함수(Built-in Function)가 사용자를 만족하는 모든 함수를 제공하지 않는다. (필요에 의해 사용자가 직접 함수를 만들어 사용한다.) 형태와 사용 용도에서 스토어드 프로시저와 차이가 있다.단점👉🏻유지보수 복잡성 증가 ➡️ 각 기능을 담당하는 프로그램 코드가 자바와 MySQL 스토어드 프로그램으로 분산되어 관리되기 때문에 애플리케이션의 설치나 배포가 복잡해진다. 프로시저와 함수의 차이👉🏻함수는 OUT 파라미터를 사용할 수 없다.함수의 파라미터는 모두 입력 파라미터로 사용된다.함수는 RETURNS 예약어를 통해 반환할 값의 데이터 형식을 지정하고, 본문 안에서 RETURN문으로 하나..
[목차]01. SELECT ~ INTO02. CASE ~ END03. WHILE 01. SELECT ~ INTO💡OUT 매개변수 사용 시, 출력 매개 변수에 값을 대입하기 위해서 사용 MySQL에서 사용자가 정의한 변수에 SELECT에서 조회할 열에 값을 대입하기 위해 사용하며, 주로 프로시저에서 사용한다.구문BEGIN DECLARE num1 INT; SELECT -- 테스트 테이블에서 조회할 member_age을 위에서 선언한 num1이라는 변수에 대입 member_age INTO num1 FROM tb_test; END 예시goods table 평균가격 → ROUND(AVG(g.g_price), 0)-- 기존 프로시저가 존재하면 삭제 DROP PROCEDURE IF EXISTS sp_aver_pric..
[목차]01. Stored Program 01. Stored Program💡내장식 프로그램, 프로그램 내장 방식, 저장 프로그램MySQL 전용 언어.➡️ SQL문에 변수, 제어문, 입출력 등 프로그래밍 기능을 추가해서 SQL문으로 처리하기 어려운 문제를 해결할 수 있다. 저장 프로그램은 우리가 작성하는 프로그램 로직을 프로시저로 구현해서 사용한다. 일반적인 프로그래밍 언어에서 사용하는 함수와 비슷한 개념. 작업 순서가 정해진 독립된 프로그램의 수행 단위.DBMS에 저장되기 때문에 저장 프로그램이라고 부른다.특징👉🏻MySQL 성능 향상➡️ 긴 쿼리의 내용을 전송하지 않고 프로시저의 이름과 매개 변수 등 전송하여 네트워크 부하를 줄일 수 있다. 유지 관리가 간편➡️ 직접 SQL문을 작성하지 않고, 생성한 이..
[목차]01. 데이터베이스 설계02. 정규화 01. 데이터베이스 설계💡사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정 실무 능력, 경험 → 단, 좋은 설계와 나쁜 설계는 분명히 존재한다.단계👉🏻요구사항 수집 및 분석개념적 → 논리적 → 물리적구현 ➡️ 개념적👉🏻ERD, DBMS에 독립적이다.개체와 속성을 추출한다.업무와 관련이 깊은 명사를 추출한다.광범위하고 일반적인 의미. 제외 대상예시) 마트에서 상품을 구입하는 경우상품, 마트, 고객, 직원, 관리자 객체 간의 관계를 추출한다.관계 : 개체 간 의미있는 연관성추출 방법 : 요구사항 문장에서 개체 간 연관성을 의미있게 표현한 동사를 추출한다.관계 추출 예시 회원이 상품을 주문한다. 제조업체와 제품 → 공급한다. 회원이 게시글을 작성한다...
[목차]01. 서브쿼리02. UNION 01. 서브쿼리💡쿼리 안에 들어가는 다른 쿼리 대표적으로 SELECT, FROM, WHERE 절에서 사용 가능하다. 서브 쿼리(부속 질의) 밖에 있는 쿼리 → 메인 쿼리 또는 주 질의 일반적으로 대량의 데이터를 다루는 경우, 데이터를 모두 합쳐서 연산하는 JOIN보다 필요한 데이터만 찾아서 조회하는 서브 쿼리가 성능이 좋다. ➡️ 서브 쿼리가 단일 행 반환 또는 다중 행을 반환에 따라서 분류 할 수 있다.단일 행 부속 질의서브 쿼리에서 하나의 행을 반환해서 메인 쿼리에 전달한다.스칼라 서브 쿼리, 비교 연산자에서 주로 나타난다.다중 행 서브 쿼리서브 쿼리 결과가 여러 개의 행을 반환하는 경우IN연산자를 사용하여 여러 행을 처리할 수 있다.SELECT절에 사용하는 스..
[목차]01. VIEW02. CTE(WITH)03. GROUP_CONCAT 01. VIEW💡VIEW는 사용자에게 접근이 허용된 자료를 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 만들어진 가상의 테이블장점👉🏻보안 강화간단한 SQL문을 사용 가능사용자에게 필요한 내용만 보이도록 할 수 있다.편리성, 재사용성보안성독립성 특징👉🏻이름을 가지는 가상 테이블ALTER 구문을 사용할 수 없다. (MySQL은 ALTER VIEW 허용) 종류👉🏻단순 뷰하나의 테이블과 연관된 뷰 복합 뷰두 개 이상의 테이블과 연관된 뷰 구문➡️ 뷰 생성👉🏻CREATE 뷰_이름ASSELECT문; ➡️ 뷰 조회👉🏻SELECT컬럼명FROM정의한 뷰_이름; 뷰 생성 시, 조회할 열 이름을 입력하고, 뷰를 조회할 때, 원하는 열 이름..
[목차]01. 데이터베이스 구성02. RDBMS 제약 조건03. 테이블 JOIN04. NULL값 처리 01. 데이터베이스 구성1) 데이터베이스 스키마👉🏻데이터베이스의 전체 구조 스키마(Schema)➡️ 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지 기본적인 구조를 정의한다.➡️ 테이블의 속성과 자료 타입에 대한 정보를 가지고 있다. 2) 데이터베이스 인스턴스👉🏻데이터베이스를 구성하는 릴레이션 인스턴스의 모음 인스턴스➡️ 스키마를 정의하고, 정의한 스키마에 따라서 실제로 테이블에 저장되는 데이터의 집합이다. 3) 릴레이션👉🏻종류어트리뷰트Degree식별자(키)튜플카디널리티도메인 : 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합 특징릴레이션은 중복된 튜플을 가질 수 없다.릴레이션은 튜플..
[목차]01. 데이터 타입02. 데이터 모델링03. 데이터 모델의 구성 요소04. MySQL 변수05. 데이터 형 변환06. SQL 내장함수07. 윈도우 함수 01. 데이터 타입종류💡데이터 타입의 종류가 왜 이렇게 많을까요? ➡️ RDBMS는 테이블 구조이고, 데이터들이 DB서버의 공간을 계속 차지한다.➡️ 저장 공간을 효율적으로 사용하는 것이 중요하다.➡️ 데이터베이스도 낭비를 줄이기 위해 용량을 생각하여 데이터 타입을 지정해야 한다. 💡데이터 형식이 다양한 이유 ➡️ 크게 문자형, 숫자형, 날짜형으로 나누고 실제 저장되는 데이터 타입이 다양하다.➡️ 각 데이터에 맞는 타입을 지정해서 호율적으로 저장할 수 있다. ➡️ 숫자형👉🏻SMALLINT, INT, BIGINT, FLOAT → 자주 사용 UNSIG..
[목차]01. 데이터베이스 구축 절차02. 데이터베이스 선택 가이드03. SQL(Structured Query Language)04. SQL 실습 01. 데이터베이스 구축 절차💡데이터베이스 만들기 → 테이블 만들기 → 데이터 입력, 수정, 삭제하기 → 데이터를 조회하고 활용하기 ➡️ 데이터베이스는 데이터를 저장하는 공간이고, 가장 먼저 데이터 베이스를 준비하고, 그 안에 테이블을 생성해야 한다.1) 종류👉🏻계층형, 망형, 관계형, 객체관계형 등➡️ 가장 많이 사용하는 관계형 데이터 베이스(RDBMS)데이터가 테이블에 저장(최소 단위)테이블 하나 이상의 열과 행으로 이루어진다. 2) 폴더 구조➡️ bin(중요) : MySQL의 서버 프로그램, 클라이언트 프로그램 및 유틸리티 프로그램 파일➡️ docs : ..