트랜잭션이란? 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징 1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 3. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질(ACID) 1. Atomicity(원자성) 1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 ..
뷰(View)란 무엇인가? 1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. 2. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 3. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 4. 뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다. 뷰(View)의 특징 1. 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다. 2. 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다. 3. 데이터의 논리적 독립성을 제공할 수 있다. 4. 필요한 데이터만 뷰로 정의해서 처리..
인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조라고 한다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 WHERE 조건으로 거는 등"의 작업을 하면 *옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있다. 또한 인덱스 생성 시 데이터를 오름차순으로 정렬하기 때문에 정렬된 주소체계라고 표현할 수 있다. (아래 그림을 보..
💡 정규화에 대해 설명해주세요. 더보기 정규화는 데이터 무결성을 유지하기 위해 잘 정의 된 방식으로 테이블을 분할하여 데이터베이스에서 중복 데이터를 제거하는 프로세스입니다. 💡 비정규화에 대해 설명해주세요. 더보기 비정규화는 복잡한 쿼리 속도를 높이고 성능을 향상시키기 위해 테이블에 중복 데이터를 추가하는 프로세스입니다. 💡 정규화의 장점과 단점을 설명하세요. 더보기 장점 데이터베이스 변경 시 이상 현상을 제거하며 데이터베이스 구조 확장시 재디자인을 최소화 할 수 있습니다. 단점 릴레이션 분해로 인하여 릴레이션간의 연산이 많아집니다. 이로 인해 응답 시간이 느려질 수 있습니다. 💡 정규화를 하는 이유? 더보기 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지하기 위해서 각 릴레이션에 중복된 종속성을..
1. 정규화(Normalization) [ 정규화(Normalization)이란? ] 정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. [ 제1 정규화 ] 제1 정규화란 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것이다. 규칙 1. 각 컬럼이 하나의 속성만을 가져야 한다. 2. 하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야 한다. 3. 각 컬럼이 유일한(unique) 이름을 가져야 한다. 4. 칼럼의 순서가 상관없어야 한다. 위의 테이블에서 추신수와 박세리는 여러 개의 취미를..
JDBC란? Java DataBase Connectivity의 약자 자바 프로그래밍 언어로 만들어진 클래스와 인터페이스로 이루어진 API로서 ANSI SQL를 지원한다 SQL문을 실행할 수 있는 함수 호출 인터페이스이다 특징 DBMS 종류에 독립적인 자바 프로그래밍 가능 데이터베이스의 종류가 달라지더라도 동일한 API를 사용하게 해준다 자바가 가지는 플랫폼에 독립적이라는 특성과 DBMS에 독립적인 특성을 가진다 기능 데이터베이스에 연결 설정 한다 SQL 문장을 DBMS에 전송한다 SQL 문장 전송 후 결과를 처리할 수 있게 해준다 인터페이스 데이터베이스를 만드는 업체에게 제공되는 인터페이스 업체에게 제공되는 인터페이스를 각각의 DBMS업체들이 구현해 놓은 것으로서 이것이 바로 드라이버다 프로그래머에게 제..
DML(Data Manipulation Language) - 데이터베이스 테이블에서 새로운 행을 입력하고 기존의 행을 변경하고 제거한다. - 데이터 조작기능 - 테이블의 레코드를 CRUD(Create, Retrieve, Update, Delete) INSERT : 데이터베이스 객체에 데이터를 입력 INSERT INTO 테이블명 (칼럼이름1, 칼럼이름2, 칼럼이름3, .....) VALUES(칼럼 값1, 칼럼 값2, 칼럼 값3, .....) 형식으로 데이터를 입력한다 생략이 가능한 필드 NULL이 허용된 칼럼 DEFAULT가 설정된 칼럼 AUTO INCREMENT가 설정된 칼럼 SELECT : 데이터베이스 객체에서 데이터를 조회 * : FROM 절에 나열된 테이블에서 모든 열을 선택 ALL : 선택된 모든..
COUNT 컬럼의 개수를 구하고자 할 때 사용 COUNT(*)을 사용 시 NULL을 포함한 전체 행의 갯수를 출력 COUNT(컬럼)을 사용 시 NULL을 제외한 컬럼의 갯수를 출력 SUM 컬럼 내부의 레코드 합을 구하고자 할 때 사용 SUM(컬럼)으로 사용가능 AVG 컬럼 내부의 레코드의 평균을 구하고자 할 때 사용 AVG(컬럼)으로 사용가능 MAX 컬럼 내부의 레코드 최대값을 구하고자 할 때 사용 MAX(컬럼)으로 사용가능 MIN 컬럼 내부의 레코드 최소값을 구하고자 할 때 사용 MIN(컬럼)으로 사용가능 ROUND 반올림 및 소수점 자리수를 제한할 때 사용 ROUND(숫자)로 사용 시 반올림하여 정수부분만 표현 ROUND(숫자, 자릿수)사용 시 반올림 후 해당 소수점 자리 수 까지 표현 CEIL 올림..
ORDER BY를 사용 할 때 앨리어스를 사용한 별명에 공백이 있을 경우 제대로 동작하지 않는 것을 종종 볼 수 있습니다. select 컬럼 as '일반 별명' from 테이블 where 조건 order by 일반 별명; select 컬럼 as "일반 별명" from 테이블 where 조건 order by 일반 별명; 을 사용할 경우 정상적인 결과값을 얻지 못합니다. 이럴 경우 `(백 쿼트)를 이용하면 해결 할 수 있습니다. select 컬럼 as '일반 별명' from 테이블 where 조건 order by 일반 별명; select 컬럼 as "일반 별명" from 테이블 where 조건 order by `일반 별명`; 백 쿼트를 사용 할 경우 정상적으로 출력이 되는 것을 볼 수 있습니다. 백 쿼트는 ..
명령어 종류 명령어 설명 DML(Data Manipulation Language) - 데이터 조작어 레코드를 조회, 삽입, 수정, 삭제를 할 수 있는 언어 SELECT 데이터를 조회하는 명령어 INSERT 데이터를 삽입하는 명령어 UPDATE 데이터를 수정하는 명령어 DELETE 데이터를 삭제하는 명령어 DDL(Data Definition Language) - 데이터 정의어 테이블을 생성, 수정, 삭제, 초기화 할 수 있는 언어 CREATE 테이블을 생성하는 명령어 ALTER 테이블을 수정하는 명령어 DROP 테이블을 삭제하는 명령어 TRUNCATE 테이블을 초기화하는 명령어 DCL(Data Control Language) - 데이터 제어어 데이터베이스에 접근하거나 사용자에게 권한을 주는 역할을 하는 언..