데이터베이스
- 다양한 카테고리의 정보를 저장할 수 있는 구조
- 여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
- 데이터를 저장하는 구조/자료 모음
엑셀과 같은 프로그램과 다른이유 : 파일시스템 VS 데이터베이스
- 파일시스템 : 엑셀 : 데이터를 기록하고 여러사람이 공유하여 사용 가능
- 단점
- 데이터 중복이 생길 수 있다.
- 데이터 공유에 있어서 제한이 존재한다.
- 구현과 유지보수에 시간이 오래걸린다.
- EX ) 각 부서에서 관리하는 파일들이 다르면 바뀌는 정보를 서로 모르기에 주기적으로 최신화를 시켜주지 않으면 오류가 생길 수 밖에 없다.
- DBMS : Data Base Management System
- 개발자와 데이터베이스를 연결시켜주는 소프트웨어
- 데이터베이스 사용자가 데이터베이스를 생성, 공유, 관리할 수 있도록 하는 역할
- 파일시스템이 가진 문제를 해결하기 위해 만들어진 것
- 데이터베이스에 접근하고 이를 관리하기 위해 존재한다.
- 관계형 데이터베이스 : R(Relational)DBMS : DBMS에 관계가 추가된 것
- oracle, SQL Server, DB2, MY SQL, PostgreSQL, SQLite
Database 용어
하나의 DBMS안에는 여러개의 Database가 올 수 있고, Database에는 여러개의 Table이 올 수 있다.데이터베이스 구조
- 열 :
Column, Attribute, 속성, 세로
- 행 : Record,
Tuple, 튜플, data한개, 가로
- 테이블 : Table, Relation
- 여러개의 테이블 있을수 있음
- 그 테이블 끼리 관계를 가질수 있다.
key : 데이터베이스에서 튜플을 찾거나 순서대로 정렬할 때 구분하고 정렬의 기준이 되는 속성
- 일반적으로 무언가를 식별하는 역할.
기본키 : PK : Primary Key
- 데이터를 구성하는 속성에서 유일하게 구분이 되면 기본키가 된다.
- 기본키가 가능한 후보가 여러개면, 테이블 특성을 반영해서 하나를 선택.
NULL값 불가! : 데이터가 아예 없는 값 : 0은 null값이 아니다.
중복값 불가!
- 키 값이 변동되면 안된다.
- 최대한 적은 수의 속성을 가진 것이어야 한다.
- 테이블 내 튜플을 식별할 수 있는 고유한 값을 가져야 한다.
외래키 : FK : Foreign Key
- 어떤 테이블의 기본키를 참조하는 속성
- 서로 관계를 맺은 테이블의 연결되는 속성
- 여러개가 있어도 상관 없다.
외래키와 기본키 양쪽 테이블 도메인 ( 속성이 가질 수 있는 값의 집합 )은 서로 같아야 한다.
NULL값, 중복값 허용됨.
데이터베이스 구축 단계
데이터베이스 생성 - 테이블 생성 - 데이터 입력, 수정, 삭제 - 데이터 조회
MySQL
점유율이 상당히 높다.
SQL : Structured Query Language
- 구조적인 쿼리 언어
- 비절차적 언어( 실행 순서가 없음 )
- 데이터 정의어( DDL ), 데이터 조작어( DML ), 데이터 제어어( DCL )
- DDL : table과 관련된 명령어
- CREATE, ALTER, DROP : 테이블이나 관계의 구조를 생성하는데 사용하는 명령어
- DML : 만들어진 table에서 튜플과 관련된 명령어
- SELECT : 데이터를 조회하거나 검색하기 위한 명령어
- INSERT, UPDATE, DELETE : 테이블의 데이터를 변경하는 명령어. 데이터 삽입, 수정, 삭제
- DCL : database에 접근할수 있는 권한과 관련된 명령어
- GRANT, REVOKE : 데이터베이스에 접근하고 데이터 사용 권한을 주거나 회수하는데 사용하는 명령어
윈도우 실행할 때에는
- powershell이나 #cdm이면
mysql -u root -p를 입력해주면 되고
- git bash의 경우
winmpty mysql -u root -p를 입력해주면 접속이 가능하다.
종료 할 때에는 quit만 적어주면 된다.
반드시 세미콜론 - ; 을 붙여주고 ctrl + enter을 눌러줘야 실행이 된다.
데이터 정의어 : DDL
CREATE문
- 데이터베이스와 테이블을 생성, 기본키 외래키 정의
- 데이터베이스 생성 + 한글 인코딩
- CREATE DATABASE 이름 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf_general_ci ;
- 테이블 생성
- CREATE TABLE 테이블명 ( 속성이름1 데이터타입 PRIMARY KEY, 속성이름2 데이터타입, [ FOREIGN KEY 속성이름 REFERENCES 테이블이름 ( 속성이름 ) ] ) ;
데이터 타입 : 숫자형
-
데이터 타입 : 문자형
- CHAR(N), VARCHAR(N) : 간단한 이름정도 : N에는 바이트 제한을 줄 수있는 숫자가 들어간다.
- CHAR(N)는 N에 들어가는 숫자만큼 바이트가 형성이된다.
EX) N에 10들어가면 데이터가 3바이트만 들어와도 총 크기는 10바이트.
- VARCHAR(N)는 N에 적은 숫자만큼 크기가 형성되는 것이 아니고, 들어가 있는 데이터 만큼만 형성이된다.
EX) N에 10들어갔는데 3바이트만 들어오면 총 크기는 3바이트.
- TEXT, MEDIUM TEXT는 좀 큰 데이터를 받을 때 사용한다.
-
데이터 타입 : 날짜형
- DATE : 3바이트 : 날짜저장 ( YYYY-MM-DD 형식 )
- TIME : 3바이트 : 시간저장 ( HH : MM : SS 형식 )
- DATETIME : 8바이트 : 날짜와 시간 저장 ( YYYY-MM-DD HH : MM : SS 형식 )
ALTER문
생성된 테이블의 속성과 속성에 대한 제약 및 기본키, 외래키를 변경
- ALTER TABLE 테이블명 ADD 속성이름 데이터타입; --- 새로운 속성 추가하는 경우
- ALTER TABLE 테이블명 DROP COULMN 속성이름; --- 기존 속성 삭제하는 경우
- ALTER TABLE 테이블명 MODIFY 속성이름 데이터타입; --- 기존 속성 수정하는 경우
DROP문
생성된 TABLE 삭제 : 테이블 구조와 데이터 모두 삭제되므로 주의
데이터 조작어 : DML
DML : Data Mainpulation Language
데이터베이스의 내부데이터를 관리하기 위한 언어
- INSERT : 테이블에 데이터를 추가하는 역할 :
C
- SELECT : 데이터베이스에서 데이터를 조회하는 역할 :
R
- UPDATE : 테이블에서 데이터를 수정하는 역할 :
U
- DELETE : 테이블에서 데이터를 삭제하는 역할 :
D
CRUD : 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 처리기능
INSERT문
- 테이블에 새로운 튜플 추가
- INSERT INTO 테이블명 ( 필드1, 필드2, 필드3,.. ) VALUES ( 값1, 값2, 값3,.. ) ;
- 필드 : 자신이 정해준 속성의 이름
- 필드를 건너뛰고 싶으면 VALUES의 값에 순서대로 입력해주면 된다.
UPDATE문
- 테이블에서 특정 속성 값 수정
- UPDATE 테이블명 SET 필드1 = 값1 WHERE 필드2 = 조건2 ;
- 테이블명 : products이름
- SET : ( 수정 할 ) data 입력
- WHERE : ( 수정 될 ) 특정 data를 찾는 구문
DELETE문
- 테이블의 기존 튜플을 삭제
- DELETE FROM 테이블명 WHERE 필드 1 = 값 1 ;
- 전부 다 삭제 할 것이 아니라면, WHERE에 조건을 적으면 된다.
- DROP vs TRUNCATE
- DROP : 테이블 전체를 삭제
- TRUNCATE : 테이블 초기화 // 테이블의 행 ( row ) 일괄 삭제 : DELETE와 비슷
SELECT문
-
데이터를 검색하는 기본 문장, 질의어 ( query )라고도 함
-
SELECT 속성이름, ... FROM 테이블 이름 [ WHRER 검색조건 ]
- 어떠한 테이블에서 어떠한 속성을 가지고 올 것인지를 정한다.
- WHERE을 안쓰게되면 테이블 전체를 불러온다.
-
WHERE - 여러가지 연산자
=, >, <, >=, <= 등 사용 가능
- 부정 연산자 :
!=, ^=, <> : 같지않다. // NOT 컬럼명= : ~와 같지않다.
-
WHERE - 범위 집합, 패턴, NULL
- BETWEEN a AND b : a 와 b의 값 사이에 있으면 참 ( a와 b값도 포함)
- IN ( list ) : 리스트에 있는 값중에서 어느 하나라도 일치하면 참 : IN ( A, F ) 이면 A와 F를 가지고 있는 것들을 전부 불러온다.
- LIKE ' 비교문자열 ' : 문자열의 패턴을 검사
- 와일드 문자 종류
% : 0개 이상의 어떤 문자 // LIKE "서울%" > 서울, 서울시, 서울특별시 다 됨.
_ : 1개의 단일 문자 // LIKE "서울_" > 서울시 만 됨.
- IS NULL : NULL인 값만 가져옴 NULL이면 true, 아니면 false
- IS NOT NULL 가능 : NULL이 아닌 것만 가져옴
-
WHERE - 복합 조건
- AND : 앞에있는 조건과 뒤에 오는 조건이 참이 되면 결과도 참
- OR : 앞에 있는 조건과 뒤에 오는 조건 중 하나라도 참이면 결과는 참
- NOT : 뒤에 오는 조건과 반대되는 결과를 돌려줌
-
ORDER BY
- 결과가 출력되는 순서 조절
- WHERE 절 뒤에나와야 함
- ASC : ASCENDING, 오름차순 ( 기본값 )
- DESC : DESCENDING, 내림차순
- SELECT 속성이름,... FROM 테이블이름 [ WHERE 검색조건] [
ORDER BY 속성이름 ASC or DESC ]
-
DISTINCT
- 중복된 데이터 제거
- SELECT [
DISTINCT ] 속성이름,... FROM 테이블이름 [ WHERE 검색조건 ] ORDER BY 속성이름 ]
-
LIMIT
- 출력 개수 제한
- SELECT [ DISTINCT ] 속성이름,... FROM 테이블이름 [ WHERE 검색조건 ][ ORDER BY 속성이름 ] [
LIMIT 개수 ]