데이터베이스
데이터를 저장하는 구조/자료의 모음으로 데이터의 종합소이다. 데이터 간의 중복은 없어야 한다.
데이터베이스가 없을 때는 파일 시스템을 사용해서 데이터를 저장해왔다. 그러나, 데이터가 중복되고 데이터 간 불일치가 발생하였고, 이를 DBMS로 해결하였다.
DBMS(DataBase Management System)
파일 시스템이 가진 문제를 해결하기 위해 만들어졌다. 데이터베이스에 접근하고 이를 관리한다.
- 관계형 데이터베이스 = RDBMS(Relational DBMS)
데이터베이스 용어
- 열 = column = atrribute = 속성
- 행 = record = tuple = 튜플
- 테이블 = table = relation
- key : 데이터베이스에서 튜플을 찾거나 순서대로 정렬할 때 구분하고 정렬의 기준이되는 속성
- 기본키 (PK, Primary Key)
- 튜플(행)을 구분하는 유일한 식별자, 오직 하나!
- null 값 불가
- 중복 불가
- 외래키(FK, Foreign Key)
- 다른 테이블의 기본키를 참조
MySQL
오픈 소스 중 가장 많이 사용되고 있는 관계형 데이터베이스 관리 시스템이다. mysql 은 윈도우, mac, 리눅스 등 다양한 운영체제에서 사용가능하다.
mysql 설치
설치하고 나서 또 맥에서 경로 찾는 걸 어버버 거린 1인...
시스템 설정 >
아래 보이는 MySQL 들어가면
작고 소중하게 써져있다.
너무 길고 오타날 것 같아서 바로 터미널로 이동한다.
경로로 이동 후 접속하기
./mysql -u root -p
mysql 종료
quit
exit
SQL문 (Structured Query Language)
: 데이터베이스를 제어하고 관리할 수 있는 목적의 프로그래밍 언어이다.
SQL 분류 | 명령어 | 설명 |
데이터 조작어(DML) | SELECT | 데이터 조회, 검색 |
INSERT | 데이터 변경(= 삽입, 수정, 삭제) | |
UPDATE | ||
DELETE | ||
데이터 정의어(DDL) | CREATE | 테이블이나 관계의 구조를 생성 |
ALTER | ||
DROP | ||
데이터 제어어(DCL) | GRANT | 데이터 사용 권한, 회수 |
REVOKE |
데이터베이스 구축 단계
데이터베이스 만들기 > 테이블 만들기 > 데이터 입력/수정/삭제 > 데이터 조회
DDL
DDL - CREATE
- sql 문은 소문자로 작성해도 무관하나 가독성을 위해서 대문자로 작성하는 것을 지향합니다.
데이터베이스 만들기 + 한글 인코딩
프로그래밍 언어는 영어 기반이므로 한글을 사용할 수 있도록 한글 인코딩을 해주어야 한다.
CREATE DATABASE 이름 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
테이블 만들기
명령어 끝에는 세미콜론 ; 으로 문장이 끝난 것을 명시해야 한다.
CREATE TABLE 테이블명 (
속성이름1 데이터타입 PRIMARY KEY,
속성이름2 데이터 타입,
[FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]
);
데이터 형식
- 자주 사용되는 데이터
데이터 형식 | TYPE | 바이트 수 | 설명 |
문자형 | CHAR(N) | 1~255 | 고정길이 문자형/ n을 1부터 255까지 지정 |
VARCHAR(N) | 1~65535 | 가변길이 문자형/n을 1부터 65535까지 지정 | |
숫자형 | INT | 4 | 정수 |
날짜형 | DATE | 3 | 날짜 저장 (YYYY-MM-DD ) |
TIME | 3 | 시간 저장 ( HH:MM:SS ) | |
DATETIME | 8 | 날짜와 시간 저장 ( YYYY-MM-DD HH:MM:SS ) |
DDL - ALTER
테이블의 열을 삭제, 추가, 변경하는 명령어
#1. 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
#2. 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 타입;
#3. 컬럼 속성 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 타입;
DDL - DROP
테이블 잘못만들거나 더 이상 필요 없을 때 삭제하기
# 테이블 삭제
DROP TABLE 테이블명;
DDL - TRUNCATE
테이블 초기화
# 테이블 초기화
TRUNCATE TABLE 테이블명;
SQL 공통
# 데이터베이스 목록 보기
SHOW DATABASE;
# 데이터베이스 이용하기
USE 데이터베이스명;
# 테이블 목록 보기
SHOW TABLES;
# 테이블 구조 보기
DESC 테이블명;
DML
DML - INSERT
테이블에 데이터를 추가하기
# 방법1
INSERT INTO 테이블명 (필드1, 필드2, 필드3, ...) VALUES (값1, 값2, 값3, ...)
# 방법2
# 필드를 명시하지 않을 때, 테이블의 모든 컬럼에 값을 순서대로 추가해야 한다.
INSERT INTO 테이블명 VALUES (값1, 값2, 값3, ...);
DML - SELECT
데이터를 검색하는 질의어이고 , 가장 많이 사용된다!!
<SELECT 문 구성 요소>
- SELECT 속성이름
- FROM 테이블 이름
- WHERE 검색 조건
DML - UPDATE
# 테이블에서 특정 속성 값 수정
UPDATE 테이블명 SET 필드1 = 값1 WHERE 필드2 = 조건2;
DML - DELETE
# 테이블의 기존 행 삭제
DELETE FROM 테이블명 WHERE 필드1 = 값1;
DCL
: 데이터베이스에 접근해 읽거나 쓰는 것을 제한할 수 있는 권한 부여/박탈
GRANT
#특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한 부여
GRANT permission_type ON db_name.table_name
TO username@host IDENTIFIED BY 'pw' [WITH GRANT OPTION];
REVOKE
# 특정 데이터베이스 사용자에게 특정 작업에 대한 권한 박탈
REVOKE permission_type ON db_name.table_name FROM 'username'@'host';
'[Study] BE > Server' 카테고리의 다른 글
클라우드 네이티브 CI/CD: 자동화된 배포의 핵심 전략 (1) | 2025.01.15 |
---|---|
소프트웨어 개발의 핵심 전략: Waterfall, Agile, 클라우드 네이티브, DevOps 완벽 이해 (0) | 2025.01.15 |
[포스코 x 코딩온] 서버 구축 (0) | 2023.03.27 |