Mysql 첫걸음-DB와 TABLE

LSA·2022년 3월 25일
0

Mysql

목록 보기
1/2
post-thumbnail

리액트도 제대로 다 못 뗐는데, 곧바로 백엔드로 넘어가 몰아치는 과제를 처리하다 보니 어느새 2주가 지나 있었습니다.

그럼에도 불구하고 기초적인 것은 기록하고 싶기 때문에...
이 글에서 서버가 클라이언트(유저가 아닌, 프론트 단)에서 요청을 받아와 정보를 넘겨준다는 것을 기억하고 있나요?

하지만 사실 서버가 그 많은 데이터를 가지고 있을 정도로 만능은 아닙니다.

Database(이하 DB)

DB와 서버의 관계는 식당 종업원과 냉장고의 관계라고 생각하면 쉽습니다.
일단 종업원 = 서버, 냉장고 = DB 라고 했을때 둘을 비교해봅니다.

종업원서버공통점
주문을 받고 계산을 함유저의 요청을 받고 데이터를 처리함
사람임프로그램임때리면 안됨
일을 많이 시키면 병이 듬일을 많이 시키면 기능이 저하됨
냉장고DB공통점
식자재나 양념 등을 보관함데이터를 보관함
값이 비쌈무료로 이용 가능보관하는 양이 많아지면 골치아파짐
손으로 음식을 꺼냄코드로 데이터를 꺼냄

뭐 대충 이런 느낌

어쨌든 서버와 DB는 뗄 수 없는 관계이므로 수많은 DB 중, 무료인데다가 손쉽게 접근이 가능한 Mysql 실습 기록을 적습니다.

설치 및 비밀번호 세팅했다 치고

설치는 이전에 제가 homebrew를 이용해 설치해뒀습니다.고로 설치/세팅방법은 따로 적지 않습니다.(homebrew는 맥 os에서만 이용 가능합니다.)

Mysql 접속

터미널에 칠 명령입니다.

mysql -u root -p

해석: mysql에 유저가 접속할건데,이 유저는 최고권력인 root 권한이다.패스워드도 입력할거야.
(이 명령문에 대한 해석을 이전에 봤는데 어디서 봤는지 기억이 안나 이런 느낌으로 알고 있습니다)


그러면 아마 상당히 불친절하게 그림만 그려져 있는 명령문이 나오는데, 여기서 바로 비밀번호 키를 입력 후, 엔터를 쳐줍니다.
잘못 쓴다면?접속 안되니까 괜찮아요. mysql -u root -p 명령어를 또 쳐야한다는 귀찮음이 있지만..

DB 만들어보기

DB 안에 뭔 또 DB가 있다는 건지 황당한 소리지만, 여기서 말하는 DB는 프로젝트에서 이용할 데이터의 큰 분류를 구별합니다.

맛집 데이터 DB유명 관광지 DB좋아하는 음악 DB
음식 종류 테이블국외 관광지 테이블장르 테이블
맛집 지역 테이블국내 관광지 테이블가수 테이블

엑셀로 치면, 엑셀 문서 하나를 생성한다고 보면 됩니다.

DB 조회

일단 DB가 있는지 확인해봅니다.

SHOW DATABASES;

말 그대로 데이터베이스들을 보여달라는 명령어.

sql 쿼리 구문은 대문자로 쳐도 되고, 소문자도 됩니다. 대신 ;을 마지막에 꼭 써주어 명령을 끝내줍니다.

DB 생성

CREATE DATABASE 데이터베이스이름

아주 직관적이고 알기 쉬운 쿼리구문입니다!! 근데 진짜 한글이름도 돼?

됐다

DB 삭제

하지만 '데이터베이스이름'이라는 DB는 딱히 쓸모가 없습니다.지울겁니다.

drop database 데이터베이스이름;

delete라는 명령어를 쓸 줄 알았는데,예상외로 drop이라는 단어를 쓰네요.

DB 사용

어쨌든 DB를 새로 만들었으니, 그 DB에 접속(사용)합니다.

use 사용할_데이터베이스_이름;

Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed

이런 문구가 뜬다면 성공.

DB 이름 수정

DB 이름에 오타가 났다면, 수정하고 싶은게 사람 마음입니다.
그런데 DB 이름을 수정한다는 것은 그 안의 데이터들에도 영향을 끼치는 작업이므로, 불가능한 건 아닌데 복잡한 과정을 거치는 것 같습니다.
나중에 한번 시도해보는 것도 괜찮을 듯?

테이블 만들어보기

아까 이 표에서

맛집 데이터 DB유명 관광지 DB좋아하는 음악 DB
음식 종류 테이블국외 관광지 테이블장르 테이블
맛집 지역 테이블국내 관광지 테이블가수 테이블

DB에 속한 테이블들입니다. 엑셀의 '시트'에 가까운 개념입니다.
백문이 불여일행, 만들어보는게 제일입니다.

TABLE 조회

 show tables;

아까 DB 조회 명령어랑 같네요. 너무 쉬워서 의심스러울 정도입니다.

TABLE 삭제

drop table 테이블이름;--이 경우, 테이블에 속한 데이터는 전부 날아가니 알아서 책임진다.

나:(ㅋㅋ 할만한데?)

TABLE 생성

create table 테이블이름;
(
    필드이름1 필드타입1,
    필드이름2 필드타입2,
    ...
)

create 뒤에 table이라는 목적어만 더 붙은 형태.
그런데 필드이름과 필드타입까지 최소 1개는 만들어줘야 합니다.

  • 필드이름: 자유롭게 문자열로 정할 수 있음
  • 필드타입: mysql에서 지정된 형식과 조건만 사용 가능

음식 종류 테이블을 만들어보려면 이렇게 작성합니다.

create table food_category;
(
    id INT NOT NULL AUTO_INCREMENT,
    nation VARCHAR(200) NOT NULL,
    PRIMARY KEY (id)
);

갑자기 이상한 단어들이 튀어나와 혼란스럽지만, 옵션을 하나하나 해석하면 이런 뜻입니다.

id INT NOT NULL AUTO_INCREMENT, :
id 필드(컬럼)를 만들건데, 숫자(INT) 형태로 데이터가 들어갈거야.
그런데 이 id에는 값이 없으면 절대 안돼!(NOT NULL)
만약에 이 테이블에 데이터를 더 입력하면, id 숫자는 자동으로 올라가게 해줘.(AUTO_INCREMENT)

nation VARCHAR(200) NOT NULL,:
nation 필드를 만들건데, 이건 스트링(VARCHAR) 형태로 데이터가 들어갈거야. 대신 200자만 들어갈수 있어.
이 nation에도 값이 없으면 절대 안돼!(NOT NULL)

PRIMARY KEY (id):
id는 이 테이블의 기본 키야. 기본 키는 중복된 값이 있어도 안되고 NULL 값이 들어갈 수도 없어.

이렇게 테이블에 들어갈 컬럼의 명과 데이터 형식 및 속성을 정해주는 것을 '스키마(schema)'라고 합니다.
여튼 이렇게 테이블을 만들어주면, 이런 형태가 될 겁니다.

idnation

이 컬럼에 대한 자세한 속성을 보고 싶다면

desc 테이블이름;

이라고 해줍니다.
데이터 타입과 속성들이 깔끔하게 정리되어 나와요.

TABLE 내 데이터 선택

테이블을 선택한다는 것은, use와 다른 개념입니다.
테이블 내의 모든 행과 열을 확인한다는 작업에 가깝기 때문에..

select * from 테이블이름;

해석: (테이블이름)테이블에서 모든 컬럼을 선택해 보여줘.

*모든 것 을 뜻하는 기호입니다.
css에서

*{font-size:16px;}

이런 코드를 알고 있다면 익숙한 기호.
그런데 이건 테이블 내의 모든 컬럼명을 모르고 있을 때 이야기고, 대충 컬럼명 id와 컬럼명 restaurant_name 이런 것만 뽑아보고싶다 할때

select id,restaurant_name  from 테이블이름;

해당 컬럼명만 써주면 됩니다.

그런데 솔직히 restaurant_name이 너무 긴데 테이블 보여줄때 name으로 줄여 주면 안돼?

select id,restaurant_name as name  from 테이블이름;

as name을 뒤에 붙여줍니다.

아래는 실제 제가 가지고 있는 데이터베이스를 예시로 적용해 본 사진입니다.
as (보여줄이름) 이란 것은, 실제 컬럼명을 변경하는 게 아닌
테이블을 우리에게 보여줄 때 지정해준 이름으로 보여주는 거라는 걸 기억해야 합니다.

마무리

정말 기초적인 것만 써도 양이 이렇습니다.
한 포스팅에 DB,table,data까지 다루는 걸 적는다는건..힘들군요!

본격적으로 데이터를 넣는 건 다음 포스팅에서.

profile
진짜 간단하게 작성한 TIL 블로그

0개의 댓글