[DB] 6. DDL 6. DDL DDL은 같은 명령을 사용. CREATE / DROP / ALTER CREATE : 데이터베이스 객체 생성 (대표적으로) 테이블을 생성한다. 스키마 내부에서 생성한다. 스키마내에서 이름이 중복된 객체가 존재하면 안 된다.CREATE TABLE 테이블명 ( 열이름 자료형 [DEFAULT 값 | NOT NULLL | UNIQUE | CHECK 체크조건], 열 정의2, 열 정의3, ..., [PRIMARY KEY (열1, ...)] [FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)] [ON DELETE reference_option] [ON UPDATE reference_option] ); DROP : 데이터베이스 객체 삭제 데이터베이스 객체를 삭제한다. 객체의 스키마와 내..
[DB] 5. JOIN 5. Join 여러 테이블에 대한 조인 검색. Join? : 여러 개의 테이블을 연결하여 하나의 테이블로 만드는 과정(데이터를 검색하는 것) 조인 속성 : 조인 검색을 위해 테이블을 연결해주는 속성 연결하려는 테이블 간 조인 속성의 이름은 달라도 되지만, 도메인은 같아야 한다. 일반적으로 외래키를 조인 속성으로 이용 사용 (동등조인) -- CROSS JOIN SELECT * FROM table1, table2 WHERE table1.key1 AND table2.key2; WHERE 절은 ' AND '으로 구성, 해당 폼은 이제 잘 사용되지 않는 구식 형태 혹은, 외부조인과 폼을 통일시켜 다음과 같이 작성할 수 있다.SELECT * FROM table1 {INNER|LEFT|RIGHT|FUL..
[DB] 4. SQL SQL(Structured Query Language) -** RDB를 위한 표준 질의어, 비절차적 데이터 언어 유래 : IBM이 개발한 SEQUEL에서 유래, ANSI와 ISO에 의해 현재까지도 표준화 및 용어 통일. 방식 : 대화식 SQL : DBMS에 직접 접근해 질의를 작성 및 실행 삽입 SQL : 프로그래밍 언어로 작성된 응용 프로그램에 삽입 (MyBatis, Hibernate.. 등) SQL은 완전한 프로그래밍 언어가 아닌 data sublanguage로 분류 -> 데이터와 메타 데이터에 대해서만 생성하고 처리하는 문법을 가지고 있다. SQL은 클라이언트/서버 구조로 구성되어 있다. -> 분산형 구조로 클라이언트에서 질의(요청)를 하면 서버에서 그 질의를 받아 처리하고 응답을 돌려준다. SQL..
[DB] 3. 관계대수 이전.. 데이터 모델 = 데이터 구조, 연산, 제약조건 관계대수 : 관계형 DB에서 연산 담당 관계대수(relatinal algebra) : 릴레이션에서 원하는 결과를 얻기 위해 질의하는 방법을 기술한 언어 관계 데이터 연산 1. 관계대수(절차적) : 어떤 데이터를 찾기 위한 처리 절차를 명시, DBMS내 처리 언어로 사용 2. 관계해석(비절차적, 선언적) : 어떤 데이터를 찾는지 명시, SQL의 이론적 기반 * 카티전 프로덕트(X) : 데카르트 곱, 두 집합의 원소를 골라 순서쌍으로 나타낸다. 도메인(domain) : 카티전 프로덕트의 기초 집합(A, B)가 가질 수 있는 값의 범위 관계대수 순수 관계 연산자 : 관계 데이터 모델의 위해 고안 (셀렉트, 조인, 프로젝트, 개명, 디비전) - 셀렉트 : ..
[DB] 2.2 키(key) key = 릴레이션에서 투플들을 유일하게 '구별하는' 속성 또는 속성들의 집합 primary key = 기본키로써, 테이블에 반드시 존재 그 밖에 candidate key, alternate key, super key, foreign key 존재 키의 특성 유일성 : 투플을 구별 -> 모든 투플은 서로 다른 키 값을 가져야 한다. 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성함 => 릴레이션에서는 투플의 중복을 허용하지 않는다 => 투플 간 구분을 위해, 키는 반드시 다른 값을 가진다. 키는 릴레이션 간의 관계를 맺는데도 사용된다. => foreign key의 역할 1. super key : 유일성을 만족하는 속성 또는 속성들의 집합 2. candidat key : 유일성과 최소성을 만족하는 속성 ..
[DB] 2. 데이터 모델 DBMS의 역할 정보 시스템에서 파일시스템을 대체하여, 데이터의 중복을 방지하고, 독립성, 일관성, 무결성을 보장. 또한, 데이터 관리, 재난 복구, 동시성 제어 등의 기능을 갖는다. 데이터 모델링 : 현실 세계의 데이터를 -> 개념적 -> 논리적 모델링 단계를 거쳐 데이터베이스에 저장하는 구조로 표현하는 작업. 데이터 모델 : 데이터 모델링의 결과물을 표현하는 도구 개념적 데이터 모델 : E-R(Entity-Relation, 개체-관계) 모델로 나타낸다. 논리적 데이터 모델 : 관계 데이터 모델 데이터 모델의 구성 1. 연산, ex) CRUD.. 2. 데이터 구조, 데이터가 저장되는 형태 3. 제약조건, 데이터 간의 만족해야할 조건 1. 개념적 데이터 모델 : 현실 세계의 '중요 데이터를 추출'하는 작..
썸네일 [MySQL] 데이터베이스, DBMS 데이터 특성에 따른 분류 : 범주형 데이터(categorical data), 수치형 데이터(numerical data) 범주형 데이터 : 학년, 과목, 상품이름 등 연산이 불가능한 데이터. 질적 데이터라고도 한다. 순서가 없는 명목형(nominal)과 데이터 사이에 순서가 존재하는 순서형(ordinal) 데이터가 있다. 수치형 데이터 : 숫자로 표현되어, 계산이 가능한 데이터. 양적 데이터라고 한다. 셀 수 있는 이산(discrete), 셀 수 없고 측정이 가능한 연속(continuos) 데이터가 있다. 형태에 따른 분류 : 정형(structured), 반정형(semi-structured), 비정형(unstructured data) 데이터 정형 데이터 : 데이터의 형태(틀)이 정해져 있다. RDB의 테이..
썸네일 Template 과 Generic 그리고 C++ STL //template MyStack::MyStack() { tos = -1; } 1. 단순 함수 오버로딩 #include using namespace std; void myswap(int& a, int& b) { int tmp; tmp = a; a = b; b = tmp; } void myswap(double& a, double& b) { double tmp; tmp = a; a = b; b = tmp; } int main() { int a = 4, b = 5; myswap(a, b); cout
썸네일 연산자 재정의 함수의 구현 위치에 대하여. C++을 가지고 짧막한 실습을 하다가 문득 궁금해졌다. 연산자 재정의 함수를 클래스의 friend 함수로 선언하고, 도대체 어디서 정의해야할까? .h .cpp 로 나뉘어진 클래스 작성에 익숙치않아 기초적인 것에 꽤나 머리를 싸멨다. 알아보자. 문제의 구현 방식. 오류를 해결하기 위해, operator
썸네일 [C++] 파일 입출력 파일의 종류 파일의 종류에는 텍스트 파일과 바이너리 파일 두가지가 있다. 텍스트파일 : 내용이 텍스트, 문자만으로 작성된 파일. 메모장 파일 , 소스 코드, xml문서 등. 바이너리 파일 : 파일 내용을 텍스트만으로 표현 불가. mp3, jpeg, hwp, obj, exe 등 컴파일된 코드나 실행 파일. C++ 표준 파입 입출력 일반적으로 파일입출력을 위해선 라이브러리 이용한다. 파일 입출력 모드 fsream은 텍스트 I/O와 바이너리 I/O 방식을 모두 지원 텍스트 I/O : 문자 단위로 파일 읽기/쓰기 바이너리 I/O : 바이트 단위 파일 읽기/쓰기, 바이너리 I/O 방식으로 텍스트 파일의 입출력 사용 가능 파일 입출력 스트림은 프로그램과 파일을 연결시켜준다. 파일 입력: ">>" 연산자, get()..
썸네일 [C++] 입출력 시스템 C++에 포맷 입출력은 3가지 방법이 존재한다. 1. 포맷 플래그 2. 포맷 함수 3. 조작자 포맷 플래그 ios 클래스에는 포맷 플래그 값을 가진 멤버 변수가 있다. 이 멤버 변수를 이용하여 입출력의 포맷을 수정할 수 있다. 포맷 플래그 값을 가진 멤버 변수를 수정하기 위해서는, set과 unset 메서드를 사용해야 한다. #include using namespace std; int main() { cout
(수정필요)[C++] 가상함수와 추상클래스 함수의 단순 재정의 #include using namespace std; class Base { public: void f() { cout