[내배캠 Java 6기] SQL 기본 명령어 & 미니프로젝트 문제 해결

ekkkyo_j·2024년 7월 17일

[내배캠 Java 6기] TIL

목록 보기
3/38

1. SQL 명령어

📌 기본 SQL 명령어

select 가져올 항목
from 항목을 가져올 db
where 조건

📌 <>

select *
from customers
where gender<>'male'

👉🏻 select * : 모든 row 가져오기
👉🏻 from customers: customers라는 database에서
👉🏻 where: gender가 'male'이 아닌 조건에서만
👉🏻 <>: 같지 않다

📌 between

select *
from customers
where age between 21 and 23

between A and B A, B을 포함하여 그 사이값

📌 in

select *
from customers
where age in (21, 25, 27)

age가 21, 25, 27인 data만 가져오겠다.
in (항목1, 항목2, ...): age가 항목들과 일치하는 경우

📌 like

select *
from customers
where name like ‘시작문자%’
				‘%포함문자%’
				‘%끝문자’

b로 시작하는 이름 가져와라
b를 포함한 이름 가져와라
b로 끝나는 이름 가져와라

📌 count ⭐️

select count(distinct pay_type) as count_of_pay_type
from payments

Payments db에서 pay_type이 몇 개인지 ex) card, cash 가 있으면
pay_type은 2개가 된다.

📌 min, max

select min(quantity) min_quantity,
       max(quantity) max_quantity
from food_orders

quantity의 최소값을 min_quantity의 별명으로 가져와라
quantity의 최대값을 max_quantity의 별명으로 가져와라

📌 sum, avg

select sum(price) sum_of_price
		avg(price) avg_of_price
from food_orders

price의 모든 합을 sum_of_price라는 별명으로 가져와라
price의 평균을 avg_of_price라는 별명으로 가져와라


2. 프로젝트 문제점 해결

👿 문제점 1
: 우리의 프로젝트 repo를 등록한 팀장님의 개인 repo에 팀원들을 collaborators로 추가를 하면 팀원들은 프로젝트 repo의 settings를 관리할 수없다.

👍🏼 해결방안 1
: organization을 만들고 거기에 팀원들을 추가하여 admin 권한으로 owner 권한을 주어야 settings에 접근할 수 있다.

👿 문제점 2
: 그런데 옮기고 나니까, index.html 파일은 잘 실행이 되는데 personpage.html에 접근하려고 하니까 404 에러가 발생하였다.

❓ 404 에러란?
404 오류는 페이지가 존재하지 않거나 올바른 경로에 파일이 없을 때 발생한다.
즉, 저 페이지가 없거나 다른 곳에 있다는 뜻이다.

👍🏼 해결방안 2
1. https://idle-project.github.io/we_are_i/personpage.html?userKey=QzGiqnvXryvm1wSey2GY
2. https://idle-project.github.io/we-are-i/personpage.html?userKey=QzGiqnvXryvm1wSey2GY
위의 두 링크의 차이점이 보이는가?
-를 쓰느냐 _를 쓰느냐의 차이이다.
previous repo: we_are_i
new repo: we-are-i
we_are_i를 쓰면 페이지가 존재하지 않다는 404 에러가 발생한 것이다...

👿 문제점 3
: firebase config 설정 초기화를 하다가, try-catch 구문이 있을 때와 없을때 내가 짠 코드가 아예 작동이 안되고 되고 하는 문제가 발생하였다.

        // Firebase 인스턴스 초기화
        const app = initializeApp(firebaseConfig);
        const db = getFirestore(app);

다음과 같이 선언한 경우 나의 방명록 등록, 보여주기 코드가 잘 작동한다.

      // Firebase 인스턴스 초기화
      try {
        const app = initializeApp(firebaseConfig);
        const db = getFirestore(app);
      } catch (e) {
        console.log("페이지 오류 발생 : " + e.getMessage());
      }

다음과 같이 선언한 경우 나의 코드는 작동하지 않았다.

👍🏼 해결방안 3
global, local 변수의 문제이다.
첫번째 코드와 같이 global로 선언을 하면 이후의 나의 방명록 코드에서 app, db를 잘 사용할 수 있지만,
두번째 코드와 같이 선언을 하면 try { ... }안에서 app, db에 값이 할당되므로 {} 밖에 있는 나의 방명록 코드는 app, db 값을 읽어올 수가 없다.
즉, try{...}안에서 할당된 애들은 그 안에서만 효력이 있는 것이다.
이를 local이라고 한다.

👿 문제점 4
script 코드

$("#postGuestBook").click(async function () {
					...
})();

body 코드

 <button id="#postGuestBook" type="button" class="btn btn-primary">등록</button>

위의 코드대로 한다면 등록 버튼은 작동하지 않는다.

👍🏼 해결방안 4
되게 바보 같은 실수였다.

 <button id="#postGuestBook" type="button" class="btn btn-primary">등록</button>
 <button id="postGuestBook" type="button" class="btn btn-primary">등록</button>

두 코드의 차이점이 보이는가?
id값에 #을 붙이고 안붙이고의 차이인데, id 값을 줄때에는 #을 넣지 않아도 된다. 추후 script 코드 상에서 이 id에 기능을 넣거나 할 때, id를 지정할 때 $("#postGuestBook") #은 postGuestBook이라는 것이 id임을 표시하는 것이기 때문이다. 이 # 하나 오타로 1시간을 헤메었다...

profile
게으르지만 성실히 공부하기^_^

0개의 댓글