Today
1. 자바 스레드 or nqtt, 깃허브
assignment
1.파이썬 성적관리 - 자바 메인 하나에 풀기
review : fstring, function_args_exam2, 클래스 예제1, join, mro, file_test1
깃허브 계정 2개, DB연동
io, jdbc 자바로 웹을 연동시키는 것
FileCopy1 filereader와 writer를 사용해서 복사해보기
FileCopy2 while문 위에 아예 조건을 한번에 설정
시간 복잡도 시간을 아끼기 위해서 c와 c++보다 더 걸림 Scanner로 읽는거 BufferReader가 효율적이다
보조스트림, Buffered 스트림 - 배열을 추가해 작업속도가 훨씬 빠름, 원본이랑 관계가 없음
readLine() : 한줄 읽기
BufferedReader, BufferedWriter = 리더는 파일이 있을 경우 읽어오거나 복사, writer는 파일이 없을 경우 파일을 만드는 것
정제를 잘해야함. trim등 공백 제거를 잘해야함.
Prob2
PrintWriterTest
TryWithResourceTest
통신 - thread



main이라는 브랜치가 제공됨(중요), 충돌이 일어날 수 있어 옛날엔 마스터
브랜치 : 실제 작업하는 작업 공간
git브랜치 전략이 있음
assignment
1.파이썬 성적관리 - 자바 메인 하나에 풀기
review











안될 시





































빨간색 상자 버튼 만들어짐 - 클릭

create pull request 클릭

merge pull request 클릭 or Close pull request

이 화면 뜨면 끝

github의 레포지토리랑 이클립스의 파일이 같이 올라간걸 볼 수 있음

이클립스에도 read.me 파일이 있음




main 체크아웃 하고 master 삭제 (알아서 복사됨)

main만 남음

github가서 master 삭제

master 삭제

삭제된거 확인

main 에서 main 가는거 조심
이제 팀원 차례







.git 확인 로컬 저장소 생성

팀장껄 가져옴

작업 하기 위해 불러옴


새로운 브랜치를 생성 (나중에 삭제, 메인 브랜치에서 진행X)

이름 설정 - 나중에 삭제할거지만 나중에 협업 할때는 로그에 남아서 알아보기 쉽게 적어야 함.

패키지와 클래스 생성(변경된것을 확인하려고 임의로 넣음)

staging에서 add와 commit해서 로컬저장소에 올리고

내 원격 저장소에 올리는 작업이므로 push하면 됨. fetch랑 merge를 할 이유가 없음(싱크 맞출필요가 없어서)
내 원격 저장소 확인

gitTest누르고 push

github가서 request
request 하면 팀장님에게 요청됨

upstream : 팀장님의 원격저장소에서 나의 로컬저장소로 가져오기 위한 작업
upstream 하는 방법


assignment
월요일까지 - 하나의 사이트를 정해서 영화(영화아이디) 같이 작성해보기
오늘 과제 p103 마켓DB
1.파이썬 성적관리 - 자바 메인 하나에 풀기
review
SQL
데이터베이스: 기업이나 조직에서 필요한 데이터를 저장해 놓은 데이터 집합
DBMS (Database Management System)
데이터를 관리하는 시스템, 데이터의 유지보수나 보안을 유지할 수 있도록 제공되는
소프트웨어 DBMS를 이용해서 데이터를 입력, 수정, 삭제, 조회하는 일들을 처리할 수 있다.
DBA(Database Administrator)
데이터를 관리하는 업무를 담당하는 사람, 데이터 설계, 인덱싱, 튜닝, 백업.....
2) DBMS의 장점
무결한 데이터 유지
데이터를 공유
데이터의 일관성을 유지
중복을 최소화할 수 있다.(관계형데이터베이스의 특징)
3) 관계형데이터베이스
mysql, oracle, 관계형 데이터베이스
데이터를 관리하는 최소단위는 테이블로 2차원 표의 형태
데이터를 처리하기 위한 명령문을 사용
SQL의 약자 : ?
테이블(Relation), 컬럼(attribute), 레코드(tuple)
테이블의 무결성이나 작업의 편의성, 공간의 최소화를 위해 테이블을 나눠서 관리한다.
테이블을 분리하는 것을 테이블정규화라 한다.
테이블에서 레코드를 구분하는 컬럼을 기본키라 한다.(pk - 기본키는 중복이 없고 반드시 데이터가 있어야 한다.)
테이블 정규화 후에 기본키 테이블의 기본키를 참조해서 쓰는 테이블을 외래키 테이블이라 하고 이런 컬럼을 외래키(fk)
4) SQL
데이터의 조회, 수정, 삭제, 입력에 사용되는 언어
DML (데이터조작어): insert, update, delete, select
DDL(데이터정의어) : create, alter, drop , rename
DCL(데이터제어어) : grant, revoke
TCL(트랜잭션처리어):commit,rollback
Query(데이터조회):select
영화(영화아이디. 영화면, 사진. 정보 가격 장르 감독 제작사 배우
영화배우(아이디, 배우, 영화아이디)
=> 여러 데이터가 텍스트로 들어가는 경우 json형식, 로 구분
mysql명령
계정접속 -> 데이터베이스 접속 -> 테이블 사용
1) mysql접속
mysql - u 계정 -p 패스워드 데이터베이스명
mysql - u 계정 -p 패스워드
mysql - u 계정 -p 데이터베이스명
=> root 계정으로 접속
=> -p만 입력하면 패스워드를 입력해야 함
ex) mysql -u root -p
데이터베이스 관련 명령어
mysql을 설치하면 기본으로 제공되는 데이터베이스, mysql을 실행할 때 사용하는 설정 값이나 기본로그에 관련된 데이터
information_schema : db의 메타데이터 보관(테이블, 컬럼타입, 접근권한정보...)
performance_schema : db관련 여러 작업을 모니터링할때 사용(락, 싱크로문제 모니터링)
sys : mysql의 실행 이력(유저, 호스트, 세션정보)
mysql : 시스템데이터베이스로 mysql을 운영할때 필요한 정보(권한, 프로시져, 유저정보....)
1) 데이터베이스 목록 확인
show databases
2)현재 접속중인 데이터베이스를 확인
select database()
3) 사용자정의 데이터베이스를 생성
create database 데이터베이스이름;
4) 사용할 데이터베이스 선택
use 데이터베이스명
[미션1]
계정을 생성한 후에 사용할 수 았는 권한해야 한다.
권한은 root 계정에서 정의
root계정은 보안상의 이유로 localhost로
[형식]
grant 권한list on 데이터베이스.테이블 to 계정
=> 권한list를 계정에게 부여(데이터베이스에서만 사용할 수 있는 권한을 부여)
1) 특정 계정의 권한을 확인
show grants for mydb@localhost
mydb -> 계정, localhost -> 호스트
2) 현재 접속한 계정의 권한을 확인
show grants for current_user
3) 권한부여
[모든권한]
grant all privileges on 데이터베이스.테이블명 to sample@localhost
grant all privileges on mytestdb.* to sample@localhost
=> mytestdb데이터베이스의 모든 테이블에 대해서 모든 권한을 부여
[특정권한]
grant insert,update on mytestdb.emptest2 to sample@localhost
-> 권한리스트 --> 데이터베이스.테이블명
mydb@localhost계정이 mytestdb데이터베이스의 emptest테이블에 대해서 insert와 select할 수 있도록 권한을 부여
[미션]
sample계정을 localhost로 생성하고 mytestdb데이터베이스의 emptest2테이블에 insert,update권한을 부여
insert into emptest values('bts2', '1234');
추가 후 작업상태 확인
update emptest
set pass = '2345'
의 실행확인
실행확인
select * from emptest2
2) 생성된 계정확인
3) sample계정으로 접속 후 현재 계정의 권한을 조회
=> 실행결과 캡쳐 후 제출
예제 1
[시나리오]
1. mydb - 모든권한을 부여
2. sample데이터베이스 만들기
3. emp테이블을 생성
dept테이블을 생성
4. test계정을 만들고 emp테이블에 select명령문을 실행할 수 있는 권한만 부여
5. test계정의 권한이 제한되는지 확인
6. 다시 작업 권한을 부여하고 테스트하기
=> root계정으로 접속해서 test계정에 insert권한을 지정
접근이 가능한지 확인하기(sample데이터베이스의 emp테이블에 대해서만)
6. select
-> sql문은 대소문자를 구분하지 않는다.
-> sql명령문의 끝에는 ;을 추가하기
-> select명령문에서 select절 뒤에 *을 추가하면 모든 칼럼을 조회하겠다는 의미
1)기본select
[구문]
select 컬럼명1, 컬럼명2....
from 테이블명1, 테이블명2....
-> 컬럼과 컬럼, 테이블과 테이블을 구분하기 위해서 ,(콤마)를 이용해서 구분
select empno, ename, hiredate, sal
from emp
-> 컬럼,테이블 별칭(alias)을 사용할 수 있다. 별칭을 사용하면 대신에 컬럼명 처럼 표시된다.
select 컬럼명 as alias
from 테이블명
or
select 컬렴명 alias
from 테이블명
-> 함수나 연산식(사칙연산)을 컬럼에 정의할 수 있다.
-> alias에 특수문자나 공백을 포함하고 싶은 경우""(큰따옴표)로 묶어서 정의
assignment
review
assignment
--
당근마켓 테이블과 값
SQL