
데이터베이스
데이터의 집합소로, 공유가 불가능하여 파일이 중복되고 불일치가 발생하는 기존 파일 시스템의 문제점을 보완한 구조이다.
DBMS
DataBase Management System의 약자로, 데이터베이스에 접근하여 이를 관리할 수 있다.
📌 RDBMS
데이터베이스 내 저장된 테이블 간의 관계를 다루는 관계형 데이터베이스 RDBMS (Relational DBMS)를 주로 사용한다.
대표적인 RDBMS로는 Oracle, Microsoft SQL Server, MySQL, MariaDB 등이 있다.
📌 데이터베이스 용어
🚩 Key
데이터베이스에서 행(튜플)을 찾거나 순서대로 정렬할 때, 그 구분과 정렬의 기준이 되는 속성이다.
- 기본키 (PK, Primary Key)
: 메인 키로, 하나의 테이블에서 특정 행을 유일하게 구별할 수 있는 속성이다. 때문에 null 값이나 중복 값은 기본키로 들어갈 수 없다. (그럼 구분할 수 없으니까)
- 외래키 (FK, Foreign Key)
: 테이블 간의 연결을 위한 것으로, 다른 테이블의 기본키를 참조한다. 외래키를 통해, 다른 테이블에 저장된 값을 불러온다. (A 테이블의 기본키가 B 테이블에서는 외래키로 작용한다.)
※ NULL 값? 아직 정의되지 않은 미지의 값, 데이터를 입력하지 못하는 경우를 의미한다. (공백, 숫자 0과는 다른 의미)
MySQL
가장 널리 사용되고 있는 RDBMS로, 윈도우, Mac, 리눅스 등 다양한 운영체제에서 사용 가능하다.
📌 설치
MySQL 홈페이지(https://www.mysql.com/downloads/)에서 다운받을 수 있다.
📌 실행/종료
- 명령 프롬프트(cmd)에서 MySQL이 설치된 경로로 이동한다.
cd C:\Program Files\MySQL\MySQL Server 8.0\bin - 사용자명 root, 비밀번호(설치 시, 설정)를 입력하여 MySQL 접속한다.
-u root -p - quit(또는 exit)으로 종료한다.
SQL문
SQL (Structured Query Language)은 데이터베이스를 제어하고 관리할 수 있는 목적의 프로그래밍 언어로, 그 목적에 따라 DDL, DML, DCL로 나뉜다.
- DDL (Data Definition Language): 데이터베이스 또는 테이블을 정의하는 언어
- DML (Data Manipulation Language): 데이터베이스의 내부 데이터를 관리하기 위한 언어
- DCL (Data Control Language): 데이터베이스에 대한 권환을 관리하는 언어
- 주의! 명령어의 끝에는 항상 세미콜론(;)을 붙여, 문장이 끝났음을 알려준다.
SQL 공통
- 데이터베이스 목록 보기: show databases;
- 데이터베이스 이용하기(접근): use 데이터베이스명;
- 테이블 목록보기: show tables;
- 테이블 구조 보기: desc 테이블명;
📌 DDL
🚩 CREATE
데이터베이스, 테이블을 생성한다.
- 데이터베이스 만들기 (+ 한글 인코딩)
CREATE DATABASE 이름 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
- 테이블 만들기
CREATE TABLE 테이블명 (
열1 데이터형식,
열2 데이터형식
);
- 문자형 데이터 형식

- 숫자형 데이터 형식

- 날짜형 데이터 형식

예시)
CREATE TABLE member (
id VARCHAR(10) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthday DATE NOT NULL
)
🚩 ALTER
테이블의 특정 컬럼(열)을 삭제/추가/변경한다.
- 컬럼 삭제: drop column (column은 생략가능)
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
- 컬럼 추가: add
ALTER TABLE 테이블명 ADD 컬럼명 타입;
- 컬럼 속성 변경: modify
ALTER TABLE 테이블명 MODIFY 컬럼명 타입;
🚩 DROP
테이블을 삭제한다. (명령어 입력 시, 바로 삭제되므로 주의!)
DROP TABLE 테이블명;
🚩 TRUNCATE
테이블을 초기화한다. 테이블은 남아있고 내부 데이터가 지워지는 것이다. (명령어 입력 시, 바로 삭제되므로 주의!)
TRUNCATE TABLE 테이블명;
📌 DML
CRUD 방식으로 데이터를 처리한다!
CRUD (Create 생성, Read 읽기, Update 갱신, Delete 삭제)는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 처리 기능이다.
🚩 INSERT (생성/Create)
테이블에 데이터를 추가한다.
- 방법1) 전체 or 특정 컬럼에 데이터를 추가할 때
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3) VALUES (값1, 값2, 값3);
- 방법2) 전체 컬럼에 데이터를 추가할 때
INSERT INTO 테이블명 VALUES (값1, 값2, 값3);
🚩 SELECT (읽기/Read)
데이터를 검색/조회한다.
- 테이블의 데이터 전체 불러오기
SELECT * FROM 테이블명;
- 특정 조건을 만족하는 테이블의 데이터 불러오기
SELECT * FROM 테이블명 WHERE 컬럼1 = 조건값1;
- 오름차/내림차 순서 정렬 (ORDER BY, ASC/DESC)
-- 오름차
SELECT * FROM 테이블명 WHERE 컬럼1 = 조건값1 ORDER BY 컬럼1 ASC;
-- 내림차
SELECT * FROM 테이블명 WHERE 컬럼1 = 조건값1 ORDER BY 컬럼1 DESC;
- 개수 제한 (LIMIT) 및 시작 위치 설정 (OFFSET)
SELECT * FROM 테이블명 WHERE 컬럼1 = 조건값1 ORDER BY 필드1 DESC LIMIT 3 OFFSET 2;
※ DESC (내림차순 정렬)과 LIMIT 1 을 이용하여, 가장 최근에 추가된 정보를 가져올 수 있다. (기본키 값이 AUTO_INCREMENT로 1씩 증가하는 인덱스인 경우)
※ OFFSET을 이용한 시작 위치 설정은 주로 다음 페이지 로드에 사용한다.
- 특정 컬럼 데이터만 조회
SELECT 컬럼1, 컬럼2, 컬럼3 FROM 테이블명 WHERE 컬럼1 = 조건값1 ORDER BY 컬럼1 ASC;
※ WHERE 절에 조건을 걸기 위한 연산자
- 비교연산자(=, >, >=, <, <=)
- 부정연산자(!=, ^=, <>, NOT 컬럼명 =)
- 논리연산자 (AND, OR NOT)
- SQL 연산자
BETWEEN a AND b : a와 b의 값 사이에 있으면 참 (a, b 값도 포함)
IN (list) : 리스트에 있는 값 중 어느 하나라도 일치하면 참
LIKE '비교문자열' : 비교문자열과 형태가 일치하면 참 (%, _ 사용)
→ %는 0개 이상의 어떤 문자를, _는 1개의 단일문자를 뜻한다.
Ex)
SELECT * FROM user WHERE address LIKE '서울%';
IS NULL : NULL 값이면 참.
IS NOT NULL: NULL 값이 아니면 참.
🚩 UPDATE (갱신/Update)
데이터를 수정한다. 어떤 것을 바꿔줄지 WHERE절로 특정해서 가져오지 않으면 전체가 바뀌므로, WHERE절로 특정 컬럼을 가져와야 한다. (사실 상, workbench에서 수정하는 게 빠르다.)
UPDATE 테이블명 SET 컬럼1=값1 WHERE 컬럼2=조건2;
🚩 DELETE (삭제/Delete)
데이터를 삭제한다. 반드시 WHERE절 함께 써야한다! (없으면 컬럼 특정되지 않아서, 테이블 내용이 다 날라감)
DELETE FROM 테이블명 WHERE 컬럼1=값1;'포스코x코딩온 웹 풀스택 양성과정' 카테고리의 다른 글
| [포스코x코딩온] 웹 풀스택 과정 6주차 회고 | Sequelize (0) | 2024.03.29 |
|---|---|
| [포스코x코딩온] 웹 풀스택 과정 6주차 회고 | MVC 구조 (0) | 2024.03.29 |
| [포스코x코딩온] 웹 풀스택 과정 5주차 회고 | 파일 업로드(multer) (0) | 2024.03.29 |
| [포스코x코딩온] 웹 풀스택 과정 5주차 회고 | 동적 form 전송 (0) | 2024.03.29 |
| [포스코x코딩온] 웹 풀스택 과정 5주차 회고 | Form 전송 (0) | 2024.03.29 |