본문 바로가기
카테고리 없음

데이터베이스 총정리 [유튜브 생활코딩 DATABASE2 MySQL 강의]

by 덤더리덤떰 2025. 2. 7.

4강. MySQL의 구조 

: sql에서는 서로 연관된 표들을 grouping하여 서로 연관되어있지 않는 표들과 분리하는데 사용하는 파일의 폴더같은 역할이 데이터베이스 

 

⇒ 표들을 grouping한 게 데이터베이스?

⇒  mysql에서는 '데이터베이스'와 함께 '스키마' 표현 사용

*스키마 : 표들을 서로 grouping할 때 사용하는 일종의 폴더

⇒  스키마들이 많아지면 이것들을 관리하는 데이터베이스 서버가 존재 

 표 - 데이터베이스(스키마) - 데이터베이스 서버 

 


5강. MySQL 서버접속 

: 데이터베이스는 자체적인 보안체계를 가지고 있기에 데이터를 안전하게 보관 가능 

: 권한 기능도 존재하기에 각 사용자마다 테이블과 스키마에 대해 읽기/쓰기/삭제 기능 권한 부여 가능   

  • C:\Program Files\MariaDB 10.6\bin>mysql -uroot -p  // MariaDB(MySQL)에 루트(root) 사용자로 로그인하는 명령어
     pwd 입력하면 mysql 실행 
    cf. 루트는 모든 권한이 열려있기에 루트의 권한으로 데이터베이스 직접 다루는 건 위험
    (별도의 사용자를 만들어서 그걸로 작업하다 중요한 작업만 루트로) 
  • cmd창에 Maria 명령 프롬프트 'MariaDB[(none)] > ' 가 떠야 데이터베이스 작업 가능  
    cf. 나갈려면 EXIT 명령어 사용

⇒  이 작업까지 하면 데이터베이스 서버 담장 넘은 상태 


6강. 스키마의 사용

(위쪽 화살표 누르면 이전 명령어들 뜸) 

  • CREATE DATABASE opentutorials; //데이터베이스 생성
  • DROP DATABASE opentutorials; //데이터베이스 삭제 
  • SHOW DATABASES; //내가 생성한 데이터베이스 출력 
  • USE opentutorials; //이제 이 데이터베이스에 작업을 하겠다는 의미로, 이제 명령 프롬포트에 내리는 명령어는 opentutorials에 대한 명령을 실행 

⇒  이 작업까지 하면 데이터베이스를 넘어서 표를 다룰 준비가 된 상태

 


7강. SQL과 테이블의 구조 

: Structured Query Language

: 표들을 정리정돈(구조화) + 데이터베이스에게 작업요청(쿼리) + MySQL Server와 내가 이해할 수 있는 공통언어 


8강. 테이블의 생성

: create table in mysql cheat sheet 검색해서 문법 찾아보기
: 세미콜론 사용하지않으면 계속해서 줄바꿈하여 명령 입력 가능 (->가 표시됨)
: 엑셀은 사용자가 데이터를 아무 타입이나 적을 수 있지만, 데이터베이스는 컬럼의 데이터 타입을 강제할 수 있음 

: 엑셀은 기본적으로 모든 셀에 값을 넣을 수 있지만, 데베는 컬럼마다 "필수 입력"인지 "비워둘 수 있는지" 정할 수 있음

목표 : 왼쪽 사진과 같이 테이블 생성


C:\Program Files\MariaDB 10.6\bin>mysql -uroot -p
MariaDB [(none)]> USE opentutorials;
MariaDB [opentutorials] > CREATE TABLE topic (
-> id INT(11) NOT NULL AUTO_INCREMENT,
/*
괄호 안에 쓰는 숫자는 나중에 검색할 때 얼마까지 노출시킬 것인지 조절하는 숫자로 보통 11 많이 사용
NOT NULL은 값이 없는 걸 허용하지 않는다는 의미로 무조건 값을 채우게 설정
AUTO_INCREMENT는 id의 값을 중복없이 알아서 행 추가할 때마다 증가시켜주기에 식별자 구분 가능
*/

-> title VARCHAR(100) NOT NULL,
// 사용자가 입력한 값이 최대 100글자까지는 저장되지만, 100글자를 초과하면 저장할 수 없어 오류 발생 
-> description TEXT NULL,
// 최대 65535글자 저장가능하고 값을 안넣는 것도 허용
-> created DATETIME NOT NULL,
// 시간과 날짜 모두 설정 가능하고 무조건 데이터 쓰도록
-> author VARCHAR(30) NULL,
-> profile VARCHAR(100) NULL,
// VARCHAR은 보통 가변 길이 문자열 (이름, 이메일 등) 에 사용하고, TEXT는 본문 내용같은 거 사용시 이용
-> PRIMARY KEY(id));
// id 열이 메인키라는 것을 데이터베이스에 알려줌 

cf. PRIMARY KEY의 두가지 측면

  • 성능 
  • 중복 방지 
    ex) 위 사진상태에서 title에 DB2 추가하면서 id를 3으로 하면 중복되므로 안됨
    ⇒  PRIMARY KEY(id) : 데이터베이스에게 "id컬럼은 가장 중요한 컬럼이므로 다른 애들이랑 중복되면 안된다"라는 것을 명시하는 것 

 


9강. INSERT (행 추가)

  • DESC 테이블명; // 한 레코드의 있는 데이터들의 형식 볼 수 있음 

(id는 auto_increment이므로 생성할 때 안써도 가능)
                                                                                         ↓

왼쪽 사진과 똑같이 만들기 위해 오른쪽 사진과 같이 코드 작성


11강. SELECT (우리가 생성한 테이블 내 레코드 읽기) 

    • 테이블 내 모든 레코드 출력

  • 테이블 내 id, title, created, author 열만 출력

  •