생활코딩 DB

DB2 - MySQL (3)CRUD, select 1+1;

finepiz 2023. 1. 16. 00:20

---

15.

https://youtu.be/0pU6_5BQ2Dk

C생성하지 않으면 그 뒤의 것들이 존재하지 않아

R안할거면 왜 C하겠어

=>CR이 특히 중요

 

어떤 분야에선 UD를 죄악시, 범죄시 하기도 해(역사도 그렇고, 회계에서 거래 내역을 지우거나 수정하면 범죄)

UD는 없을 수도 있어.

 

어떤 데이터베이스를 만나든 이 바닥에서 CR을 따져보면 반은 한 것

 

데이터베이스의 본질이 CRUD

 

---

16.

https://youtu.be/75LHpeOQiOs

이렇게 데이터 추가 = CREATE

SQL로는 어떻게 하냐면 : 중요한 건 검색입니다

mysql create row 이렇게 검색하면 되겠죠

 

공식 메뉴얼에선

INSERT라고 써있는데 저걸 쓰면 될 것 같지만 공식 메뉴얼은 무서우니까 좀 만만해보이는 밑에걸로

뭐 이렇게 써있는데 예제를 봅시다

해봅시다

 

./mysql -uroot -p

use opentutorials;

show tables;

저 topic에 데이터를 추가해볼것.

삽입하는거니까 INSERT

어디에? topic이라는 테이블에 INTO topic

그 다음 topic테이블의 컬럼대로, DESC topic; 해보면 구조가 나옴. 이거 참조해서 INSERT문 작성

저 상황은 id컬럼에 값을 지정하지 않을 때 auto_increment가 된다 => id값을 특별히 언급하지 않는다

이런식으로 하나씩

topic뒤의 괄호 안의 컬럼의 이름은 VALUES안에 애들이 무엇인지 알려준다->순서가 같아야 해

created에는 날짜가 들어가는데 내가 2022-... 이렇게 직접 적을 수 있겠지만 NOW()라고 적어주면 된다. 함수야

하나의 행이 영향을 받았다

이게 CREATE야

 

R도 어떻게 하는진 검색하면 돼. 그렇게 찾으면

SELECT라고 앞에 붙이고

topic 테이블로부터 FROM topic

특별한 언급이 없으면 모든 데이터를 가져온다 * 표시

SELECT * FROM topic;

이후로 데이터 더 넣음

 

---

17.

R을 좀 더 자세하게

CUD는 심플해

R은 아주 복잡해질 수 있다

 

모든데이터

SELECT * FROM topic;

 

컬럼 제한하기

스프레드시트에서는 Hide,

sql에선 SELECT ((여기에 projection이라고 하는게 온다)) FROM topic;

projection이란 내가 표시하고 싶은 컬럼들의 목록을 넣는다

적혀져 있지 않은 것들은 숨겨지는 효과

 

SELECT문의 문법을 봐보자. mysql select syntax 검색해서 공식문서를 보면

대괄호는 생략가능하다는 말, 저 하이라이트 만큼 생략 가능

생략 가능하지 않은건 select_expr(ession) 부분 = 이게 아까의 projection이다. 표현돼야할 컬럼들을 나타내는

별 설명은 없었고 컬럼의 목록이 나온다는 말만 함.  ▽레코드엔 컬럼(1+1)을 어딘가에 넣은 결과(2)가 나오네?

 

select 1;할 때 from을 쓰지 않았던 것처럼 아래로는 다 생략 가능

 

WHERE

author의 값이 egoing인 행만 갖고 올 수 있다

스프레드시트는 GUI로 잘 하면 되고

FROM 다음에(위치가 중요)

 

ORDER BY

스프레드시트에서 하는거 한번 보여주시고

WHERE뒤에 ORDER BY하고 컬럼 이름.. 등 여러가지가 있는데(공식문서에)

->엔터쳐서 좀 더 편하게 봐볼까요 하다가 실패하고 저렇게 되고 그냥 해야겠다 하심

ORDER BY id값을 기준으로 DESC

 

스프레드시트는 65000개 쯤만 데이터를 넣을 수 있어

->아무리 많은 데이터를 넣어도 화면에 출력하는게 문제가 안된다

 

우리의 MySQL은 데이터를 1억, 10억건 넣을 수 있어

->10억건의 데이터가 저장된 상태에서 SELECT * FROM topic; 하면? 컴퓨터가 멈춘다

 

그런 문제를 해결하기 위해 데이터를 가져올 때 제약을 건다. 맨 끝에 LIMIT 2;

 

DB를 잘한다 = SELECT문을 필요에 따라 잘 사용하는 것.

SQL도 심오하게 들어가면 복잡하고 어려워

 

검색해서는

컬럼 이름 바꾸기

select 1+1의 컬럼 이름을 합계로 바꾸기

where = 여기에 or 개념 넣기

정렬하고 또 그 안에서 다른걸로 정렬하기

LIMIT을 이용해서 페이징 기능 만들기

이런것들을 할 수 있어

 

---

18.

UPDATE

검색 : sql update mysql 이런식

assignment_list는 밑에 보니까

assignment를 col_name = value, 컬럼의 이름은 값

이라고 하는 세트로 적어주면 된다고 돼 있다

 

UPDATE에 테이블 이름을 적고 SET하라!

이러고 엔터치면 모든 행들이 바뀜(재앙)

누구를 업데이트할건지 지정하는게 WHERE

 

---

19.

DELETE

검색 : sql delete in mysql

꼭 들어가야 하는건 tbl_name

가장 중요한 건 WHERE문, 빠뜨리면 모든 행이 삭제된다.

DELETE FROM topic;만 하면 큰일 난다구요~

 

---

20.

https://youtu.be/_LpWcVkTytU

여기가 여기까지 하고 중단할 지, 또 새로운 길을 찾아볼 지 결정하는 좋은 지점

기술을 만나면 그 기술에서 본질과 혁신을 원심분리하려고 노력합니다. 2개를 쪼개 놓으면 생각과 판단하는데 도움

우린 DB중에서 RDB를 배우고 있어

 

Database라는 말 자체가 본질이라고 생각합니다. DB라면 관계형이건, 객제지향이건, 그래프DB 건 상관없이 공통적으로 공유하고 있는 특징이 본질이겠죠?그것은 CRUD. CRUD를 갖고 있다면 DB라고 봅니다.

교양인, 경제적인 공부는 여기까지다.

 

이후부터는 기하급수적으로 어려워져. 나중에 필요할 때 배우면 된다

 

RDB와 다른 DB가 왜 구분되는지, R이라는 말의 의미를 살펴볼 것

혁신은 항상 어려워 복잡하고

하지만 관계형 데이터베이스를 접할 환경에 놓여있지 않은 상태에서 RDB를 접했기 때문에 어려운것일 수도 있어

CRUD만으로 어렵고 복잡한 문제가 생겼을 때 해결해줄 수 있는 좋은 기술이 R이야