김기헌
프로그래머스 자릿수 더하기
public int solution(int n) {
int answer = 0;
while (0 < n) {
answer += n % 10; // n의 1의 자리 수를 answer값에 + 해줌
n /= 10; // n을 10으로 나누어줌 = 1의 자리 수를 삭제
}
return answer;
}
Java
복사
RDBMS와 NoSQL
RDBMS(Relational DataBase Management System): 관계형 데이터베이스 관리 시스템으로 엑셀 형식과 유사한 2차원 테이블 형식으로 구성되며 속성(Attribute)와 값(Value)를 이용하여 데이터를 정의하고 저장, 관리한다.
각각의 속성과 값을 가진 테이블들은 서로 관계를 맺으며 존재하고, 이 데이터들을 활용하기 위해 SQL이라는 언어를 활용.
NoSQL(Not Only SQL): 관계형 데이터베이스와 반대되는 방식을 사용하며, 데이터와 테이블간의 관계를 정의하지 않는다. RDBMS방식으로 더이상 처리할 수 없을만큼의 복잡하고 큰 데이터들의 등장으로 NoSQL의 필요성이 부각되기 시작함.
정해진 스키마가 없어 자유롭게 데이터를 저장할 수 있고, key값만 가지고 데이터에 대한 입, 출력을 수행할 수 있다.
예시:
-RDBMS: 고객 이름 - 김기헌 / 고객 나이 - 26 / 고객 id - asd1234
-NoSQL: 고객 id - asd1234 / 고객 정보: 김기헌, 26세, 남자
RDBMS vs NoSQL
RDBMS
장점
•
Data를 Column과 Row로 저장
•
데이터의 분류, 정렬, 탐색 속도가 비교적 빠르다
•
SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있다
•
데이터의 업데이트가 비교적 빠르다
단점
•
스키마 규격에 맞춰 데이터를 다뤄야 한다
•
데이터 처리에 대한 부하 발생시, 처리가 어렵다
NoSQL
장점
•
데이터간의 관계를 정의하지 않음(테이블 간 Join 필요X)
•
RDBMS보다 간단하여 대용량의 데이터를 저장 관리에 용이하다
•
테이블에 스키마가 정해져있지 않아 데이터 저장이 비교적 자유롭다
단점
•
key값에 대한 입, 출력만 지원한다
•
스키마가 정해져 있지 않아 데이터에 대한 규격화가 되어있지 않다
•
데이터를 업데이트하는데 비교적 느리다
스키마(데이터베이스), 테이블 생성, 수정
데이터베이스 생성 및 선택
CREATE SCHEMA(DATABASE) `database_name`; //스키마(데이터베이스) 생성
USE database_name; //데이터베이스 선택
SQL
복사
테이블 생성
CREATE TABLE Table_Name( //Table_Name이라는 테이블 생성
field1 datatype, //필드명, 데이터 타입
field2 datatype,
...
);
SQL
복사
Ex)
CREATE TABLE imformation( //imformation 테이블 생성
ID INT,
Name VARCHAR(10),
Age Int
);
SQL
복사
테이블 수정
//컬럼 추가
ALTER TABLE table_name ADD ex_coulmn varchar(32) NOT NULL;
//컬럼 수정
ALTER TABLE table_name MODIFY COLUMN ex_coulmn varchar(16) NULL;
//컬럼 이름까지 수정
ALTER TABLE table_name CHANGE COLUMN ex_coulmn excolumn2 varchar(16) NULL;
//컬럼 삭제
ALTER TABLE table_name DROP COLUMN ex_column;
SQL
복사
데이터 추가, 수정, 삭제
//데이터 추가
INSERT INTO table_name [column1, column2, ...] VALUES ( value1, value2 ...);
//예시 전체 컬럼
INSERT INTO imformation VALUES (0, `김기헌`, 26);
//예시 일부 컬럼
INSERT INTO imformation (id, name) VALUES (1, `홍길동`);
//데이터 수정
UPDATE table_name SET column1 = modifyvalue1 [, column2 = modifyvalue2 ... ] [WHERE 조건];
//예시 테이블 데이터 전체 수정
UPDATE imformation SET age = 20;
//예시 테이블 데이터 일부 수정
UPDATE imformation SET age = 25 WHERE name = `김기헌`;
SQL
복사
CodeUp 1041 ~ 1050
김상호
오늘은 AWS로 인스턴스를 생성하는 것을 실습해 보았다.
오늘 배운 과정을 다시 살펴보면서 다음번에 만들때는 좀 더 수월하게 할 수 있도록 복습 해보고자 한다.
AWS 인스턴스 설정
1.
나는 이미 만들어놓아서 인스턴스가 있지만 처음에 생성할때는 오른쪽 위의 인스턴스 시작 버튼을 눌러 생성한다.
지역은 서울로 해놓아야 가까운 AWS서버로부터 전송 받기 때문에 해외로 하는 것보다 속도가 빠르다. (가격은 미국보다 조금 더 비싸다. 국내에는 AWS를 대체하는 경쟁업체가 부족하기 때문)
2.
이름은 원하는 이름을 작성하면 되고 나는 Ubuntu로 실습을 진행하였다.
3.
t3.small은 사용해야 쾌적하게 사용 할 수 있다고 한다.
키페어는 가지고 있는게 없다면 새 키페어 생성을 눌러 새로운 키 페어를 만들어 주면 된다.
보안그룹은 생성 해 주었다.
4.
트래픽 허용을 둘 다 체크해주고 고급 세부정보에서
꼭
스팟 인스턴스 요청을 체크해 내 돈이 줄줄 새는 것을 방지하자. (이 옵션을 체크하면 한달에 2만원? 정도 나간다고 한다.)
이렇게 하고 인스턴스 시작을 누르면 인스턴스가 생성된다.
Git Bash 설정
설정 하기 전에
인스턴스 ID를 누르면
1.
DNS주소가 보인다 이것을 복사해준다.
그리고 Git Bash로 가서
ssh ubuntu@(퍼블릭 IPv4 DNS 복붙) -i ~/Downloads/(키페어 이름).pem
Git Bash에 복붙 할때는 shift + insert로 해주면 된다.
괄호는 빼주고 입력 해준 후 sudo su - 를 입력한다. (슈퍼유저 권한)
이렇게 root@~ 라고 나오게 된다.
2.
이 링크를 타고 들어가 명령어를 복사 하는데 이때 $ 표시는 제외하고 복사 한다.
그렇게 되면 설치가 진행된다. 나는 이미 설치가 완료되어 이렇게 알림이 떴다.
3.
mkdir git >> git 폴더 생성
cd git >> git 폴더로 이동
cd docker\_minikube\_kubectl\_install 로 폴더를 이동한 후
sh docker\_install.sh >> docker를 설치한다.
이후 docker run -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=password -d mysql 명령어를 통해 mysql를 설치한다.
docker ps 를 입력해서 설치를 확인 할 수 있다.
mysql 실행
1.
인스턴스에 들어가 보안을 누르고 파란색 링크를 누른다.
2.
인바운드 규칙 편집을 누르고
3.
규칙 추가를 누르고
MYSQL/AURORA, 포트범위 3306번 (mysql에 할당된 포트번호), 0.0.0.0/0 을 입력해준다.
workbench 다운 및 설정
위 링크에 들어가 workbench를 다운받아준다.
설치가 완료 되었으면 더하기 버튼을 눌러준다.
1.
원하는 이름을 적어도 되지만 나는 인스턴스 이름과 동일하게 했다.
2.
dns 주소 복붙
3.
비밀번호 입력인데 아까 docker run -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=password -d mysql
mysql을 설치할때 명령어에서 password부분에 password라고 입력을 했으므로 비밀번호는 password로 입력을 해준다.
이렇게하면 생성이 완료되고
위 화면이 나오면 성공이다!
이가현
MYSQL 환경설정
AWS 스팟 인스턴스 생성하기
Xshell로 aws 연결하고 도커설치
gitbash로 aws연결하고 도커설치
도커에서 mysql 열기
mysql workbench 설치후 열기
환경설정하면서 만났던 오류
파일VS데이터베이스
•
파일 : 저장기능
•
데이터베이스 : 인덱싱, 검색기능, 구조잡아서 저장, 특정부분만 업데이트, 특정조건에만 해당하는 데이터 고치는 기능, 이중화하는 기능, 데이터를 넣기 전에 check하는 기능
ERD를 왜 작성해야하는가?
외래키(Foreign Key)과 기본키Primary Key(PK) 구별
<출판사 id>
– book입장 외래키(FK)
– publisher입장 Primary Key
mysql에 TABLE만들기
1.
스키마 생성
2.
테이블생성
3.
테이블 구성요소 입력
Foreign Key 제약조건 ( 주의하여 사용하기)
INSERT INTO `likelion-db`.`book` (`bookid`, `book_name`, `publisher_id`) VALUES (5, 'Do It! 자바 프로그래밍 입문2', 5);
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`likelion-db`.`book`, CONSTRAINT `publisher_id` FOREIGN KEY (`publisher_id`) REFERENCES `publisher` (`publisher_id`))
publisher(id=5)가 없기 때문에 나는 에러
DB 연습문제
데이터 TABLE 정의서
: 테이블에 대한 설명, 테이블의 속성값들, 그 값들에 대한 설명
•
DB 설계를 하기 위해서는 기획안을 통해 전체적인 데이터의 흐름을 정의
•
각각의 데이터 흐름에 대한 구체적인 정의
임학준
알고리즘 실습
첫번째문제
두번째문제
ERD란
•
개체와 관계모델, 테이블간의 관계를 설명하는 다이어그램
•
DB구조를 한눈에 파악할수 있다(구조도)
•
프로젝트를 설계할 대 ERD설계도를 작성한다
Sublime Text
•
데이터 베이스를 볼수있는 툴(Tool)
•
프로그램이 가볍고 프로그래밍 언어를 지원한다
•
한빛 미디어의 mysql로 배우는 데이터베이스 한빛미디어 예제파일을 수업에 활용한다
최아영
알고리즘 실습
public class Solution {
public int solution(int n) {
int answer = 0;
while (n != 0) {
answer += n % 10;
n /= 10;
}
return answer;
}
}
SQL
복사
import java.util.Scanner;
public class DigitsCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
while (n != 0) {
n /= 10;
count += 1;
}
System.out.println(count);
}
}
SQL
복사
import java.util.Scanner;
public class DigitsSum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
while (true) {
sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}
if (sum / 10 == 0){
break;
} else {
n = sum;
}
}
System.out.println(sum);
}
}
SQL
복사
DataBase
File | DataBase |
저장하는 기능 | 인덱싱 |
검색 기능 | |
구조를 잡아서 저장 | |
데이터를 중간에 끼워 넣는 기능 | |
특정 부분만 업데이트 | |
이중화 |
•
데이터의 중복성 문제를 해결할 수 있다.
•
릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야한다.
•
NULL 값은 허용하지 않는다.
•
키 값이 변하지 않아야 한다.
•
최대한 적은 수의 속성을 가진 게 좋다.
•
관계 데이터 모델의 릴레이션 간의 관계를 표현한다.
•
다른 릴레이션의 기본키를 참조한다.
•
참조되는 값이 변경되면 참조하는 값도 변경된다.
•
참조되고 있는 값은 삭제할 수 없다.
•
NULL 값과 중복 값이 허용된다.
•
다른 릴레이션의 기본키를 참조하지 않고 자신의 기본키를 참조하는 외래키도 사용 가능하다.