210128 목 TIL

bongf·2021년 4월 7일
0

지난TIL

목록 보기
3/4

티스토리에있던 TIL을 복사해왔다.
티스토리에서 작성했던 내용을 검색하면, 이 벨로그에 복사한다. ( 나중 검색, 누적학습을 위해)

Done


Learned

자바는 pass by value

  • 210216 호눅스 강의 듣고 추가
    • 생각보다 쉬운 개념이었다. pass by value
      • 참조변수를 넘겨줄 때에도, 값 자체를 넘겨줄 때에도 자바는 그 값을 넘겨주는 거잖아. 참조변수에 저장되어 있는 주소'값'을 넘겨주는 것. 그러니까 다 값을 넘겨주는 것
  • 0221 다시 정리하여 추가 https://bong-f.tistory.com/198

Docker & MySQL

도커로 mysql 설치

http://jmlim.github.io/docker/2019/07/30/docker-mysql-setup/

  • 도커 버전 확인 docker --version

  • 도커 이미지 확인 docker images

  • mysql 태그 이미지 다운 docker pull mysql:5.7

  • docker 포트 포워딩 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name bongf-mysql -v /Users/bongf/java2:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci에서 -p 3306:3306의 의미

  • docker run -d -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=password --name mysql이름 -v 경로 mysql:5.7 하나 하나에 대한 의미 https://mungto.tistory.com/328 에서 자세히 설명해줌


에러 발생

the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

MySQL접속

  • winpty decker exec -it bongf-mysql bash 로 도커 왔으면 mysql -u root -p 로 sql 들어가기
    • u (user의 약자) -u root 하면 루트 사용자

사용자 만들어서 모든 권한 갖기
CREATE USER 'bongf'@'%' IDENTIFIED BY 'password';

  • @'%'는 외부 접근이 허용하도록 하는 user
  • @’localhost’는 해당 컴퓨터에서만 접근 가능하다는 의미
    • @'localhost'로 user생성시 워크벤치에서 접근 안된다

GRANT ALL PRIVILEGES ON *.* TO 'bongf'@'%';

  • 생성한 유저에 모든 권한 부여하기 (root계정은 두고 일종의 admin 계정 만드는 것)
  • *.* 는 모든 권한

flush privileges

환경변수 설정 https://javacan.tistory.com/entry/docker-start-3-port-env-local-storage

특정상황 빠져나가기 ctrl c

utf8 설정.

SQL 문법과 개념은 생활코딩에서

https://bong-f.tistory.com/136
https://www.youtube.com/watch?v=h_XDmyz--0w&feature=emb_logo
https://velog.io/@bongf/codesquad-210128-Learned-database

개념

  • 데이터들을 모아 > 표를 만들고 > 그런 표들을 묶어 놓은 것이 데이터베이스(=스키마) > 이 스키마들이 저장된 곳 데이터베이스 서버
  • 웹브라우저(웹 클라이언트)와 웹서버가 있듯 데이타베이스 클라이언트와 서버가 있다.
    : 클라이언트는 MySQL 모니터 (우리가 명령어로 다루었던) 실제 데이터는 서버에 저장된다

실습

  • CREATE DATABASE 데이터베이스이름
    : 데이터베이스 생성
  • DROP DATABASE 데이터베이스 이름
    : 데이터베이스 삭제
  • SHOW DATABASE
    : 생성된 데이타베이스 보기
  • USE 데이터베이스명
    : 커서 창 안에는 mysql> 이라고 똑같이 뜨지만 이제 mysql은 내가 내리는 명령을 내가 만든 pratice1이라는 데이터베이스에 처리할 거야
  • CREATE TABLE 테이블명{
    아이템이름 조건들...,
    아이템이름 조건들...,
    ...
    PRIMARY KEY(아이템이름);
  • DESC 테이블명 하면 만든 테이블의 구조가 나온다
  • INSERT INTO 테이블명(title,descrtiopn 값을 바꿀 column 값) VALUES('hello'각 column 값에 들어갈 진짜 값)
    : 데이터 넣기
  • SELECT
    : SELECT * FROM 테이블명;
    : 모든 데이터 가져오기
    : SELECT id,title(실제column명) FROM 테이블명;
    : 원하는 column 만 가져오기
    : SELECT id,title(실제column명) FROM 테이블명 WHERE author='bongf';
    • 원하는 column들 가져오는데 조건 달아주기 특정컬럼=값
      : SELECT id,title(실제column명) FROM 테이블명 WHERE author='bongf'ORDER BY 컬럼명:
      : 원하는 column들 가져오는데 조건 달아주기 + 정렬하기
      : SELECT id,title(실제column명) FROM 테이블명 WHERE author='bongf'ORDER BY 컬럼명 DESC
    • 원하는 column들 가져오는데 조건 달아주기 + 반대로 정렬하기
      : SELECT id,title(실제column명) FROM 테이블명 WHERE author='bongf'ORDER BY 컬럼명 DESC LIMIT 3;
    • 원하는 column들 가져오는데 조건 달아주기 + 반대로 정렬하기 한다고 해도 너무 데이터 많아 컴 에러 날 수 있으니 특정 개수 3개만 가져오기
  • 데이터베이스 핵심은 SELECT
  • UPDATE
    : UPDATE 테이블명 SET 컬럼명="바꿀값', 컬럼명2='값'
    : 해주면 해당 컬럼들의 값이 일괄적으로 전부 싹 다 바뀜
    : UPDATE 테이블명 SET 컬럼명="바꿀값', 컬럼명2='값' WHERE id=2;
    : pk 등으로 실제 바꿀 값 지정해주기
  • RENAME TABLE 테이블명 TO 새테이블명;
    : 테이블 이름 바꾸기
  • join
    : 여러 테이블을 합쳐 보여줄 수 있다.
    : 한 테이블에 다 담기보다 관련 있는데이터들을 묶어주기 그 테이블들끼리 연결해주는 것이 데이터 관리에 용의하다.
    : 하지만 그 데이터를 볼 때는 합쳐진 버전으로 보고 싶으니 join 사용
    : SELECT * FROM 테이블명1 LEFT JOIN 테이블명2 ON 합치는기준되는 컬럼 = 합치려는 기준되는 컬럼2;
    : 근데 저러명 똑같을 값을 가진 두 컬럼이 다 보이니가 SELECT과 FROM 사이에 보고싶은 컬럼명만 써준다. (두 테이블의 커럶 이름이 같은 경우 table.column으로 구분해줌 앞에 테이블명을 붙여서

DDL DQL

  • DDL Data Definition Language 데이터베이스 정의 언어
  • DQL Data Query Language
  • 위에서 실습 안해본 것
    : TRUNCATE
    • 기존에 사용하던 테이블의 모든 로우를 제거한다. 단 구조는 남고 데이터만 사라진다(DROP은 구조 자체가 사라진다)
    • 출처 : https://wikidocs.net/4021
      : COMMENT
    • 주석처리 -- 붙이기sql 문법
  • SQL decimal data type : dec(10, 2)의 경우 10자리 수를 표현할 것이고 소수점 뒤에 2자리까지 표현 (10자리에 소수점 뒤의 자리까지 포함된 자리수) https://www.sqlshack.com/understanding-sql-decimal-data-type/

Bad

  • 미션하다가 기본서 공부를 못했다

Good

  • 점심에도 산책을 한 것

Feeling

  • 멋직에서도 제일 헤맸던 강의가 데이터베이스 쪽이었는데 그래도 그 때보단 쉽게 했던 것 같다. 그 때는 안드로메다로 갔었는데 지금은 우리은하에는 온 느낌. (지구까지는 아직 많이 멀었다)
  • 요즘 시간이 진짜 빨리간다. 눈뜨면 일주일이 다 가있는 기분
profile
spring, java학습

0개의 댓글