Skip to content

Commit fa86a5d

Browse files
authored
Add files via upload
1 parent 7388128 commit fa86a5d

22 files changed

+447
-0
lines changed

kanghyuk/docker/DB.png

31.9 KB
Loading

kanghyuk/docker/DB환경설정.png

24.5 KB
Loading

kanghyuk/docker/DOCKER.md

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# 데이터 베이스(DOCKER)
2+
## 등장 배경
3+
서버는 사실 하나의 컴퓨터와 같다. 서비스를 담는 서버는<br>하나의 컴퓨터로 생각할 수 있다. 하지만 우리가 평소에 코딩을 하면서<br>썼던 변수들은 모두 메모리로서, 한 마디로 주기억장치이다.<br>하지만 커뮤니티 하나만하더라도 용량이 1TeraByte를 넘어가는데<br>우리가 쓰는 컴퓨터만 하더라도 램이 32GB ~ 16GB 사이가 보통이다.<br>때문에 쓰는 것이 데이터 베이스이다.
4+
5+
---
6+
7+
## 개념
8+
데이터베이스는 일반적으로 컴퓨터 시스템에 전자적으로 저장되는<br>구조화된 정보 또는 데이터의 조직화된 모음입니다.<br>메모리와 달리 영속성을 가지고 대용량성을 가진것.
9+
10+
여기서 구조화된 정보들을 이미지(image)라고 부른다.
11+
12+
##### (데이터 베이스의 구조 그림)
13+
14+
![DB](DB.png)
15+
16+
---
17+
18+
## 종류
19+
우리가 주로 사용하는 DB의 종류로는 MYSQL<br>해외에서 많이 사용하는 DB는 PostSQL<br>기업체에서 많이 쓰는 것은 Oracle이라는 DB이다.<br>위 DB는 모두 <span style="color:yellow">관계형데이터베이스(RelationDataBase)</span>이다.
20+
21+
---
22+
23+
백 엔드는 보통 데이터 베이스에서 아래 CRUD 4가지 과정의 일을 처리한다.
24+
## Create, Read, Update, Delete
25+
+ Create : 생성
26+
+ Read : 읽기
27+
+ Update : 수정
28+
+ Delete : 삭제
29+
30+
위 4가지 과정을 프로세싱 하기 위해 쓰는 언어가 SQL이다.
31+
32+
---
33+
34+
Structured Query Language : SQL은 데이터를 쿼리, 조작 및 정의하고<br>액세스 제어를 제공하기 위해 거의 모든 관계형 데이터베이스에서<br>사용되는 프로그래밍 언어.
35+
36+
SQL또한 3가지 갈래로 나뉜다.
37+
+ DDL : Data Definition Language로 데이터 정의어이다.
38+
+ DML : Data Manipulation Language로서 데이터를 조작하는 언어<br>(백 엔드가 주로 사용하는 언어)
39+
+ DCL : Data Control Language로 데이터 제어어이다.
40+
41+
---
42+
43+
## DML
44+
그중 우리가 주로 사용할 DML에 대해 알아보자.<br>DML은 앞서말한 CRUD과정에 해당하는 명령어가 따로 있다.
45+
+ INSERT -> Create
46+
+ SELECT -> Read
47+
+ UPDATE -> Update
48+
+ DELETE -> Delete
49+
50+
위 와 같이 insert, select, update, delete 4가지 명령어가 있다.
51+
52+
---
53+
54+
명령어를 배우기 전에 docker 실행을 해야 명령어를 사용할 수 있기 때문에<br>docker를 실행 시켜보자. 먼저 cmd창을 킨다.<br>그 다음 아래 명령어로 MySQL Docker 이미지를 다운로드한다.
55+
```
56+
docker pull mysql
57+
```
58+
위와 같이 다운로드 하게 되면 자동으로 최신버전으로 다운받게 된다.<br>따라서 버전을 지정해 주고 싶으면 아래 명령어를 사용한다.
59+
```
60+
docker pull mysql:버전
61+
```
62+
이미지를 다 다운받았으면 생성 및 실행을 해보자
63+
```
64+
docker run --사용자가 사용할 이름 mysql-container -e MYSQL_ROOT_PASSWORD=사용자가 사용할 비번 -d -p 3306:3306 mysql:latest
65+
```
66+
다음은 컨테이나 시작과 중지하는 법이다.
67+
+ 시작 명령어
68+
```
69+
docker start mysql-container
70+
```
71+
+ 중지 명령어
72+
```
73+
docker stop mysql-container
74+
```
75+
+ 재시작 명령어
76+
```
77+
docker restart mysql-container
78+
```
79+
80+
---
81+
82+
그 다음은 컨테이너에 접속하는 명령어이다.
83+
```
84+
docker exec -it mysql-container bash
85+
```
86+
를쳐주면 아래 상태가 된다.
87+
```
88+
docker exec -it mysql-container bash
89+
root@dc557b92f573:
90+
```
91+
다음과 같이 쳐준다.
92+
```
93+
docker exec -it mysql-container bash
94+
root@dc557b92f573:/# mysql -u root -p
95+
```
96+
그럼 또 다음과 같은 상태가 된다.
97+
```
98+
docker exec -it mysql-container bash
99+
root@dc557b92f573:/# mysql -u root -p
100+
Enter password:
101+
```
102+
이때 생성 및 실행 단계에서 설정했던 비밀번호를 쳐주면 된다.<br>그럼 다음과 같이 준비가 완료된다.
103+
```
104+
docker exec -it mysql-container bash
105+
root@dc557b92f573:/# mysql -u root -p
106+
Enter password:
107+
Welcome to the MySQL monitor. Commands end with ; or \g.
108+
Your MySQL connection id is 9
109+
Server version: 8.0.22 MySQL Community Server - GPL
110+
111+
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
112+
113+
Oracle is a registered trademark of Oracle Corporation and/or its
114+
affiliates. Other names may be trademarks of their respective
115+
owners.
116+
117+
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
118+
```
119+
120+
---
121+
122+
## INSERT 명령어
123+
```
124+
INSERT INTO 테이블 (컬럼A, 컬럼B) VALUES(컬럼A에 넣을 데이터, 컬럼B에 넣을 데이터);
125+
```
126+
여기서 <span style="color:yellow">컬럼(column)</span>이란?<br>테이블에 각 열을 말한다. 같은 의미로는 속성(attribute)이 있다.
127+
128+
여기서 한가지 의문점이 또 생긴다. 그렇다면 <span style="color:yellow">테이블</span>이란 또 무엇일까?<br>테이블에 구조에 대해 알아보자. 사람A와 B가 있다고 가정을 했을때<br>다음과 같은 정보를 DB에 담게된다.
129+
130+
![테이블](%EC%A0%9C%EB%AA%A9%20%EC%97%86%EC%9D%8C.png)
131+
132+
이때 행 즉 <span style="color:orange">가로축</span>을 <span style="color:orange">튜플</span>이라 부르고, <span style="color:#34FF56">세로축</span>을 <span style="color:#34FF56">속성이</span>라 부른다.<br>즉 특정 객체의 인스턴스값의 모임이다. ex):A에 대한 인스턴스 = A, 남자, 17<br>속성은 성별이나 나이등 인스턴스값만의 모임이다. ex)성별의 도메인 = 남자, 여자
133+
134+
![테이블(2)](%ED%85%8C%EC%9D%B4%EB%B8%94(2).png)
135+
136+
##### (튜플 = row)
137+
138+
---
139+
140+
## SELECT 명령어
141+
select는 CRUD중 read에 해당하는 명령어로
142+
```
143+
SELECCT 추출할컬럼 FROM 테이블 WHERE 조건문
144+
```
145+
의 형태로 구성되어 있다. 여기서 조건문은 어떤것을 얘기하냐면 DB에 저장할때<br>보통 튜플 하나당 아이디(ID) 하나가 할당 되어있는데 (id >= 90)라는 조건문을 쓰면<br>해당테이블에 90보다 큰 아이디값을 가진 컬럼을 추출한다.
146+
147+
---
148+
149+
## UPDATE 명령어
150+
update는 컬럼을 수정하는 명령문이다.
151+
```
152+
UPDATE 테이블 SET 컬럼A='컬럼A에 수정할 데이터' WHERE 조건식
153+
```
154+
으로 구성되어있다. 조건식에 참이되는 모든 컬럼A를 ''안에 들어간 값으로 바꾼다.
155+
156+
---
157+
158+
## DELETE 명령어
159+
delete는 특정 데이터나 아니면 테이블에 있는 데이터를 삭제할 수 있다.
160+
```
161+
DELETE FROM 테이블 WHERE 조건문
162+
```
163+
이렇게 쓰면 조건문에 참이되는 테이블의 데이터는 삭제된다.
164+
165+
※여기서 주의 할 점※<br>조건문을 쓰지 않으면<span style="color:red">테이블의 모든 데이터가 삭제된다</span>.
166+
167+
---
168+
169+
우린 지금까지 table란걸 계속 적었는데 우린 아직 table을 만드는 법을 모른다.<br>따라서 테이블을 만드는 명령어에 대해 알아보자.
170+
171+
## 테이블 생성
172+
먼저 쿼리는 아래 구조로 이루어져 있다.
173+
```
174+
CREATE TABLE `테이블이름` {
175+
`컬럼명1` DATATYPE ,
176+
`컬럼명2` DATATYPE ,
177+
`컬럼명3` DATATYPE
178+
};
179+
```
180+
주의할 점이 있는데
181+
1. 테이블을 생성할 때 대/소문자를 구분하지 않는다.
182+
2. 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.
183+
3. SQL은 자료형이 따로있으니 참고 바람(나중에 정리해서 올릴예정)
184+
###### (특히 세미 콜론 찍는거 잊지말자)
185+
186+
---

kanghyuk/docker/MYSQL-명렁어.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# DB-명렁어
2+
<br>&nbsp;
3+
4+
# docker
5+
+ docker 이미지 불러오기
6+
```
7+
docker pull mysql
8+
```
9+
위와 같이 다운로드 하게 되면 자동으로 최신버전으로 다운받게 된다.<br>따라서 버전을 지정해 주고 싶으면 아래 명령어를 사용한다.
10+
```
11+
docker pull mysql:버전
12+
```
13+
+ MySQL(DB) 실행
14+
```
15+
docker run --사용자가 사용할 이름 mysql-container -e MYSQL_ROOT_PASSWORD=사용자가 사용할 비번 -d -p 3306:3306 mysql:latest
16+
```
17+
+ 컨테이너 시작 명령어
18+
```
19+
docker start mysql-container
20+
```
21+
+ 컨테이너 중지 명령어
22+
```
23+
docker stop mysql-container
24+
```
25+
+ 컨테이너 재시작 명령어
26+
```
27+
docker restart mysql-container
28+
```
29+
30+
---
31+
+ 컨테이너 접속
32+
```
33+
docker exec -it mysql-container bash
34+
```
35+
36+
<img src="%ED%99%94%EC%82%B4%ED%91%9C.png" width="150" height="150">
37+
38+
```
39+
docker exec -it mysql-container bash
40+
root@dc557b92f573:
41+
```
42+
<img src="%ED%99%94%EC%82%B4%ED%91%9C.png" width="150" height="150">
43+
44+
```
45+
docker exec -it mysql-container bash
46+
root@dc557b92f573:/# mysql -u root -p
47+
```
48+
49+
<img src="%ED%99%94%EC%82%B4%ED%91%9C.png" width="150" height="150">
50+
51+
```
52+
docker exec -it mysql-container bash
53+
root@dc557b92f573:/# mysql -u root -p
54+
Enter password:
55+
```
56+
57+
mysql실행 때 설정한 비밀번호 입력
58+
59+
<img src="%ED%99%94%EC%82%B4%ED%91%9C.png" width="150" height="150">
60+
61+
```
62+
docker exec -it mysql-container bash
63+
root@dc557b92f573:/# mysql -u root -p
64+
Enter password:
65+
Welcome to the MySQL monitor. Commands end with ; or \g.
66+
Your MySQL connection id is 9
67+
Server version: 8.0.22 MySQL Community Server - GPL
68+
69+
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
70+
71+
Oracle is a registered trademark of Oracle Corporation and/or its
72+
affiliates. Other names may be trademarks of their respective
73+
owners.
74+
75+
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
76+
```
77+
78+
# DDL
79+
## 테이블 생성(CREATE)
80+
```
81+
CREATE TABLE `테이블 이름`(
82+
`컬럼명1` 데이터 타입,
83+
`컬럼명2` 데이터 타입,
84+
`컬럼명3` 데이터 타입
85+
);
86+
```
87+
(Ex)
88+
```
89+
CREATE TABLE `member_table` (
90+
`id` INT,
91+
`name` VARCHAR(256),
92+
`age` INT
93+
);
94+
```
95+
실행 결과
96+
![테이블3](%ED%85%8C%EC%9D%B4%EB%B8%94(3).png)
97+
98+
---
99+
## 테이블 수정(ALTER)
100+
+ 컬럼 추가
101+
```
102+
ALTER TABLE `테이블 이름` ADD `추가할 컬럼명` 데이터 타입;
103+
```
104+
+ 컬럼 수정<br>(데이터 타입 크기 등등을 변경할 수 있음)
105+
```
106+
ALTER TABLE `테이블 이름`
107+
MODIFY COLUMN `수정할 컬럼` varchar(256);
108+
```
109+
+ 컬럼삭제
110+
```
111+
ALTER TABLE `테이블 이름` DROP COLUMN `컬럼 이름`;
112+
```
113+
114+
---
115+
## 테이블 삭제
116+
```
117+
DROP TABLE `테이블 이름`;
118+
```
119+
120+
---
121+
# DML
122+
## INSERT
123+
```
124+
INSERT INTO `테이블 이름`(컬럼1, 컬럼2) VALUES (컬럼1에 넣을 값, 컬럼2에 넣을 값);
125+
```
126+
## SELECT
127+
```
128+
SELECT 추출할 컬럼 FROM `테이블 이름` WHERE (조건문);
129+
```
130+
## UPDATE
131+
```
132+
UPDATE `테이블 이름` SET 컬럼명=컬럼에 넣을 값 WHERE 컬럼명=현재 들어가 있는 값;
133+
```
134+
## DELETE
135+
```
136+
DELETE FROM `테이블 이름` WHERE (조건문);
137+
```

kanghyuk/docker/SPRING-DB연동.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# SpringBoot-DB연동
2+
springboot와 데이터 베이스를 연동하는 방법을 알아보자.<br>먼저 스프링 부트 프로젝트를 설정할 때 다음과 같은 드라이버를 추가해준다.
3+
4+
![DB연동](DB%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95.png)
5+
6+
그리고 프로젝트를 생성해준다.
7+
8+
![환경](%ED%99%98%EA%B2%BD.png)
9+
10+
1. .properties타입을 yml로 바꾸어준다.<br>후에 다음과 같이 의존성을 추가해준다.
11+
12+
```
13+
spring:
14+
datasource:
15+
driver-class-name: com.mysql.cj.jdbc.Driver
16+
url: jdbc:mysql://localhost:3306/DB이름
17+
password: 설정했던 비밀번호
18+
username: root
19+
jpa:
20+
show-sql: true
21+
hibernate:
22+
ddl-auto: none
23+
```
24+
2. build.gradle파일에 다음과 같이 라이브러리를 다운 받아준다.
25+
26+
![gradle](gradle.png)
27+
28+
3. 엔티티 패키지 추가(객체와는 다른 의미)
29+
30+
![환경2](%ED%99%98%EA%B2%BD(2).png)
31+
32+
4. 엔티티 패키지 아래에 클래스 생성
33+
34+
![엔티티](%EC%97%94%ED%8B%B0%ED%8B%B0.png)
35+
36+
5. <span style="color:yellow">@Entity</span> 어노테이션 추가
37+
38+
![엔티티2](%EC%97%94%ED%8B%B0%ED%8B%B0(2).png)
39+
40+
6. <span style="color:yellow">@Table</span> 어노테이션 추가 및 테이블 지정
41+
42+
![테이블4](%ED%85%8C%EC%9D%B4%EB%B8%94(4).png)
43+
44+
7. 컬럼에 맞춰 변수 생성
45+
46+
![엔티티3](%EC%97%94%ED%8B%B0%ED%8B%B0(3).png)
47+
48+
8. databases패키지 아래에 SQL폴더 생성 및 sql파일 생성
49+
50+
![sql](sql.png)
51+
52+
9. 데이터 소스 구성 클릭
53+
54+
![sql2](sql(2).png)
55+
56+
10. +버튼 클릭
57+
58+
![데이터 소스](%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%86%8C%EC%8A%A4.png)
59+
60+
11. MySQL선택
61+
62+
![데이터 소스2](%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%86%8C%EC%8A%A4(2).png)
63+
64+
12. 사용자란에 root입력, 비밀번호란에 설정한 비번입력,<br>데이터베이스란에 데이터 베이스 이름 입력
65+
66+
![데이터소스 3](%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%86%8C%EC%8A%A4(3).png)
67+
68+
확인 후 연동 끝

kanghyuk/docker/gradle.png

61.5 KB
Loading

kanghyuk/docker/sql(2).png

4.14 KB
Loading

kanghyuk/docker/sql.png

1.95 KB
Loading
28.8 KB
Loading
36.4 KB
Loading

0 commit comments

Comments
 (0)