-
[MySQL] 환경설정, 스키마와 테이블 생성생활코딩/DataBase 2020. 9. 21. 20:44
[강의 출처] opentutorials.org/course/3161
MySQL
- 무료 오픈소스 관계형 DB로, WEB과 함께 폭발적으로 성장하면서 현재 시장 점유율 2위
- SQL(Structured Query Language)
- Table(표) ⊂ 스키마(Schema)/데이터베이스 ⊂ 데이터베이스 서버 형태로 구성
- 자체적인 보안 체계, 사용자/권한 지정 기능
설치 및 환경설정
- 수업에서는 Codeanywhere를 이용하지만, 여기서는 Goorm IDE 컨테이너를 이용했다.
- MySQL 세팅은 아래를 참조했다.
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/
'생활코딩 > DataBase' 카테고리의 다른 글
[MySQL] DELETE FROM .. WHERE id IS NULL; (0) 2020.11.08 [MySQL] ALTER TABLE table ... TIMESTAMP (0) 2020.11.08 [MySQL] 테이블 분리와 JOIN (0) 2020.09.28 [MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE (0) 2020.09.24 [개요] 데이터베이스란 (0) 2020.09.21