RDB란?
Relational Database: 쉽게 말해서, 데이터를 엑셀 표처럼 column 마다 다른 속성을 가지는 row들로 데이터를 저장하는 방식이다.
| RDB | NoSQL | Excel file |
|---|---|---|
| Table | Collection | Sheet |
| Row | Document | Row |
| Column | Field | Column |
Examples of NoSQL:
MongoDB, Google Firebase
Examples of RDB:
Oracle, MySQL, AWS RDS
SQL (Structured Query Language) 이란?
DB에서 사용되는 생성, 삽입, 조회 명령문으로서
모든 데이터들을 공통적으로 관리할 수 있는 표준 언어다.
SQL의 종류 1) DDL (Data Definition Language)
데이터의 구조, 속성 등을 설정
CREATE TABLE 테이블명DROP TABLE 테이블명ALTER TABLE 테이블명 ADD COLUMN 컬럼명; ALTER TABLE 테이블명 DROP COLUMN 컬럼명;ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 int(11) NOT NULL;ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새컬럼명;SQL의 종류 2) DML (Data Manipulation Language)
데이터의 값을 CRUD 조작
INSERT INTO 테이블이름 (컬럼이름) VALUES (데이터);SELECT FROM 테이블이름 WHERE 조건;UPDATE FROM 테이블이름 WHERE 조건;DELETE FROM 테이블이름 WHERE 조건;SQL의 종류 3) DCL (Data Control Language)
DB에 대한 권한 설정
(개발자마다 DB에 접근할 수 있는 권한을 다르게 줘야하는 상황이 있기 때문)
GRANT 권한 ON 객체명 TO 사용자;GRANT 권한 ON 객체명 FROM 사용자;SQL의 종류 4) TCL (Transaction Control Language)
DB 내의 transaction을 관리
START TRANSACTION : transaction을 시작
COMMIT : DB의 작업이 정상적으로 완료되었음을 관리자에게 알려준다.
ROLLBACK : DB의 작업이 비정상적으로 완료되었음을 관리자에게 알려준다. transaction을 시작했던 순간으로 롤백.
⭐️ SQL의 Constraints :
각 Column이 만족해야하는 constraint, 즉 제약 조건을 부여한다. 이로 인해, DB의 데이터들이 그 조건들을 violate하지 않는다는 걸 보장해준다. 이것을 데이터의 무결성(integrity)이라고 한다.
Constraints의 종류
Constraints의 example : 회원가입
NULL 허용 여부 변경
특정 column의 NULL을 YES ⇒ NO 로 변경:
ALTER TABLE 테이블이름 MODIFY COLUMN 컬럼이름 데이터타입그대로 NOT NULL;
특정 column의 NULL을 NO ⇒ YES 로 바꾸려고 할 때:
ALTER TABLE 테이블이름 MODIFY COLUMN 컬럼이름 데이터타입그대로 NULL;
데이터 타입을 안 건드리고 NULL ⇔ NOT NULL 만 바꾸고 싶어도 그것만 변경할 수 있는 명령어는 없는 것 같다. 검색해봤을 때는,
ALTER TABLE 테이블이름 ALTER COLUMN 컬럼이름 DROP NOT NULL;
이렇게 하면 된다고 나와 있었는데, 따라해보니 에러 뜨고 안 된다.
어쩔 수 없이 MODIFY 를 이용해서 수정하지 않을 데이터타입도 그대로 다시 써줘야 한다. 상당히 귀찮은 일이군..
UNIQUENESS 변경
특정 column의 UNIQUE 제약조건 부여:
ALTER TABLE Users ADD UNIQUE (컬럼이름) 괄호 필수!
특정 column의 UNIQUE 제약조건 제거:
ALTER TABLE Users DROP INDEX 컬럼이름
유니크 제약 조건은 내부적으로 INDEX로 구현되기 때문에, INDEX를 제거하는 방식으로 유니크 제약 조건을 제거해야 한다.