서버와 데이터베이스의 통신
데이터베이스(Database: DB)
데이터베이스의 종류
1) Relation DB(RDB)
관계형 데이터베이스
대표적인 RDB의 예
- MySQL
- Oracle DB
- Maria DB
2) No SQL
관계형 데이터베이스가 아닌 SQL
대표적인 No SQL의 예
- Mongo DB: 데이터를 key-value의 쌍으로 저장. JSON과 같은 형태.
- Redis
- Hadoop
- Hbase
테이블의 스키마 정의
CREATE TABLE `lectureList` (
`id` int NOT NULL AUTO_INCREMENT primary key,
`lectureId` int NOT NULL,
`order` int NULL DEFAULT 0,
`subject` varchar(255) NOT NULL,
`userId` int NOT NULL,
`author` char(20) NOT NULL,
`md` text, /* NULL 가능 */
`onlyMaterial` boolean NOT NULL,
`createdAt` timestamp DEFAULT CURRENT_TIMESTAMP,
`updatedAt` timestamp DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
테이블 생성문 용어 정리
1) AUTO_INCREMENT
2) primary key
3) DEFAULT ...
4) ENGINE(Storage Engine)
대표적인 스토리지 엔진으로 InnoDB, MyISAM 등이 있다.
5) CHARSET
테이블 삭제하기
drop table 테이블명;
테이블 수정하기
- 테이블명 변경
ALTER TABLE 테이블명 RENAME 변경할 테이블명;- 컬럼추가
ALTER TABLE 테이블명 ADD COLUMN 추가할 컬럼명 varchar(16) NULL;- 컬럼 타입 수정
ALTER TABLE 테이블명 MODIFY COLUMN 타입 수정할 컬럼명 varchar(32) NULL;- 컬럼명과 타입 수정
ALTER TABLE 테이블명 CHANGE COLUMN 이전컬럼명 변경할컬럼명 varchar(16);
자주 쓰는 MySQL 자료형(Data Type) 종류
-- 한 줄 주석
# 한 줄 주석
/*
여러줄
주석
*/
-- 사람 정보 저장 테이블
-- 번호(key라고 부름) | 이름 | 생년월일 | 취미 | 자기소개(없을 수 있다) | 작성 시간 | 수정 시간
-- 백틱 ` 백틱으로 갈색이 되도록 테이블명을 묶어야함 주황색이 되면 안됨'' 랑 다름 ``
-- 테이블명이나 컬럼명은 백틱으로 넣는다
-- 행 레코드 | 열 컬럼 필드
-- 필수 값일 때 not null
create table `person` (
`id` int not null auto_increment primary key
, `name` varchar(10) not null
, `birth` int not null
, `hobby` varchar(100) not null
, `introduce` text null -- null을 안 붙이면 기본 값은 null 허용
, `createdAt` timestamp default current_timestamp
, `updatedAt` timestamp default current_timestamp
) ENGINE=InnoDB default charset=utf8mb4;
# 스키마 정보 보기
desc `person`;
desc `user`;
-- 테이블 삭제하기
drop table `person`;
-- 테이블 수정하기
# 1) 테이블 이름 변경
alter table `person` rename `user`;
# 2) email 컬럼(필드) 추가 - 데이터가 존재할 때 나중에 추가되는 컬럼은 null이 반드시 허용되어야한다.
alter table `user` add column `email` varchar(16) null after `hobby`;
# 3) email 컬럼(필드) 수정 - 16에서 32로 변경
alter table `user` modify column `email` varchar(32) null;
# 4) 컬럼 이름/자료형 수정: birth(int) -> yyyymmdd(varchar)
alter table `user` change column `birth` `yyyymmdd` varchar(16);
-- not null로 바꾸고 char로 고정되어 있는 문자 8자로 변경
alter table `user` modify column `yyyymmdd` char(8) not null;