DBeaver 22

영화 리뷰 서비스 개발을 위한 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

sub Query, Having,If함수,Case_end, 날짜관련함수 이론정리

서브쿼리의 유형(퀴리를 한번더)단일 행 서브쿼리: 한 행을 반환, 단일 행 연산자(=, >, HAVING 기본 개념(그룹바이에서 만든걸~해줘)정의SQL에서 그룹화된 데이터에 조건을 적용하는 절GROUP BY 후에 사용되는 필터링 조건주요 특징집계 함수와 함께 사용WHERE와 달리 그룹 레벨에서 조건 적용집계된 결과에 대한 조건 설정 가능주요 사용 상황그룹별 집계 결과 필터링조건을 만족하는 그룹만 선택복잡한 데이터 분석에 활용 case_end 함수(조건여러개일때)SQL의 CASE 문은 조건에 따라 다른 결과를 반환하는 제어 흐름 구조입니다. CASE 문의 끝을 나타내는 키워드는 'END'입니다. 'END CASE'는 저장 프로시저나 함수에서 사용되는 CASE 문의 종료를 나타냅니다3. CASE 문의 기본 ..

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함수는 주로 중복된 결과를 제거하고 고유한 값만 반환하고자 할 때 사용됩니다 특정 컬럼의 고유한 값 조회: 예를 들어, 사용자의 이메일 목록을 중복 없이 조회할 때 사용합니다고유한 데이터 조회: 제품 카탈로그, 고객 목록, 이메일 주소 목록 등에서 중복 없이 고유한 값을 추출할 때 사용합니다집계 함수와 함께 사용: 예를 들어, 각 고객의 구매 건수를 계산할 때 SELECT DISTINCT customer, COUNT(*) AS "구매건수" FROM selling GROUP BY customer와 같이 사용합니다 ORDER BY(정렬)ORDER BY는 실무에서 다양한 상황에서 자주 사용됩니다:사용자 인터페이스에서의 정렬:게시판의 글 목록을 최신순으로 정렬상품 목록을 ..