SEB_BE_43 / 23.02.01 회고

rse·2023년 2월 1일
0

코드스테이츠_BE_43

목록 보기
26/65

오늘

  • SQL 활용

과제

인텔리제이에서 MYSQL을 사용해보자.

일단 MySQL에 데이터베이스를 만든다.

내가 사용 할 데이터베이스는 learnsql이다.

DriverManager 를 사용하면 인텔리제이와 mysql을 연결할 수 있다고 한다.
getConnection 괄호 안에 있는 것들은 다른 패키지에서 지정해준 값이다.

그 지정해준 값에 실제 내 계정값을 넣어야 데이터베이스 접속 가능.

테이블을 만들어줬다.

문제 요구사항에 맞게 코드를 작성해준다.

문제 : user 테이블에서 특정 조건을 가진 데이터를 찾기위한 SQL을 작성해주세요.

  • 조건 : name이 luckykim이여야 합니다.

문제 : 2-8. content의 title과 그 컨텐츠를 작성한 user의 name을 찾기 위한 SQL을 작성해주세요.

  • 저자가 있는 컨텐츠의 title만 찾아야합니다.

문제 : content의 데이터를 추가하기 위한 SQL을 작성해주세요.

  • luckykim이 작성한 컨텐츠를 추가해주세요. 제목과 본문은 자유입니다. (참고: luckykim의 아이디는 1입니다.)

문제 : category의 name이 java인 content의 title, body, created_at을 찾기위한 SQL을 작성해주세요.

content테이블에서 name이란 칼럼은 없으니 category.name을 위해 inner 조인을 해준다.
그리고 where를 통해 'java' 라는 이름을 찾는다.
별칭을 from부터 사용했는데 select에도 별칭을 사용해야 하는 이유는 살행 순서가 select가 마지막으로 실행되기 때문이다.


문제 : teawoongna가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.

public static final String PART3_2_9 = "select count(*) as ContentCount 
from content
join user on content.userid = user.id where user.name = 'teawoongna';";

content테이블에서 모든 칼럼을 count로 세준다. 그리고 teawoongna가 작성한 글을 보려면 user테이블의 name이 필요하므로 user테이블과 inner 조인 해준다.

문제 : 각 user(컬럼명: name)가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.

public static final String PART3_2_10 = "select user.name as name, 
count(content.id) as ContentCount from content right join user on 
content.userid = user.id group by name";

user.name을 찾아와야 하니 user.name을 써주고, as를 이용해서 별칭을 name으로 만들어준다.
그리고 content의 개수를 count로 세고, contentCount라는 별칭을 붙여준다. contnet테이블에서 찾을 것이다. 오른쪽 기준으로 content.userid컬럼과 user.id컬럼을 비교. 즉 user.id를 기준으로 값이 불려지는 것. 그리고 그 값을 기준으로 그룹으로 묶은 뒤 결과 출력.

profile
기록을 합시다

0개의 댓글