[MySQL] 환경설정, 스키마와 테이블 생성
[강의 출처] 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
MySQL Cheat Sheet | OverAPI.com
overapi.com