포스코x코딩온 웹 풀스택 양성과정

[포스코x코딩온] 웹 풀스택 과정 5주차 회고 | 데이터베이스 - MySQL

Codult 2024. 3. 29. 21:27
728x90

데이터베이스

데이터의 집합소로, 공유가 불가능하여 파일이 중복되고 불일치가 발생하는 기존 파일 시스템의 문제점을 보완한 구조이다.

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;
728x90