데이터베이스와 MySQL

타다닥·2024년 1월 14일
0
post-thumbnail

Database

  • 간단히 데이터를 저장하는 구조, 자료의 모음이다.
  • 데이터는 여러 사람들에게 공유되고 사용된다. 이것들을 한 번에 모아서 관리할 수 있는 공간이다.

☑️ 그냥 파일에 저장해도 되는데 왜 사용할까?

  • 파일 시스템의 특징 ( 엑셀 파일을 생각해보자.)
    • 데이터 중복이 생길 수 있다. 파악에 어려움이 있을 수 있고 저장공간이 낭비된다.
    • 공유하는데에 제한이 있다. 내 컴퓨터에 저장하면 다른 사람은 이용 못한다. 일일이 파일을 따로 공유해줘야 한다.
    • 구현과 유지 보수에 시간이 오래 걸린다.
  • 그래서 등장한 것이 DBMS 이다!

DBMS

  • DataBase Management System의 약자이다.
  • 데이터베이스에 접근하여 관리할 수 있다. 사용자와 데이터베이스를 연결시켜준다.
    • 데이터베이스를 생성, 공유, 관리 할 수 있도록 해준다.
  • 그리고 여기서 관계가 추가 된 관계형 데이터베이스를 RDBMS (Relational DBMS)라고 한다.
    • 프로그램으로는 Oracle, SQL Server, DB2, MySQL, PostgreSQL, SQLite 가 있다.
    • DBMS에서의 문법을 sql이라고 한다. 문법은 프로그램마다 조금씩 차이가 있다.

Database 용어

▶️ 데이터베이스 구조

  • 테이블 [ Table, Relation ]
  • 열 [ Attribute, 속성, column][ 차수(degree) = 속성의 수 ]
  • 행 [ Record, Tuple, 튜플, row ][ 카디널리티(cardinality) = 튜플의 수 ]
  • 도메인 (domain) : 속성이 가지는 값의 집합.
    • 위의 예시에서 ‘이름’의 도메인은 ‘루피’, ‘가오나시’, ‘하울’ 이 된다.

▶️ 키 (Key)

  • 데이터베이스에서 튜플을 찾거나 순서대로 정렬 할 때 기준이 되는 속성을 의미한다.
  • 무언가를 식별하기 위해 사용된다. 테이블 간 관계를 맺는데에도 사용한다. ( Key를 통해 연결, 활용하는 것)
  • 기본키, 외래키에 대해 알아보자.
  • 기본키 (Primary Key, PK)
    • 한 테이블에서 특정한 튜플을 유일하게 구별할 수 있게 해주는 속성
    • null값 불가, 중복된 값 불가
  • 외래키 (FK, Foreign Key)
    • 어떤 테이블의 기본키를 참조하는 속성. 다른 테이블에서 하나의 key로 활용하는 것으로 생각.

▶️ 기본키 (Primary Key, PK)

  • 테이블을 대표하는 속성으로 단 하나만 와야 한다.
    • 기본키가 가능한 속성이 여러개여도, 테이블의 특성을 고려하여 하나만 선택한다.
    • 테이블마다 하나씩 있어야 좋다. 테이블 당 오직 하나의 필드에만 설정이 가능하다.
  • 기본키 선정 시 고려 사항
    • 튜플을 식별할 수 있는 고유한 값이어야 한다.
    • null값(값이 없는 상태)이 아니어야 한다. 중복이 존재해서는 안된다.
    • 키 값의 변동이 생겨서는 안된다.

▶️ 외래키 (Foreign Key, FK)

  • 다른 테이블의 기본키를 참조해서 사용하는 속성이다.
    • 참조를 하고(외래키) 참조가 되는(기본키)의 각 테이블의 도메인은 서로 같아야 한다.
    • 참조가 되는(기본키)의 값이 변경되면 참조를 하는(외래키)도 값이 변경된다.
    • null값과 중복값이 허용된다.
    • 본인 릴레이션의 기본키를 참조해서 외래키로 사용도 가능하다.

▶️ 기본키와 외래키의 간단한 사용 예시

[ 고객 테이블 ]

고객번호(PK)이름주소성별
1홍길동서울 구로구
2성춘향경기 광명시

[ 주문 테이블 ]

주문번호(PK)고객번호(EK)상품명
12머리끈
21음료수
  • [주문 테이블]에 ‘속성:이름’은 오지 않아도 된다. [고객 테이블]의 ‘고객번호’를 외래키로 참조하고 있다. 이를 통해 ‘이름’의 구분이 가능하게 되기 때문.
  • [주문 테이블], [고객 테이블]에 각각 ‘이름’속성이 오게 되면 일일이 수정해줘야 하며 나중에 값이 달라질 수 있다.
  • 이렇게 Primary Key를 통해 관계를 잘 맺어준다면 아래와 같이 원하는 값을 가져올 수 도 있다.
고객번호이름상품명
2성춘향머리끈

MySQL 설치와 실행

MySQL ?

  • 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템 (RDBMS).
  • 오픈 소스이다.
  • 윈도우, Mac, 리눅스 등 다양한 운영체제에서 사용 가능하다.

다운로드

  • Windows

    • 해당 링크에서 다운로드를 하자. https://dev.mysql.com/downloads/installer/

    • 최신 버전 ( 마지막 자리가 0)은 아직 안정화가 되지 않았을 수 있다. 그 전 버전으로 다운로드 하자!


MySQL 실행

  • sql 명령어들은 mySQL에 접속했을 때 실행 가능하다!
  • 명령어 입력 후 ; 꼭 입력해야 한다!

▶️ 터미널 실행

  • 로컬 (Windows)
#-----mySQL이 설치된 경로로 이동한다. 경로에 공백이 있다면 따옴표로 감싸준다.
cd "c:\Program Files\MySQL\MySQL Server 8.0.34\bin"

#-----사용자명 root, 비밀번호 사용해 mySQL에 접속해준다.
# cmd, powershell로 접속 시
mysql -u root -p
# gitbash로 접속 시
winpty mysql -u root -p

#-----mysql 종료 ( 다시 콘솔로 돌아가기. )
quit #또는
exit
  • 로컬 (MacOS)
#-----mySQL이 설치된 경로로 이동한다.
cd /usr/local/mysql/bin

#-----사용자명 root, 비밀번호 사용해 mySQL에 접속해준다.
# terminal로 들어가서 실행시켜 준다.
./mysql -u root -p

#-----데이터베이스 생성, 확인하기
CREATE DATABASE [db이름 지정];
show databases;

#-----mysql 종료 ( 다시 콘솔로 돌아가기. )
quit #또는
exit

▶️ Workbench 실행

  • Workbench 검색 후 파일 실행!

MySQL

  • 데이터 베이스 구축 단계
    • 데이터 베이스 만들기 ▶️ 테이블 만들기 ▶️ 데이터 입력, 수정, 삭제 ▶️ 데이터 조희
  • SQL
    • 데이터베이스에서 사용하는 언어를 의미한다. Structured Query Language의 약자이다.
    • 구조적 쿼리 언어이다.
    • 실행 순서가 없는 비절차적인 언어이다!
    • 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 언어이다.
  • 기본 구성
    • MySQL (dbms) 에는 여러개의 databases가 존재한다.
    • 그 중 하나의 database 안에는 여러개의 table(relation)이 존재한다.
    • 예를 들어 서비스에 대한 전체데이터베이스가 있고, 그 안에 제품테이블 회원정보테이블 등 여러 테이블이 존재.
  • 실행시킬때는 Ctrl + Enter , 줄이 길어져 전체 선택 후 한 번에 실행(적용)은 Ctrl + Shifr + Enter
  • 기본 사용 문법
    -- 데이터베이스를 사용하겠다.
    SHOW DATABASES ;
    
    -- 어떤 데이터베이스를 사용할건지 작성해주어야 한다.
    USE [db 이름] ;
    
    -- 테이블 설명을 볼 수 있다. 
    DESC 테이블명 ;
    
    -- 테이블명의 모든 값(*)을 조회 할 수 있다.
    SELECT * FROM 테이블명 ;
    
    -- 테이블의 특정 속성만 조회
    SELECT 속성1, 속성2 FROM 테이블명 ;

SQL은 기능에 따라 분류가 가능하다.

SQL의 데이터 타입


데이터... 이런거 몰라도 되는 줄 알았다. 하지만 앞으로 많이 보게 될 것이다 ㅎㅎ
프론트엔드니까 이런거 몰라도 된다? 몰라도 되기는 할 것이다. 근데 알면 좋다..!

다음 게시글에서는 데이터 정의어에 대해 더 상세하게 알아보자!

profile
프론트엔드 ㄱH발ㅈr ㅎH보ㅈr - ☆

0개의 댓글