[Study] BE/Server

[포스코x코딩온] 데이터베이스

stop-zero 2023. 4. 6. 02:03

데이터베이스 

데이터를 저장하는 구조/자료의 모음으로 데이터의 종합소이다. 데이터 간의 중복은 없어야 한다. 

데이터베이스가 없을 때는 파일 시스템을 사용해서 데이터를 저장해왔다. 그러나, 데이터가 중복되고 데이터 간 불일치가 발생하였고, 이를  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' 카테고리의 다른 글

[포스코 x 코딩온] 서버 구축  (0) 2023.03.27