DBeaver/실습 17

영화 리뷰 서비스 개발을 위한 SQL문 실습

영화리뷰서비스 개발을 위한 SQL문 실습을 해보자!   1. 회원가입을 위한 쿼리 - 자료화면을 보고 필요한 정보를 입력할 수 있는 퀴리를 만들었다   2. 메인화면을 위한 쿼리 - 영화의 테이블을 가져왔을 경우 컬럼의 정보값중 리뷰와 관련된 정보가 없기 때문에 join을 한다. 하지만 그냥 join 이 아니라 lift join을 해야한다. 왜냐하면 리뷰가 없을 수 도 있는 영화들도 존재할 수 있기 때문이다. 리뷰가 없다고 영화 취급을 안하는건 이상한일이기에 정보가 없더라도 모든 영화정보를 알고싶기때문에 left join을 쓰는 것이다 - 평균값을을 구할때 ifnull을 쓴 이유는 위에 설명했듯 left join을 쓰면 정보값이 없는 정보들도 전부 뜨기때문에 별점의 평균이 없으면 null값으로 나올 것이..

DBeaver/실습 2024.12.05

화면기획서를 보고 SQL문을 작성해보자!

1. 인스타 페이지를 활용한 실습 각 각에 맞는 foreing keys를  커럼에 맞게 설정해주어야 join 을 할 수 있다 포토 아이디가 72번인 사람의, 사진 url 주소, 작성자 이름 , 좋아요 수 를 가져오시오 이 경우에는 photo에서 where 을 통해서 photo_id 가 72 번은 찾을 수 는 있어도 사진의 url, 작성자의 이름 좋아요 수는 알 수 없다. 따라서 이 정보들을 갖고 있는 테이블과의 join이 필요한것이다.  포토아이디에 72번에 댓글을 남기고 싶다라 할 때  insert into 를 활용하면 된다 이것은 추가하는 기능을 갖고 있기 때문에 내가 댓글을 쓰고 입력하면 추가가 되는 것이니깐 insert into를 활용함이 적절하다  photo_id 가 72번의 댓글 리스트경우se..

DBeaver/실습 2024.12.04

foreing keys 연결과 여러 테이블 join , left join실습

1.foreing keys 연결 movie_db의 테이터 베이스안에 table을 만들어 주었다. 하지만 이렇게 여러게의 테이블들은 서로의 정보를 공유하고 있는 상태는 아니기에 이를 연결 시켜주기위해forening keys를 연결시켜 주겠다.        테이벌 컬럼에 들어가서 컬럼생성된 왼쪽에서 3번째에 foreign key 를 누른 뒤 오른쪽 버튼을 눌러 새로생성을 눌러주면 위와 같은 화면이 뜬다 지금 나는 리뷰테이블에 있다라는 걸 알려주는게 1번인것이다 그리고 2번이 속한 박스안은 내가 연결하고 싶은 테이블명을 선택하는 박스이다 위처럼 2번의 user 를 선택했다 3번은 2번에 선택한 테이블의 컬럼명이 나오는 곳이다. 그리고 유저 아이디의 정보를 불러오기 위해서는 유저아이디와 연결시켜야하기에 미리 만..

DBeaver/실습 2024.12.03

join 과 left join 이해와 실습

join 이란 무엇인가?-R(관계)DBMS : MSQL, Oracle, DB2, MS SAL Server-NoSQL(분산처리/ 트위터/증가하는 데이터)join은 RDBMS 와 같은 관계형 데이터이다만약 쿠팡이 있다고 할때 고객이 상품을 주문하려한다면 고객데이터와 그 고객이 주문한 상품의 데이터가 필요할것이다이때 이 모든 정보를 하나의 테이블에 다 집어 넣는다면 중복 데이터가 있을시에 일일히 수정해야하며 만약 물건을 취소했을경우 회원가입까지 없어져서 회원가입을 다시 해야하는 불상사가 발생할 수 있다.우리는 이러한 사고를 방지하기 위해 테이블을 쪼개서 쓰는 것이고 이러한 관계가 관계형베이스 데이타라고 한다그리고 아래는 두개의 데이터를 묶는 과정을 설명한 것이다즉 join은 교집합을 보여준다 생각하면 된다  ..

DBeaver/실습 2024.12.02

날짜 함수 실습(datediff,date_add,dayname,dayweek..등)

아래 시간 함수를 활용한 실습NOW() 지금 날짜 시간 CURDATE() 지금 날짜만CURRENT_TIME() 지금 시간만DATEDIFF 이 날짜와 이날짜를 뺀값TIMEDIFF 이 시간과 이 시간을 뺀값DATE_ADD (날짜에 *일 만큼 더해라) 컬럼명 interval * dayDATE_SUB (날짜에 *일만큼 빼라)컬럼명 interval * dayDAYNAME 영어요일 알려줘DAYOFWEEK 영어요일을 숫자로 알려줘   가장 최근에 구매가 이루어진 책을 찾으시오 이경우 방법을 두가지로 사용할 수 있다 1번째는 정렬(order by)를 활용한 정렬방법이고 2번째는 Subquery를 이용한 방법이다.  평일과 주말로 구분하여 조회하세요 이경우도 방법이 여러개이다 지금까지 배웠던 과정이 이런식으로 다양하게..

DBeaver/실습 2024.12.02

defaylt 값을 활용한 시간 입력

리뷰를 남길때와 같은 경우 시간을 등록하고 싶을때 insert into comment(content, creates_at)values ('최고입니다',now()) 를 쓰면된다 now()가 현재 시간을 나타내는 함수이니깐 그런데 이 now를 매번쓰기 힘드니깐 디폴트에 설정해두면 편하다  위에 처럼 defaylt 값에 now()를 쓴 다음에 저장을 하면  insert into comment(content)values ('최고입니다')  이렇게만 써도 시간이 자동으로 생성된다 마찬가지로 updated_at (수정 날짜)에 defatlt값에 now() on update now()를 써주면 수정된 날짜가 나온다

DBeaver/실습 2024.12.02

if(),case_end,날짜 관련함수 실습

데이터를 가공할때 2가지 상황에 대해 처리하는 함수는 if()라고 한다if(조건, "맞으면 먼저걸로 대처","틀리면뒤에걸로대체") 조건이 예, 아니요 로 할 수 있을때 사용한다 실제로 사용은 보통 이벤트 참여 대상을 뽑을 때 일정금액 이상인 고객은 참여대상이다 아니다를 판단할때 쓴다 ifnull은 null을 다른 값으로 대체한다는 의미로 쓴다 case end 는 조건이 여러개일 때 사용한다 예를 들면 고객들의 등급이 여러개일때 조건에 맞춰 등급을 나타내고싶을 때 쓴다 casewhen   컬럼 조건 then 대체문구wheneles (위조건 이외 이렇게해줘쓰는 곳)end 이렇게 사이에 쓰는데 when 다음에 조건을 입력하고 then(이걸로 대체해줘)"대체문구"    현재날짜와 시간을 조회 now() 현재날짜..

DBeaver/실습 2024.11.29

sub Query 와 Having 의 의미와 활용방법

max() 최대값구하기, min() 최솟값 구하기   함수   페이지수가 가장 긴 책의 제목, 작가이름, 페이지수를 보여주세요 이경우 두가지 방법이 있는데 첫번째는 어제 배운 order by를 활용해 정렬 후 limit 로 원하는 갯수만 불러온는 방법이다 그리고 오늘 새로 배운 내용을 활용하는 방법인데 max값을 구한뒤에 그 값을 where page=(요기) 요기에다가max값구한 식을 여기다가 넣어주는 것이다 이 방식을sub Query라고 한다 두가지 문장을 하나로 만드는 방법! 문장에 문장을 돕는! 서브쿼리! sub Query(서브쿼리 ) 는다른 SQL 문 안에 포함된 쿼리를 말한다. 이를 중첩 쿼리나 내부 쿼리라고도 합니다. 서브쿼리를 사용하면 한 쿼리의 결과를 다른 쿼리의 입력으로 사용할 수 있습니..

DBeaver/실습 2024.11.29

SQL 함수

distinct 는 중복을 제거하는 함수로써 유튜브조회수 중복 시청 표시, 이벤트 조회수 데이터 표시등 정확한 데이터를 알기 위해 주로 쓰는 중복제거용 함수이다 distinct()는 중복을 제거하는 함수이다보통 유튜브 조회수를 늘리기 위해 같은 사람이 여러번 시청하는 걸 막기 위해서나 이벤트 조회수 확인등의 정확한 데이터가 필요하기 때문에 쓰는 함수이다 order by 는 정렬할때 쓰는 함수인데 기본적으로 오름차순이다 그렇기 때문에 order by 컬럼이름 asc에 asc를 생략할 수 있다 그리고 내림 차순은 desc이다 그리고 order by를 쓸때는 반드시  order 띄우고 by를 쓴다  limit()는 단독으로 쓰면 5개만 가져오라는 것이고  limit(숫자1,숫자2)일경우 숫자1에서 부터 숫자2..

DBeaver/실습 2024.11.28

CRUD 문자열 처리 실습

selexct replace(어디에서, 무엇을, 이걸로바꿔줘)from 테이블명 이렇게 쓰면 원하는 답이 나온다 revers(거구로하고 싶음 컬럼명)from 테이블명 select concat(합할거야 이거랑,이거를)근데 이걸 대문자로 만들고 싶어select upper(concat(합할거야 이거랑,이거를))이렇게 앞쪽에 붙이면된다컴퓨터 언어가 처음부터 이렇게 upper부터 있다하더라도 concat 부터 하면서 천천히 해나가는 순서, 절차가 중요하다 숏타이틀 10글자만 나오고 뒤에는 "..."으로 나오게 만들고 author는 이름 두개 컬럼을 함치고 qu~는 원래 숫자 in stock이 붙도록 조회하시오 바꾸고 싶은 내용의 컬럼을 미리 쓰고 하나하나 해결해가면서 확인하면서 오류가 없는지 점검해가면서 하는게 좋..

DBeaver/실습 2024.11.28