실습
XAMPP(잼프) 프로그램은 PHP, Apache, MySQL 프로그램을 패키지 형태로 설치.
- Apache : 클라이언트 측에서 웹 서비스를 요청하면 HTML 파일, 이미지, 동영상 등의 데이터를 HTTP 규약에 따라 클라이언트의 로컬 컴퓨터에 전송.
- PHP : PHP언어로 작성된 프로그램을 PHP 해석기가 HTML로 변환하여 Apache가 클라이언트로 보낸다. 클라이언트 측 사용자는 해석된 HTML 파일(웹 페이지)을 웹 브라우저로 볼 수 있음.
- MySQL : DBMS(DataBase Management System, 데이터베이스 관리 시스템)의 하나이다. MySQL 데이터베이스는 웹용 데이터를 저장, 검색, 수정, 삭제하는 역할 수행.
데이터
데이터 기본 용어
- data : 현실 세계에서 관측하거나 수집한 사실이나 값
- information : 데이터를 의미있게 가공한 결과물
- information processing : 데이터에서 정보를 추출하는 과정 또는 방법
- information system : 데이터를 저장, 처리, 배포하기 위한 시스템
데이터 종류
데이터는 형태에 따라 다음과 같이 분류된다.
정형 데이터(structured data)
: 미리 정해진 구조에 저장된 데이터 ex)엑셀, 관계 DB반정형 데이터(semi-structured data)
: 내용안에 구조를 설명 ex)HTML, XML, JSON- 내용과 함께 설명된 데이터 구조를 schema 또는 metadata라고 한다.
비정형 데이터(unstructured data)
: 정해진 구조가 없음 ex)텍스트, 영상, 이미지, 음성
데이터는 특성에 따라 다음과 같이 분류된다.
범주형 데이터(categorical data)
: 종류를 나타내는 데이터- 명목형 데이터(nominal data) : 서열이 없음 ex)혈액형, 학과명, 거주 지역
- 순서형 데이터(ordinal data) : 서열이 있음, 산술연산 불가 eX)학년
수치형 데이터(numerical data)
: 산술연산 가능한 데이터- 이산형 데이터(discrete data) : 정수형 ex)고객 수, 판매량
- 연속형 데이터(continuous data) : 실수형 ex)키, 몸무게
데이터를 정성적 데이터(qualitative data)와 정량적 데이터(quantitative data)로 분류할 수 있다.
정성적 데이터
: 좁은 의미로 범주형 데이터 넓은 의미로 비정형 데이터로 볼 수 있다.정량적 데이터
: 좁은 의미로 수치형 데이터 넓은 의미로 정형 데이터로 볼 수 있다.
데이터베이스(DB)
DB 정의와 특징
DB란 다음 데이터의 집합이라 정의할 수 있다.
- 공유데이터(shared data) : 여러 사용자가 함께 소유하고 이용
- 통합데이터(integrated data) : 중복을 최소화하고 통제가능한 중복만 허용하는 데이터
- 저장데이터(stored data) : 컴퓨터가 접근 가능한 매체 저장해야함
- 운영데이터(operational data) : 조직을 운영하기위해 지속적으로 유지해야됨
DB의 특징으로 4가지가 있다.
- 실시간 접근(real-time accessibility) : 대게 몇초 안에 데이터를 제공해야함
- 계속 변화(continue evolution) : 데이터가 계속 삽입, 삭제, 수정됨
- 동시 공유(concurrent sharing) : 서로 다른 데이터 뿐만 아니라 같은 데이터도 동시 사용 가능
- 내용으로 참조(content reference) : 내용, 즉 값으로 참조 가능 ex)재고량이 100이상인 제품 이름
3단계 데이터베이스 구조(3-level database architecture)
스키마(schema)
란 데이터 구조와 제약조건을 정의한 것이다.(e.g. name char(20) not null
) 그리고 스키마에 따라 DB에 저장되는 값이 인스턴스
이다. DB를 쉽게 이해할 수 있도록 미국 표준화 기관에서 3단계 데이터베이스 구조
(3-level database architecture)를 제안했다. 3단계 데이터베이스 구조를 표현하자면 최상위 외부단계 안에 다수의 외부스키마들이 하위 개념단계 안에 하나의 개념스키마에 연결되어 있고, 개념스키마는 하위 내부단계 안에 내부스키마와 연결되고, 내부 스키마는 물리적인 데이터베이스에 연결되어있는 구조이다.
- 외부단계(external level) : 개별 사용자 관점으로 개별 사용자가 필요한 DB를 외부 스키마로 정의, 외부 스키마는 여러개 존재
- 개념단계(conceptual level) : 조직 전체의 관점으로 전체 DB의 논리적 구조를 개념 스키마로 정의, 개념 스키마는 하나만 존재하며 제약 조건, 보안 정책, 접근 권한을 설정
- 내부단계(internal level) : 저장 장치의 관점으로 실제 어떻게 저장되는지 내부 스키마로 정의, 내부 스키마는 하나만 존재하며 DB를 파일로 저장하기 위해 레코드 구조, 필드 크기 등을 정의
이 방법을 통해 논리적 구조와 물리적 구조를 분리해 데이터 독립성을 보장하여 하위 스키마의 변경에 영향을 받지 않게 한다. 스키마 간의 대응관계를 사상 또는 매핑(mapping)이라하는데 다음은 두 사상(매핑)의 특징이다.
외부/개념 사상(매핑)
:논리적 데이터 독립성
을 보장하며응용 인터페이스
라고 불린다.개념/내부 사상(매핑)
:물리적 데이터 독립성
을 보장하며저장 인터페이스
라고 불린다.
DB에 data에 접근하기 위해선 어디에 저장되었는지 알아야한다. data about data라 하여 meta data라고 불린다. DB는 데이터사전(Data Dictionary) 또는 System Catalog라는 곳에 이 데이터를 저장한다. 데이터 사전도 DB의 일종으로 System DB라고 불리고, 일반 데이터베이스를 User DB라고 한다. 데이터 사전에는 데이터의 실제 위치 정보를 데이터 디렉토리라는 곳에 담아두는데, DBMS는 데이터 사전과 데이터 디렉토리 모두를 사용할 수 있는 반면, 일반 사용자는 데이터 사전에서 검색만 가능하다. 데이터 사전에는 3가지 스키마에 대한 정보, 사상 정보도 저장된다.
데이터베이스 관리 시스템(DBMS)
DBMS 등장 이전
과거에는 파일 시스템
을 이용해 데이터를 관리했다. 파일 시스템은 응용 프로그램이 사용하는 데이터를 파일로 관리한다. 파일 시스템은 운영체제와 함께 설치되기 때문에 구매 비용이 들지 않는다는 장점이 있지만, 다음과 같은 단점이 있다.
- 같은 내용의 데이터가 여러 파일에 중복 저장된다.
- 응용 프로그램이 데이터 파일에 종속적이다.
- 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
- 응용 프로그램을 개발하기 쉽지 않다.
DBMS란
데이터베이스관리시스템(DBMS)
이란 사용자의 명령을 받아 DB를 조작하는 소프트웨어이다. DBMS의 주기능은 크게 세가지로 나눌 수 있는데, 정의기능(DB의 구조를 정의하거나 수정), 조작기능(데이터를 삽입,삭제,수정), 제어기능(데이터를 정확하고 안전하게 유지)이다. DBMS는 파일 시스템에 비교해 다음과 같은 장점을 가진다.
- 데이터 중복 통제 - 별도의 파일이 아닌 통합된 DB에 저장
- 데이터 독립성 확보 - DB 구조의 변경이 응용 프로그램에 영향을 끼치지 않음
- 데이터 동시 공유 - 여러 응용 프로그램이 동시 공유 가능
- 데이터 보안 향상 - 권한이 없는 사용자의 접근 차단, 허용되지 않는 데이터와 연산 차단
- 데이터 무결성 유지 - 데이터의 연산마다 유효성을 검사하여 데이터의 무결성(정확성) 유지
- 표준화 - 응용 프로그램은 표준화된 방법으로 DB 접근 가능
- 장애 발생 시 회복 - 장애가 발생 이전 상태로 복구 가능
- 적은 응용 프로그램 개발 비용 - 데이터 관리를 DBMS가 대신 관리
그러나 데이터베이스 관리 시스템은 다음과 같은 단점이 있다.
- DBMS을 설치하고 유지하는데 비용이 많이 든다
- 백업과 회복 방법이 기술적으로 복잡하다
- 중앙 집중 관리로 인한 취약점이 존재한다
DBMS 구성
DBMS는 크게 2가지로 나눌 수 있다.
질의 처리기(Query Processor)
: 사용자의 명령을 해석- DDL 컴파일러 : 데이터 정의어로 작성된 스키마를 해석하여 저장 데이터 관리자에게 전달, 데이터 사전 수정
- DML 프리컴파일러 : 데이터 조작어를 추출하여 DML 컴파일러에 전달
- DML 컴파일러 : 데이터 조작어를 해석하여 런타임 데이터베이스 처리기에게 전달
- 런타임 데이터베이스 처리기 : 명령을 저장 데이터 관리자에게 전달
- 트랜잭션 관리자 : 사용자 접근권한 확인, 데이터 제약조건 검사, 병행 제어, 회복
저장 데이터 관리자(Stored Data Manager)
: 사용자 DB와 데이터 사전을 관리하고 접근
DBMS 발전과정
- (1세대)
네트워크 DBMS
: 노드와 간선으로 이루어진 그래프 형태로 구조가 복잡하고 변경하기 어렵다. - (1세대)
계층 DBMS
: 트리 형태로 네트워크 DBMS와 같이 구조가 복잡하고 변경하기 어렵다. - (2세대)
관계 DBMS
: 테이블 형태로 구성된 이해하기 쉬운 구조로 지금도 널리 사용되고 있다. - (3세대)
객체지향 DBMS
: 객체라는 개념을 이용한다. - (3세대)
객체관계 DBMS
: 객체지향 DBMS와 관계 DBMS를 통합한 것이다. 2세대 DBMS보다는 사용률이 떨어지지만 점점 늘고 있다. - (4세대 이후)
NoSQL DBMS
: 클라우드 컴퓨팅, 빅데이터가 등장하면서 대량의 비정형 데이터를 처리하기 위해 개발되었다. 관계 DBMS의 장점인 안정성과 일관성을 포기하고 확장성과 성능을 택했다. - (4세대 이후)
newSQL DBMS
: NoSQL 이후 정형 및 비정형 데이터를 안정성과 일관성 있게 처리하기 위해 만들어졌다. NoSQL의 장점인 확장성과 유연성을 모두 지원한다.
데이터베이스 시스템(DBS)
DBS란
데이터베이스 시스템(DBS)
이란 DBMS와 DB를 아우르는 개념으로 DB에 데이터를 저장, 관리하고 필요한 정보를 생성해주는 시스템이다. DBS의 구성요소는 DB, DBMS, DB 사용자, 데이터 언어, 컴퓨터이다. DBS를 사용하는 전체적인 과정은 DB 사용자가 DBMS에게 데이터 언어를 사용해 명령을 내리고 DBMS는 데이터 언어를 해석해 DB에서 필요한 정보를 생성하여 사용자에게 명령의 결과를 알려주는 것이다.
DB 사용자
DB를 사용하는 사람들을 다음 세가지로 분류할 수 있다.
- DB 관리자(DBA; DataBase Administrator) : DB를 설계,구축,운영,관리하는 역할을 한다. 주로 데이터 정의어와 제어어를 사용한다.
- 최종 사용자(end user) : 데이터를 조작(삽입,삭제,수정,검색)하기 위해 DB를 사용하는 사람이다. 최종 사용자는 데이터 조작어를 사용하는 캐주얼 사용자와 GUI를 사용하는 초보 사용자로 나뉜다. 주로 데이터 조작어를 사용한다.
- 응용 프로그래머(Application Programmer) : 데이터 조작어를 사용해 응용 프로그램을 만든다.
데이터 언어(Data Lenguage)
데이터 언어
는 DBMS에 DB를 조작하는 명령을 내릴 때 사용하는 언어이다.
- 데이터 정의어(DDL) : 스키마를 정의(create), 수정(alter), 삭제(drop)
- 데이터 조작어(DML) : 데이터의 삽입·삭제(delete)·수정·검색 등의 처리 ex) select, update, delete
- 데이터 제어어(DCL) : 내부적으로 필요한 규칙이나 기법을 정의하여 무결성, 보안, 회복, 동시성을 보장한다.
데이터 모델링
데이터 모델링과 데이터 모델
데이터 모델링
: 현실 세계의 데이터를 DB로 옮기는 과정- 개념적 데이터 모델링 : 현실세계의 데이터를 추상화(단순화하여 필요한 데이터를 추출)하여 개념 세계로 표현
- 논리적 데이터 모델링 : 개념 세계의 데이터를 DB에 저장할 구조로 표현
데이터 모델
: 데이터 모델링을 표현하는 도구- 개념적 데이터 모델 : 개념적 구조를 표현
e.g.
개체-관계 모델 - 논리적 데이터 모델 : 논리적 구조를 표현
e.g.
관계 데이터 모델, 계층 데이터 모델 , 네트워크 데이터 모델
- 개념적 데이터 모델 : 개념적 구조를 표현
데이터 모델 구성
데이터 구조(data structure)
:연산(operation)
:제약조건(constraint)
:
데이터 모델의 종류
- 개념적 데이터 모델 :
개체-관계 모델
- 논리적 데이터 모델
관계 데이터 모델
계층 데이터 모델
: 트리 구조로 표현된다. 부모 자식 노드가 1:n관계이며 순환이 없다.네트워크 데이터 모델
:
개체-관계 모델(E-R Diagram)
개체-관계 모델(E-R Model)
이란 개체(entity)와 개체 간의 관계(relationship)를 이용한 개념적 데이터 모델이다. 그리고 개체-관계 다이어그램(E-R 다이어그램)
이란 E-R model을 그림으로 표현한 것이다. 다음은 E-R 모델에서 사용되는 용어이다.
- 개체 : 사람이나 사물같은 하나의 단위로 사각형으로 표시된다.
- 관계 : 개체와 개체가 맺고 있는 연관성으로 마름모로 표시된다.
- 속성 : 개체나 관계가 가지는 특성으로 타원으로 표시되며 개체와 선으로 연결된다.
- 개체 타입 : 개체를 고유한 이름과 속성들로 정의한 것( 개체_이름(속성1,속성2, … ,속성n) )
- 개체 인스턴스 : 속성에 실제값이 들어가 실체화된 개체( <속성1,속성2, … ,속성n> )
- 개체 집합 : 개체 인스턴스들의 집합
속성은 다음곽 같은 종류가 있다.
- 단일 값 속성 : 값을 하나만 가짐
e.g.
고객 이름 - 다중 값 속성 : 값을 여러개 가짐, 이중 타원으로 표시
e.g.
연락처 - 단순 속성 : 의미를 더는 분해할 수 없음
e.g.
물건의가격 - 복합 속성 : 의미를 분해할 수 있음, 분해되는 속성들과 연결하여 표시
e.g.
생년월일-연,월,일 - 유도 속성 : 다른 속성으로 계산되는 속성, 점선 타원으로 표시
e.g.
판매가격 = 가격*할인율 - 널 속성 : null 값(결정되지 않았거나 모르는 값)이 허용되는 속성
- 키 속성 : 각 개체 인스턴스를 식별하는 속성, 유일성을 가짐, 이름에 밑줄로 표시
e,g,
id
관계는 다음과 같은 종류가 있다.
- 관계를 맺는 개체의 개수 기준
- 이항 관계 : 2 개체가 맺는 관계
- 삼항 관계 : 3 개체가 맺는 관계
- 순환 관계 : 개체가 자기 자신과 맺는 관계
- 매핑 카디널리티(관계를 맺는 상대 개체의 인스턴스 개수) 기준
- 일대일(1:1) 관계 : 선위에 1,1을 표시
- 일대다(1:n) 관계 : 선위에 1,n을 표시
- 다대다(n:m) 관계 : 선위에 n,m을 표시
관계는 다음과 같은 특성을 갖는다.
- 관계의 참여 특성
- 필수적 참여(전체 참여) : 모든 개체 인스턴스가 관계에 반드시 참여, 개체와 연결된 이중선으로 표시
- 선택적 참여(부분 참여) : 모든 개체 인스턴스가 관계에 참여할 필요 없음, 개체와 연결된 단일선으로 표시
- 관계의 종속성
- 약한 개체 : 강한 개체의 존재 여부에 의존적인 개체로 강한 개체와의 관계에 필수적 참여를 하며 강한 개체의 키를 포함하는 키를 사용한다. 약한 개체는 이중 사각형으로 표시하고 강한 개체와 맺는 관계를 이중 마름모로 표시한다.
- 강한 개체 : 약한 개체의 존재 여부를 결정하는 개체로 일반적으로 약한개체와 일대다 관계를 맺는다.
관계 데이터 모델
관계 데이터 모델의 개념
관계 데이터 모델
은 개체를 릴레이션
이라는 테이블
로 표현하는 논리적 데이터 모델이다.
릴레이션(relation)
: 하나의 개체를 저장하는 2차원 테이블(파일 시스템의 파일에 대응)속성(attribute)
: 릴레이션의 열(세로) (파일 시스템의 필드에 대응)투플(tuple)
: 릴레이션의 행(가로), 즉 개체의 인스턴스(파일 시스템의 레코드에 대응)도메인(domain)
: 하나의 속성이 가질 수 있는 모든 값의 집합, 데이터 타입으로 정의되어 데이터의 적합성을 판단널 값(null)
: 결정되지 않았거나 모르는 값차수(degree)
: 속성의 전체 개수카디널리티(cardinality)
: 투플의 전체 개수릴레이션 스키마
: 릴레이션의 논리적 구조 - 릴레이션이름(속성이름1, 속성이름2, … , 속성이름n)릴레이션 인스턴스
: 어느 한 시점에 모든 투플들의 집합데이터베이스 스키마
: 모든 릴레이션의 스키마 집합데이터베이스 인스턴스
: 모든 릴레이션의 인스턴스 집합
릴레이션의 4가지 특성
- 투플의 유일성 : 모든 투플은 다른 투플과 구별되는 유일한 특성이 있어야함
- 투플의 무순서 : 투플 사이의 순서는 무의미
- 속성의 무순서 : 속성 사이의 순서는 무의미
- 속성의 원자성 : 속성은 다중값을 가질 수 없다
투플을 유일하게 구분하기 위해 key
를 사용한다. 키는 유일성과 최소성을 만족해야 한다. 키의 종류는 다음과 같다.
super key(슈퍼키)
: 유일성을 만족하는 속성 또는 속성들의 집합candidate key(후보키)
: 유일성과 최소성을 만족하는 속성 또는 속성들의 집합primary key(기본키)
: 후보키 중에서 기본적으로 사용할 키- 널 값을 가질 수 있는 키는 후보키는 기본키로 부적절
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적절
- 단순한 후보키를 기본키로 설정
alternate key(대체키)
: 기본키로 선택받지 못한 후보키foreign key(외래키)
: 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 (중요)
관계 데이터모델 제약조건
관계 데이터 모델의 기본 제약 사항은 키와 관련한 무결성 제약조건이다. 무결성은 데이터에 결함이 없는 상태이다.
개체 무결성 제약조건
: 기본키를 구성하는 모든 속성은 널값을 가질 수 없다.참조 무결성 제약조건
: 외래키는 참조할 수 없는 값을 가질 수 없다.
관계 데이터 연산(중간고사 범위)
관계 데이터 연산이란 데이터 모델의 구성요소 중 연산에 대해 관계 데이터 모델의 연산을 관계 데이터 연산
이라한다.
관계 대수
: 절차언어, 폐쇄특성(연산의 결과는 릴레이션)- 일반 집합 연산자 : 두 릴레이션의 (1)차수가 같고 대응되는 (2)속성의 도메인이 같아야 한다.
- 합집합(R⋂S) : 두 릴레이션 합집합
- 교집합(R⋃S) : 두 릴레이션 교집합
- 차집합(R-S) : R과 S중 R에만 있는 투플 집합 반환
- 카티션 프로덕트(R⨉S) : R과 S의 각 투플을 모두 연결한 투플 집합 반환
- 순수 관계 연산자 :
- 셀렉트(σ조건식(R)) : R에서 조건식(>,<,≥,≤,=,≠,⋁,⋀,¬)을 만족하는 투플들을 반환한다. 데이터 언어로는 릴레이션 where 조건으로 표현된다.
- 프로젝트(π속성리스트(R)) : R에서 주어진 속성들의 값으로만 구성된 투플들을 반환한다. 데이터 언어로는 릴레이션[속성1,속성2,…]으로 표현된다.
- 조인(R⨝S) : 조인 속성(공통 속성)을 이용해 릴레이션 R,S의 투플들을 연결한 투플들을 반환
- 세타조인 : 조인 속성이 (AθB)를 만족하는 투플들을 반환(θ는 >,<,≥,≤,=,≠)
- 동등조인 : 세타 조인에서 등호를 사용한 조인
- 자연조인 : 동등조인에서 중복된 조인 속성을 제거
- 세미조인 : S를 조인속성으로 프로젝트 연산 후 R에 자연조인한 것
- 외부조인 : 자연조인 연산에서 제외되는 투플도 포함하며 나머지 속성값은 null로 처리
- left 외부조인 : R에서 제외되는 투플도 포함
- right 외부조인 : S에서 제외되는 투플도 포함
- 완전 외부조인 : R,S 모두에서 제외되는 투플도 포함
- 디비전(R÷S) : S의 모든 속성을 갖는 R의 투플에서 S의 속성을 제외한 투플들을 반환
- 일반 집합 연산자 : 두 릴레이션의 (1)차수가 같고 대응되는 (2)속성의 도메인이 같아야 한다.
관계 해석
: 원하는 데이터가 무엇인지만 기술하는 언어이다. 수학의 predicate calculus에 기반을 두고 있다. 기능과 표현력 측면에서 관계 대수와 동등한 능력을 지닌다.- 도메인 관계 해석
- 투플 관계 해석
7.데이터베이스 언어 SQL
데이터 언어
는 DB를 조작하는 명령을 내릴 때 사용하는 언어이다. SQL
은 관계 DB를 위한 표준 질의어로 사용되는 데이터 언어이다. SQL은 비절차wjr 언어이며, 대화식이나 삽입 방식으로 사용할 수 있다. SQL 명령어의 종류는 다음과 같다.
데이터 정의어(DDL)
: 테이블을 처리하는 기능 CREATE TABLE(생성), ALTER TABLE(변경), DROP TABLE(삭제), CREATE VIEW, DROP VIEW데이터 조작어(DML)
: 테이블에 저장된 데이터를 처리하는 기능SELECT, INSERT(삽입), UPDATE(), DELETE- 절차적 데이터 조작어
- 비절차적 데이터 조작어
데이터 제어어(DCL)
: 내부적으로 필요한 규칙이나 기법을 정의하여-
삽입 SQL
- 데이터 정의어(DDL) : 테이블을 생성(
create table
), 변경(alter table
), 삭제(drop table
) - 데이터 조작어(DML) : 데이터의 삽입·삭제(delete)·수정·검색 등의 처리 ex) select, update, delete
- 절차적 - :
- 데이터 제어어(DCL) :
데이터 타입 | 의미 |
---|---|
INT 또는 INTEGER |
정수 |
SMALLINT |
INT보다 작은 정수 |
CHAR(n) 또는 CHARACTER(n) |
길이가 n인 고정길이의 문자열 |
VARCHAR(n) 또는 CHARACTER VARYING(n) |
길이가 최대 n인 가변길이의 문자열 |
NUMERIC(p,s) 또는 DECIMAL(p,s) |
숫자의 전체 길이가 p, 소수부분이 s인 고정 소수점 실수 |
FLOAT(n) |
길이가 n인 부동 소수점 실수 |
REAL |
부동 소수점 실수 |
DATE |
연,월,일로 표현되는 날짜 |
TIME |
시,분,초로 표현되는 시간 |
DATETIME |
날짜와 시간 |
create table
다음은 테이블을 생성하고 데이터를 조작하는 SQL언어이다. SQL언어는 대소문자를 구분하지 않는다.
--테이블 생성
create table member (
num int not null auto_increment, --자동 증가
id char(20) not null,
name char(20) not null,
gender char(1),
post_num char(8),
address char(80),
tel char(20),
age int,
primary key(num) --기본키
);
--테이블에 데이터 삽입(num은 자동증가하는 primary key이므로 삽입안해도됨)
insert into member (id, name, gender, post_num, address, tel, age) values ('yjhwang', '황영주', 'M', '100-011', '서울시 중구 충무로1가', '234-8879', 35);
--테이블에 저장된 데이터 검색
select * from member;
select name,tel from member;
--해당 조건의 데이터 검색
select id, name, address, gender from member where gender='W';
select name, tel, gender, age from member where age>=50 and gender='M';
select name, tel, age, gender from member where ( (age>=30 and age<=39) or (age>=50 and age<=59) ) and gender='M';
--성이 황씨인 사람 검색 / 주소에 서울시가 들어가는 사람 검색
select * from member where name like '황%';
select * from member where address like '%서울시%';
--나이로 오름차순/내림차순 정렬
select * from member where address like '서울%' order by age;
select * from member where address like '서울%' order by age desc;
--테이블 데이터 수정
update member set tel='123-4567' where name='고재진';
--테이블에 데이터 삭제
delete from member where name='김수련';
--테이블 삭제(delete from table;)과는 다르게 구조까지 완전삭제 한다는것
drop table member;
8.데이터베이스 설계
9.정규화
정규화 - 이상현상이 발생하지 함수적 종속성을 이용해 릴레이션을 연관성 있는 속성들로만 구성되도록 분해
이상현상
- 삽입 이상 : 사입하기 위해선 불필요한 데이터도 함께 삽입해야함
- 갱신 이상 : 일부만 변경하여 데이터 불일치
- 삭제 이상 : 필요한 데이터까지 삭제
함수 종속
- 완전 함수 종속(FFD)
- 부분함수 종속(PFD)
- 이행적 함수 종속
- X→Y :
- 함수 종속 다이어그램 :
- 와전
기본 정규형, 고급정규형
- 제1정규형 : 원자값을 갖도록 / but 부분함수종속 발생
- 2 : 부분함수종속 / but 이행적 함수종속 발생
- 3 : 이행적 함수 종속 삭제 / but
- 보이스-코드 정규형 : 후보키가 아닌 결정자 제거