[포스코x코딩온] 웹개발자 풀스택 과정 5주차 | 데이터베이스

구준희·2023년 8월 5일
0

[포스코x코딩온]교육

목록 보기
16/40
post-thumbnail
post-custom-banner

데이터베이스

데이터베이스

  • 데이터베이스란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임(데이터를 모아둔 창고)
  • 데이터를 저장하는 구조/자료의 모음
  • 데이터의 집합소
  • 중복이 없어야 한다.

파일 시스템(File System)

  • 운영체제의 한 부분으로 데이터나 프로그램을 디스크에 쓰고 읽을 수 있게 해주는 프로그램
  • DBMS라는 것이 나오기 전에는 운영체제에서 제공하는 파일 시스템만 사용했었다.
  • 파일시스템의 단점
    • 데이터 중복
    • 데이터 불일치

데이터베이스 관리 시스템 : DBMS(DataBase Management System)

  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 도와주는 소프트웨어를 의미
  • DBMS가 없었을 때는 파일시스템을 이용해서 데이터를 관리했었다.
  • 파일 시스템이 가진 문제를 해결하기 위해 만들어진 것
  • 데이터베이스에 접근하고 이를 관리하기 위해 존재

관계형 데이터베이스 : RDBMS(Relative Database Management System)

  • 데이터베이스를 운용하고 관리하는 프로그램
  • 특정 데이터들을 관리하고 사용하기 위한 목적
  • 장점
    • 정해진 스키마에 따라서 데이터를 저장하기 때문에 명확한 데이터 구조를 보장한다.
    • 데이터의 분류, 정렬, 탐색의 속도가 빠르다.
    • SQL을 사용하여 데이터를 다룰 수 있다.

데이터베이스 용어

  • key : 데이터베이스에서 튜플을 찾거나 순서대로 정렬할 떄 구분하고 정렬의 기준이 되는 속성
  • 기본키(PK, Primary key)
    • 메인 키로 한 테이블에서 특정 튜플(행)을 유일하게 구별할 수 있는 속성
    • Null 값 불가, 중복값 불가
  • 외래키(`FK, Foreign Key')
  • 어떤 테이블의 기본키를 참조하는 속성

기본키(Primary Key)

  • primary Key
    • 아이디는 튜플(tuple)을 구별할 수 있는 유일한 식별자
    • Null 값 불가, 이 예제의 PK인 아이디끼리는 중복이 존재하면 안됨
    • PRIMARY KEY는 테이블당 오직 하나의 필드에만 설정 가능

Null 이란?

  • 공백, 숫자 0과는 다르다.
  • 현재는 정의되지 않은 미지의 값
  • 현재 데이터를 입력하지 못하는 경우를 의미하기도 함

외래키(Foreign Key)

  • 어떤 테이블의 기본키 참조
  • 속성 이름은 달라도 되는데 그 안의 값은 동일해야 한다.

SQL 문

  • SQL(Structured Query Language)
  • 구조적 질의 언어
  • 데이터 베이스를 제어하고 관리할 수 있는 목적의 프로그래밍 언어
  • 데이터 정의어 : DDL(Data Definition Language)
  • 데이터 제어어 : DCL(Data Control Language)

DDL

  • 데이터 조작어 : DDL(Data Manipulation Language)

  • 데이터베이스 or 테이블을 정의하는 언어

    종류역할
    CREATE데이터베이스, 테이블 등을 생성하는 역할을 한다.
    ALTER테이블을 수정하는 역할을 한다.
    DROP데이터베이스, 테이블을 삭제하는 역할을 한다.
    TRUNCATE테이블을 초기화 시키는 역할을 한다.
  • CREATE

    • 데이터베이스 만들기 + 한글 인코딩
      CREATE DATABASE 이름 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    • 테이블 만들기
    CREATE TABLE 테이블명(
    	필드1 값형식,
        필드2 값형식
    );
  • 문자형 데이터 형식

    CHAR(n)고정 길이 데이터 타입(최대 255byte) - 지정된 길이보다 짧은 데이터 입력될 시 나머지 공간 공백으로 채워진다.
    VARCHAR(n)가변 길이 데이터 타입(최대 65535byte) - 지정된 길이보다 짧은 데이터 입력될시 나머지 공간은 채우지 않는다.
    TINYTEXT(n)문자열 데이터 타입(255byte)
    TEXT(n)
    MEDIUMTEXT(n)문자열 데이터 타입(16777215byte)
    LONGTEXT(n)문자열 데이터 타입(4294967295byte)
  • 숫자형 데이터 형식

    TINYINT(n)정수형 데이터 타입(1byte) -128 ~ +127 또는 0 ~ 255수 표현 가능하다.
    SAMLLINT(n)정수형 데이터 타입(2byte) -32678 ~ 32767 또는 0 ~ 65536수 표현 가능하다.
    MEDIUMINT(n)정수형 데이터 타입(3byte) -8388608 ~ + 8388607 또는 0 ~ 16777215수 표현 가능하다.
    INT(n)정수형 데이터 타입(4byte) -2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현 가능하다.
    BIGINT(n)정수형 데이터 타입(8byte) - 무제한 수 표현 가능하다.
    FLOAT(길이, 소수)부동 소수형 데이터 타입(4byte) - 고정 소수점 사용 형태이다.
    DECIMAL(길이, 소수)고정 소수형 데이터 타입고정(길이+1byte) - 소수점 사용 형태이다.
    DOUBLE(길이, 소수)부동 소수형 데이터 타입(8byte) - DOUBLE 문자열로 저장한다.
  • 날짜형 데이터 형식

    DATE날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte)
    TIME시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte)
    DATETIME날짜와 시간 형태의 기간 표현 데이터 타입(8byte)
    TIMESTAMP날짜와 시간 형태의 기간 표현 데이터 타입(4byte) - 시스템 변경 시 자동으로 그 날짜와 시간이 저장된다.
    YEAR년도 데이터 타입(1byte)

    DDL - CREATE

    CREATE TABLE

  • 테이블을 생성하는 명령어

  • 하나의 컬럼(속성)에 대해 '컬럼명 데이터 타입 제약조건'으로 구성

    CREATE TABLE 테이블명
    (
    	컬럼명 데이터타입 [제약조건],
      ...
    )
    EX)
    CREATE TABLE member(
    	id VARCHAR(10) NOT NULL PRIMARY KEY,
      name VARCHAR(10) NOT NULL,
      birthday DATE NOT NULL
      );
    테이블 생성생성확인
  • CREATE TABLE의 제약조건

    제약조건설명
    PRIMARY KEY1.테이블의 기본 키를 정의
    2.유일하게 테이블의 각 행을 식별
    FOREIGN KEY- 외래 키를 정의
    - 참조 대상을 테이블(컬럼명)으로 명시
    - 열과 참조된 테이블의 열 사이에 외래 키 관계를 적용하고 설정
    UNIQUE-테이블 내에서 얻은 유일한 값을 갖도록 하는 제약
    NOT NULL- 해당 컬럼은 NULL값을 포함하지 않도록 하는 제약 조건
    CHECK- 개발자가 정의하는 제약 조건
    - 참(TRUE)이어야 하는 조건을 지정
    DEFAULT- 데이터를 INSERT할 때 해당 컬럼의 값을 넣지 않는 경우 기본값으로 설정해주는 제약조건

DDL - ALTER

ALTER TABLE

  • 테이블의 특정 컬럼(열)을 삭제하거나 추가, 변경할 때 사용하는 명령어
  • ALTER TABLE 컬럼 추가
    ALTER TABLE 테이블명 ADD 컬럼명 데이터타입[제약조건]
  • ALTER TABLE 컬럼 추가
    ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입[제약조건];
  • ALTER TABLE 컬럼 삭제
    ALTER TABLE 테이블명 DROP 컬럼명;
  • ALTER INDEX
    ALTER [UNIQUE] INDEX 인덱스명 ON 데이블명(컬럼명1, 컬럼명2 ...);

DDL(DROP, TRUNCATE)

DROP TABLE

  • 테이블 삭제하기
  • 테이블을 잘못 만들었거나 더 이상 필요 없는 경우
DROP TABLE 테이블명 [CASCADE|RESTRICT];
  • 테이블을 삭제하는 명령어
  • 옵션에는 CASCADERESTRICT가 있음
  • CASCADERESTRICT의 경우 외래 키(FOREIGN KEY)가 걸려 있을 때 해당

TRUNCATE TABLE

  • 테이블 내의 데이터들을 삭제하는 명령어
  • 테이블 초기화함(테이블의 모든 행(ROW) 일괄삭제)
 TRUNCATE TABLE 테이블명;

DROP VIEW

DROP VIEW 뷰이름;

DROP INDEX

  • 인덱스를 삭제하는 명령어
 DROP INDEX 인덱스명;

SQL 공통

  1. SHOW DATABASES;

DML

  • DML(Data Manipulation Language)

  • 데이터베이스의 내부 데이터를 관리하기 위한 언어

    종류역할
    SELECT데이터베이스에서 데이터를 검색(조회하는 역할을 한다.
    INSERT테이블에 데이터를 추가 하는 역할을 한다.
    UPDATE테이블에서 데이터를 수정 하는 역할을 한다.
    DELETE테이블에서 데이터를 삭제 하는 역할을 한다.

CRUD

  • 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 처리 기능

  • Create(생성)

  • Read(읽기)

  • Update(갱신)

  • Delete(삭제)

    이름   조작   SQL
    Create생성INSERT
    Read읽기SELECT
    Update갱신UPDATE
    Delete삭제DELETE

DML - INSERT

  • 테이블에 데이터를 추가하기 위해 사용

    방법1
    INSERT INTO 테이블명 (필드1, 필드2, 필드3) VALUES (1,2,3);
    방법2
    INSERT INTO 테이블명 VALUES(1,2,3);

DML - SELECT

  • 데이터를 검색(조회)하기 위해 사용
    SELECT * FROM 테이블명;
    SELECT * FROM 테이블명 WHERE 필드1 = 조건값1;
    SELECT * FROM 테이블명 WHERE 필드1 = 조건값1 ORDER BY 필드1 ASC; //오름차순
    SELECT 필드1, 필드2, 필드3 FROM 테이블명 WHERE 필드1 = 조건값1 ORDER BY 필드1 ASC;
    SELECT 필드1, 필드2, 필드3 FROM 테이블명 WHERE 필드1 = 조건값1 ORDER BY 필드1 ASC LIMIT 개수;

WHERE절

1. 비교연산자

연산자의미
=같다
>보다 크다
>=보다 크거나 같다
<보다 작다
<=보다 작거나 같다

2. 부정연산자

연산자의미
!=같지 않다
^=같지 않다
<>같지 않다
NOT 컬럼명=~와 같지않다

3. SQL연산자

연산자의미
BETWEEN a AND ba와 b사이에 있으면 참(a,b 값도 포함)
IN(list)리스트에 있는 값 중에서 어느 하나라도 일치하면 참
LIKE '비교문자열'비교 문자열과 형태가 일치하면 사용(%,_사용)
IS NULLNULL값인 경우 true, 아니면 false

4. 논리연산자

연산자의미
AND앞에 있는 조건과 뒤에 오는 조건이 참(TRUE)가 되면 결과도 참(TRUE)
OR앞에 있는 조건과 뒤에 오는 조건 중 하나라도 참(TRUE)면 결과는 참(TRUE)
NOT뒤에 오는 조건과 반대되는 결과를 돌려준다.

DML

UPDATE

  • UPDATE
    • 데이터를 수정하기 위해 사용
    UPDATE 테이블명 SET 필드1 =1 WHERE 필드2 = 조건2;
  • DELETE
    • 데이터를 삭제하기 위해 사용
    DELETE FROM 테이블명 WHERE 필드1=1;

참고 사이트
1.https://luv-n-interest.tistory.com/555
2.https://velog.io/@sysop/DBMS-%EC%99%80-RDBMS%EC%9D%98-%EA%B0%9C%EB%85%90
3.https://computer-science-student.tistory.com/179

profile
꾸준히합니다.
post-custom-banner

0개의 댓글