이전에 사용했던 MongoDB는 비관계형 데이터베이스(NoSQL)
MySQL이 바로 관계형 데이터베이스(RDB)
NoSQL - 데이터 형식이 자유롭다
저장(Write)과 읽기(Read) 작업이 더욱 빠르며, 복잡한 비즈니스 로직 없이 주로 데이터 읽기와 쓰기에 중점을 둔 서버에서 주로 사용
RDB - 열, 행에 데이터를 가진 테이블이 존재
욱 복잡한 비즈니스 로직과 정형화된 데이터를 체계적으로 관리할 수 있어 더욱 안전한 서버 환경을 구성하기에 좋다
보안이 중요한 기관이나, 은행과 같은 안전성을 중시하는 회사
MYSQL - 가장 널리 사용되는 오픈소스 관계형 데이터베이스(RDB)
데이터베이스를 관리하는 가장 대표적인 언어인 SQL(Structured Query Language)을 사용하여 데이터를 조작하고 관리
데이터베이스에서 사용되는 생성, 삽입, 조회 명령문을 SQL에서 작동시킨디
SQL의 종류
- DDL (Data Definition Language)
- DML (Data Manipulation Language)
- DCL (Data Control Language)
- TCL (Transaction Control Language)
등등... 나중에 참고해보자
기본적인 sql 세팅 후, 테이블 생성 > 데이터 삽입 > 조회 순으로 실습을 진행해보았다.
VSCODE 좌측 하단 Node.js 우클릭
> New query 클릭 시 작성창 뜸
> 작성창에 해당 코드 작성 후 우클릭 > 쿼리 실행
// 테이블 생성
CREATE TABLE IF NOT EXISTS users (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age int(11) NOT NULL,
PRIMARY KEY (id)
);
위에서 참고한 명령문들이 쓰여진듯 하다.
> 데이터 삽입
INSERT INTO users (name, age) VALUES
('홍길동', 21);
테이블 이름 (열1, 열2 ...) 같은 구조로 작성 후 다음줄에 작성한 데이터가 insert를 통해 테이블에 삽입되는 듯 하다.
> 데이터 조회
SELECT *
FROM users;
사전캠프때 배웠던 sql이 여기서 조회할때 사용되는 듯 하다. 그나마 익숙하기는 하지만 이전 학습을 더 찾아볼 필요는 있을 것 같다.
SQL의 제약조건?
컬럼들간의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지하여 데이터베이스의 무결성(Integrity)을 보장하는 규칙
설정할 수 있는 제약 조건의 종류
- 고유(Unique) 제약 조건
테이블에 소속된 특정 컬럼이 중복된 키를 가질 수 없는 조건 ( 아이디, 이메일과 같은 )
기본적인 규칙인듯?
>> 사용자가 로그인을 시도할 때 이메일의 중복을 허용한다면, 이름, 나이, 닉네임과 같은 추가 정보를 입력받아야만 사용자를 특정할 수 있다
CREATE TABLE Users
(
...
name varchar(255) NOT NULL UNIQUE
...
);
Unique 조건을 추가하여 이름컬럼은 중복된 값을 허용하지 않는다
- NULL 제약 조건
특정 컬럼이 아무런 값을 입력받지 않도록 설정하거나, 무조건 값을 입력 받도록 설정하는 조건
( 데이터가 없다면, null을 저장하여, 데이터가 존재하지 않다는것을 표현 )
그동안 sql 강의 실습때 null로 표현되는것을 보았다
>>
사용자가 이메일이나, 패스워드를 통해 로그인하는 경우, 해당하는 2개의 정보는 필수로 존재해야하는 컬럼
이러한 필수로 존재해야하는 컬럼이 있다면 NOT NULL 제약 조건을 추가하여 null 값이 입력되는 것을 방지할 수 있다.
CREATE TABLE Users
(
...
name varchar(255) NOT NULL
...
);
- 기본 키 (Primary Key) 제약 조건
테이블 내에서 각 행(row)을 고유하게 식별할 수 있도록 보장하는 조건
기본적인 규칙인듯?
CREATE TABLE Users
(
...
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
//AUTO_INCREMENT - DB 내에서 데이터가 입력될 때 마다 숫자를 1씩 증가시켜 기본 키의 고유한 값을 유지
...
);
- 외래 키 (Foreign Key) 제약 조건
테이블 간의 관계를 설정하는 조건
한 테이블의 컬럼(Column)이 다른 테이블의 특정 행(Row)을 참조하도록 설정하는 조건
CREATE TABLE Garden
(
gardenId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE GardenPlants
(
gardenPlantsId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gardenId INT(11) NOT NULL,
name VARCHAR(255) NOT NULL,
FOREIGN KEY (gardenId) REFERENCES Garden (gardenId)
// gardenId컴럼이 Garden테이블의 gardenId를 참조한다
);
- 외래 키 (Foreign Key) 제약 조건 심화
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE CASCADE
ON UPDATE CASCADE
// CASCADE - 참조하고 있는 개체가 변경/삭제 될 경우 함께 변경/삭제
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE NO ACTION
ON UPDATE NO ACTION
// ACTION - 참조하고 있는 개체가 변경/삭제 될 경우 아무런 행위를 하지 않고 에러 발생
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE SET NULL
ON UPDATE SET NULL
// SET NULL - 참조하고 있는 개체가 변경/삭제 될 경우 현재 데이터를 NULL로 변경
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE SET DEFAULT
ON UPDATE SET DEFAULT
// SET DEFAULT - 참조하고 있는 개체가 변경/삭제 될 경우 현재 데이터를 기본 값으로 변경
SELECT JOIN 연산자
서로 다른 테이블에서 데이터 조회 시
숙련 1-8까지 수강.
주말동안 남은 강의를 1회독하여 다음주 월요일에는 프로젝트를 시작할 수 있도록 진행할 예정
'TIL' 카테고리의 다른 글
내일배움캠프 5주차 화요일 TIL (0) | 2024.11.26 |
---|---|
내일배움캠프 5주차 월요일 TIL (0) | 2024.11.25 |
내일배움캠프 4주차 화요일 TIL (0) | 2024.11.19 |
내일배움캠프 4주차 월요일 TIL (0) | 2024.11.18 |
내일배움캠프 3주차 금요일 TIL (0) | 2024.11.15 |