생활코딩/DataBase

[MySQL] 환경설정, 스키마와 테이블 생성

hayjo 2020. 9. 21. 20:44

[강의 출처] opentutorials.org/course/3161

 

DATABASE2 - MySQL - 생활코딩

수업소개 무료이면서, 오픈소스이고, 3대 데이터베이스 중에 하나인 MySQL의 입문 수업입니다.  수업대상 정보기술의 심장인 데이터베이스가 어떻게 동작하는지 궁금하신 분 데이터를 보다 전�

opentutorials.org


MySQL

  • 무료 오픈소스 관계형 DB로, WEB과 함께 폭발적으로 성장하면서 현재 시장 점유율 2위
  • SQL(Structured Query Language)
  • Table(표) ⊂ 스키마(Schema)/데이터베이스 ⊂ 데이터베이스 서버 형태로 구성
  • 자체적인 보안 체계, 사용자/권한 지정 기능

설치 및 환경설정

  • 수업에서는 Codeanywhere를 이용하지만, 여기서는 Goorm IDE 컨테이너를 이용했다.
  • MySQL 세팅은 아래를 참조했다.
 

구름IDE로 MySQL 개발환경 설정하기 - Yohan's Developer Diary

MySQL 개발환경을 설치하고 개발환경을 만드는데에는 여러가지 방법이 있을 수 있다. 물론 가장 기본적인 방법은 직접 내 컴퓨터에 MySQL을 설치하는 방법이지만.., 나는 단지 공부목적으로 만드는

yohanpro.com

 

MySQL 환경설정에 사용한 코드는 아래와 같다.

(Goorm IDE의 경우, 자동실행 스크립트를 따로 지정하지 않으면 접속시마다 sudo service mysql start로 켜줘야 한다.

# sudo apt-get install mysql-server
<!-- MySQL 설치 명령어. 컨테이너 생성시에 MySQL 설치 옵션을 선택하면 생략 가능하다 -->

# sudo service mysql start
<!-- MySQL 시작 명령어 -->

유저 접속은 이렇게 하면 된다.

# mysql -uroot
// 여기부터 생활코딩을 따라서 root 유저로 접속했다. 초기에는 비밀번호가 없다.

# mysql -uroot -p
// 만약 비밀번호를 설정했다면 위처럼 입력 후, 다음 라인에서 패스워드 요청이 들어오면 입력해서 접속하면 된다.

패스워드 설정은 아래와 같이 한다. Query OK가 출력되면 무사히 변경된 것이다.

mysql> SET PASSWORD = PASSWORD('password');
Query OK, 0 rows affected, 2 warnings (0.07 sec)

 

Schema/DB 관리

생성/삭제:

mysql> CREATE DATABASE dbname; // 생성
mysql> DROP DATABASE dbname;   // 삭제

데이터베이스 목록 보기:

mysql> SHOW DATABASES;

데이터베이스 지정/활성화:

mysql> USE dbname;
Database changed // 이제부터 dbname 데이터베이스를 대상으로 명령 실행

 

Table 생성

  • 데이터베이스는 컬럼의 데이터타입을 강제할 수 있다.
  • 예를 들어, 정수의 경우 INT를 사용하면 된다.
    • 만약 INT 타입의 최대치인 42억 이상의 숫자를 입력하고 싶다면 BIGINT를 이용한다.
    • INT만으로 충분하다면 BIGINT말고 INT를 써야 메모리가 절약되고 성능 저하가 없다. 오버스펙은 가능한 지양하자.

 

id Column1 Column2 Date String
1 Column1/Row1 Column2/Row1 2020-09-21 String1
2 Column1/Row2 Column2/Row2 2020-09-21 String2

위의 테이블을 정의하는 SQL 코드는 아래와 같다.

mysql> CREATE TABLE example(                 // example이라는 TABLE을 정의
    ->   id INT(11) NOT NULL AUTO_INCREMENT, // 1번째 컬럼 'id'     : 숫자 11자리까지 가능, 생략불가, 자동증가
    ->   Column1 VARCHAR(100) NOT NULL,      // 2번째 컬럼 'Column1': 글자 100자까지 가능, 생략불가
    ->   Column2 TEXT NULL,                  // 3번째 컬럼 'Column2': 글자 65,535자 가능, 생략가능
    ->   Date DATETIME NOT NULL,             // 4번째 컬럼 'Date'   : 생성일자 및 시간,    생략불가
    ->   String VARCHAR(30) NULL,            // 5번째 컬럼 'String' : 글자  30자까지 가능, 생략가능
    ->   PRIMARY KEY(id));                   // PRIMARY KEY로 id를 지정한다(id값은 중복 불가)

 

 

MySQL Cheat Sheet

ugoproto.github.io/ugodoc/sql_nosql_cs/

 

SQL-NoSQL Cheat Sheets - ugodoc

SELECT col1, col2, col3, ... FROM table1 WHERE col4 = 1 AND col5 = 2 LIMIT 3 GROUP by ... HAVING count(*) > 1 ORDER BY col2, col3 DESC;

ugoproto.github.io

 

overapi.com/mysql

 

MySQL Cheat Sheet | OverAPI.com

 

overapi.com