[포스코x코딩온] 웹 풀스택 과정 7기 5주차 화요일 회고

포스코 코딩온 웹 풀스택 과정 7기 5주차 화요일 회고

DB

  • Table(Relation) : 행과 열로 이루어진 2차원 테이블
    • Column(Attribute) : 테이블의 열, 각각의 속성
      • Primary Key : 테이블에서 행을 구분할 수 있는 유일한 값
      • Foreign Key : 다른 테이블의 Primary Key를 참조하는 속성
    • Row(Tuple) : 테이블의 행, 하나의 데이터
  • 종류
    • MySQL : 오픈 소스 RDBMS 였으나 오라클에 인수되어 현재는 오라클이 관리하고 있다.
    • Oracle
    • MariaDB
    • MongoDB

SQL문

DDL

DDL(Data Definition Language)은 데이터베이스를 정의할 때 사용하는 구문이다.
DDL은 데이터베이스, 테이블, 뷰, 인덱스 등을 생성, 변경, 삭제하는데 사용한다.

  • CREATE : 생성
  • ALTER : 변경
  • TRUNCATE : 열 모두 삭제
  • DROP : 테이블 자체를 삭제

DML

DML(Data Manipulation Language)은 데이터를 조작하는데 사용하는 구문이다.
DML은 데이터를 검색, 삽입, 수정, 삭제하는데 사용한다.

  • SELECT : 검색, 조회
  • INSERT : 삽입
  • UPDATE : 수정
  • DELETE : 삭제

MySQL

MySQL 설치 및 실행

brew install mysql // 설치
mysql.server start // 서버 실행
mysql_secure_installation // 보안 설정

MySQL 설치시 오류

brew로 MySQL 설치 후 서버를 열려고 하면 계속 오류가 났다.
ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/<컴퓨터 이름>.local.pid). 라느니 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 라느니 계속 검색 결과를 따라해도 오류에 오류만 나올 뿐이었다.
삭제 후 재설치를 해도 똑같은 오류를 뱉었다.
그러다 문득 이전에 mariaDB를 설치를 했던 적이 있는데 그 때 설정해둔게 오류가 생긴게 아닐까라는 의심이 들었다.
brew uninstall mysql로 삭제 후 /opt/homebrew/var 디렉토리를 확인 했더니 mysql 디렉토리가 남아있었다.
rm -rf /opt/homebrew/var/mysql로 삭제 후 다시 설치를 하니 정상적으로 작동했다.
이걸로 두 시간을 날렸다. 아까운 내 시간…😵‍💫

MySQL VSCode 연동

VSCode 확장 탭에서 MySQL을 검색해 가장 먼저 나오는 MySQL를 설치했다.
실행 했더니 Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 라는 에러가 떴다.
아마 인증과정에서 일어난 문제 같다.
에러문을 검색해보니 비슷한 문제를 겪은 글이 있었다.
답변에 나온 해결책은 다음과 같았다.

ALTER USER '<DB 사용자명>'@'<호스트 이름>' IDENTIFIED WITH mysql_native_password BY '<DB 사용자 비밀번호>';

터미넗에서 MySQL을 실행한 뒤 해당 명령문을 입력하니 깔끔하게 실행되었다.
해당 SQL문의 IDENTIFIED WITH mysql_native_password BY 부분을 검색해서 나온 글을 보니 인증 과정 문제가 맞는 것 같다.

외래키

제약조건

  • CASCADE: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드도 업데이트/삭제
  • SET NULL: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드는 NULL로 업데이트
  • NO ACTION: 부모 테이블의 레코드가 업데이트/삭제돼도 자식 테이블의 레코드는 변화 없음
  • SET DEFAULT: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드는 DEFAULT로 업데이트
  • RESTRICT: 부모 테이블의 레코드가 업데이트/삭제되지 않도록 함

© 2021. All rights reserved.

Powered by Hydejack v7.5.2