[myspl 강좌] 1강
데이터베이스 기초
모든 데이터베이스는 input과 output을 가진다. input은 Create/Update/Delete로 나눌 수 있고 Output은 Read로 이해할 수 있다.
CRUD
- Create
 - Read
 - Upload
 - Delete
 
데이터를 관리할 때 중요한 4가지 기능들인데 DB는 이러한 일들을 상황에 맞게 자동으로 처리하는 역할을 해준다. file system의 발전 방향은 file -> Spread Sheet(E.g. excel) -> Data Base이다.
Database Ranking
- Oracle, MySQL, Microsoft SQL Server는 Relational DBMS
 - MongoDB는 Document store
 - Redis는 Key-value Store
 - Elasticsearch는 search engine
 - Cassandra는 Wide column store
 
binami WAMP를 통해서 mysql 설치
설치 후 bitnami manaer를 통해서 MySQL과 Apache Web Server를 제어할 수 있다.
cmd에서 C:\Bitnami\wampstack-7.4.7-0\mysql\bin\mysqld.exe를 실행해야 한다.
- $ cd C:\Bitnami\wampstack-7.4.7-0\mysql\bin
 - $ mysql -uroot -p //mysql -uroot -p{MY_PASSWORD}를 적어도 되지만 보안상의 이유로 -p까지 친 다음에 enter
 - password 입력
 
MYSQL 구조
- 가장 바깥 : Database Server
 - 관련된 Table 들의 집합 : Database or Schema
 - 관련된 정보들의 집합 : Table
 
MYSQL CRUD 명령어
| 기능 | 명령어 | 
|---|---|
| DATABASE 생성 | CREATE DATABASE opentutorials; | 
| DATABASE 삭제 | DROP DATABASE opentutorials; | 
| DATABASE 선택 | USE opentutorials; | 
| 접속 계정 비밀번호 변경 | SET PASSWORD = PASSWORD(‘{new password}’); | 
| 계정 생성 | 1. create user spring5@localhost; | 
| 계정 비밀번호 추가 | 1. mysql -uroot -p 2. use mysql; 3. alter user spring5@localhost identified with mysql_native_password by ‘tjrdl1226’;  | 
    
| 테이블 생성 | CREATE TABLE topic( id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, discription TEXT NULL, created DATETIME NOT NULL, author VARCHAR(3) NULL, profile VARCHAR(100) NULL, PRIMARY KEY(id));  | 
    
| 테이블 이름 변경 | RENAME TABLE topic TO topic_backup; | 
| 테이블 목록 출력 | SHOW tables; | 
| 테이블 SCHEMA 출력 | DESC topic; | 
| row 저장 | INSERT INTO topic (title,description,created,author,profile) VALUES (‘PostgreSQL’, ‘PostgreSQL is …’, NOW(), ‘abc’, ‘developer’); | 
| row 검색 | SELECT id,title,created,author FROM topic WHERE author=’abc’ ORDER BY id DESC; | 
| row 검색 | SELECT id,title,created,author FROM topic WHERE author=’abc’ ORDER BY id DESC LIMIT 2; | 
| row 수정 | UPDATE topic SET author=’aaa’, profile=’designer’ WHERE id = 1; | 
| row 삭제 | DELETE FROM topic WHERE id = 4; | 
| 테이블 구조와 데이터 복사 | 1. CREATE TABLE IF NOT EXISTS 복사 테이블 SELECT * FROM 원본 테이블;2. ALTER TABLE topic ADD PRIMARY KEY(id); 3.ALTER TABLE topic MODIFY COLUMN id INT auto_increment; 4. (2.~3.을 한 번에) ALTER TABLE topic MODIFY id INT auto_increment PRIMARY KEY;  | 
    
| column 이름 변경 | ALTER TABLE topic CHANGE author author_id INT; | 
| row 갯수 출력 | SELECT COUNT(*) as cnt FROM totpic; //갯수를 나타내는 INT return | 
Mysql Client or Windows
free client는 MySQL Workbench를 사용합니다.
- $ ./mysql -uroot -p -h{database server의 ip주소}
 - mysql의 cli client인 mysql monitor 실행
 
Mysql workbench에서는 GUI로 명령어를 수행할 수 있도록 해준다.
SQL JOIN
JOIN이 어려울 때는 생활코딩의 JOIN 강의를 보면된다. 강의링크