
인프런 데이터베이스 강의 (섹션4-섹션5) 기록
표를 만드는 부분의 SQL을 직접 짜는 경우는 적다고한다. 데이터베이스의 장점은 컬럼에 데이터 타입을 강제(지정) 할 수 있음
만드려는 표: id, title, description, created, author, profile
CREATE TABLE topic(
-> id INT(11) NOT NULL AUTO_INCREMENT,
-> title VARCHAR(100) NOT NULL,
-> description TEXT NULL,
-> created DATETIME NOT NULL,
-> author VARCHAR(15) NULL,
-> profile VARCHAR(200) NULL,
-> PRIMARY KEY(id));
id INT(11): 뒤의 11의 의미는 11자리만 출력되게 하겠다는 의미(저장X). INT는 해당 열의 데이터 타입이 정수형이라는 뜻.NOT NULL: 해당 열의 정보가 널(NULL)이면 안된다는 의미. 해당 열에 값이 없으면 튜플을 추가하지 않고 거절함.AUTO_INCREMENT: 값이 자동으로 증가한다는 의미. id 값은 중복되면 안되기 때문에 자동으로 1씩 증가되도록 처리.title VARCHAR(100): 100자리의 캐릭터까지만 저장한다는 의미. 그 뒤는 자른다.description TEXT NULL: 해당 값은 널이어도 되기에 NULL 지정.DATETIME: 연월일과 시간을 모두 기록하는 형식의 데이터 타입.PRIMARY KEY(기본키): 각 행을 구별할 수 있는 중요한 키로 중복을 방지함.
SET PASSWORD: 비밀번호 설정.CRUD는 Create, Read, Update, Delete의 약자.
데이터를 추가하는 것을 create의 부분이라 할 수 있음.
INSERT INTO <테이블명> (속성1, 속성2, ...)
VALUES (값1, 값2...);
SHOW DATABASE: 데이터베이스들을 볼 수 있음
SHOW TABLES: 데이터베이스에 있는 테이블들을 볼 수 있음

DESC <테이블명>: 테이블의 속성과 정보를 살펴볼 수 있음.

INSERT INTO topic (title, description, created, author, profile)
VALUES ('MySQL', 'MySQL is...', NOW(), 'egoing', 'developer');
- `id`: 값을 직접 입력해주지 않아도 자동으로 증가하기 때문에 생략.
- 속성의 순서와 값을 나열하는 순서가 동일해야함
- `NOW()`: 현재 시간을 자동으로 넣어줌.


DROP <테이블명>: 기존에 있던 테이블을 삭제할 수 있음.SELECT 구문 뒤에 프로젝션, 즉 속성명을 적어주면 해당 속성(열)만 출력됨.
특정 값에 해당하는 행만 볼 때 사용하며 위치는 FROM 다음에 온다.

특정 값을 기준으로 정렬(오름차순/내림차순)을 할 때 사용. DESC를 사용하면 내림차순이고 ASC 혹은 생략하면 오름차순으로 정렬해준다.

방대한 데이터를 한 번에 다 가져와버리면 문제가 생길 수 있기에 가져와서 출력하는 데이터(행)의 양을 제한해준다.

UPDATE <테이블명>
SET <속성명> = <변경할값>
WHERE <수정할 행>

DELETE
FROM <테이블명>
WHERE <조건>
