# EXISTS

[Oracle] IN, EXISTS, JOIN(+)
"설명을 앞서 예시로 사용할 테이블은 아래와 같다." > ## IN/NOT IN IN in 구문의 경우 입력된 값들 중에서 하나라도 일치하는 것이 있다면 조회가 된다. 예시 드라이빙 테이블이 EMPLOYEE일 때의 결과 드라이빙 테이블이 DEPT일 때의 결과 IN안에 있는 sql문이 OR연산을 한다는 것을 결과만 봐도 알 수 있

[Oracle] 오라클 조인(IN, EXISTS, (+))
조인을 그렇게 많이 봤는데 제대로 이해하지 못했다는 것을 깨달았다. 갑자기 툭 던지면 바로 뽑아낼 수 있도록 오라클의 조인에 대해서 적어보고자 한다. 전 POST에서는 LEFT OUTER JOIN과 RIGHT OUTER JOIN, FULL OUTER JOIN만 다뤘다. 이번 POST에선 좀 더 다양한 형태의 조인을 설명하고자 한다. 이미지 출처 : https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 위와 같은 형태를 IN/NOT IN, EXISTS/NOT EXISTS, JOIN의 형태로 보여주고자한다. (ORACLE 문법으로 ANSI 사용X) 일단 테이블은 전 ORACLE POST와 같이

[Oracle SQL]12일차_23.07.05
오늘의 TIL > 1. 서브 쿼리 사용하기 4(EXISTS와 NOT EXISTS) 서브 쿼리 사용하기 5(HAVING절의 서브 쿼리) 서브 쿼리 사용하기 6(FROM절의 서브 쿼리) 서브 쿼리 사용하기 7(SELECT절의 서브 쿼리) 복습 > 1. 서브쿼리 사용시, not in 사용하면 서브쿼리에서 메인쿼리로 null값이 리턴되지 않도록 주의해야 합니다. 서브 쿼리 사용하기 4(EXISTS와 NOT EXISTS) 짝꿍의 EMP 테이블에는 존재하는데 나의 emp 테이블에는 존재하지 않는 데이터가 무엇인지 확인하려면? minus exists 와 not exists 예제. 부서테이블의 부서번호를 출력하시오! 예제. minus를 이용해서 부서테이블에는 존재하는데 사원테이블에는 존재하지 않는 부서번호 출력 > minus 는 위와같이 두 테이블의 데이터의 차이를 확인하고 싶을 때 사용! db link 이름을 확인하고싶

230705 Oracle SQL 8 [서브쿼리 EXISTS, DB link]
(7월 5일 점심시간 문제) 우리반 테이블에서 남양주에서 사는 학생들과 나이가 같고 통신사가 같은 학생들의 이름과 나이와 통신사를 출력하시오. (출력하고 결과가 같은지 짝꿍과 비교해보세요) non pairwise 방식 pairwise 방식 복습 ※ 서브쿼리 사용시 not in 사용하면 서브쿼리에서 메인쿼리로 null 값이 리턴되지 않도록 주의해야한다. 074. 서브쿼리 사용하기 4 (EXISTS와 NOT EXISTS) 짝꿍의 emp 테이블에는 존재하는데 나의 emp 테이블에는 존재하지 않는

서브쿼리
EMP테이블 DEPT테이블 1. EXISTS 서브쿼리의 데이터가 존재하는가의 여부를 먼저 따져 존재하는 값들만을 결과로반환 2. 다중열 서브쿼리 Pairwise(쌍비교) Subquery: 서브쿼리의 결과값이 '두 개 이상의 컬럼을 반환'하는 서브쿼리 서브쿼리가 한 번 실행되면서 모든 조건을 검색해서 주 쿼리로 넘겨준다. 
230322 DB_SubQuery_02(IN,EXISTS,ANY,ALL)
Sub Query 쿼리 안의 쿼리라는 뜻으로 사전에 추출된 내용에서 재 검색 하거나. 검색된 내용을 가상 컬럼을 만들어 추가 할 수 있다. 즉, 서브쿼리를 사용하는 이유는 가져온 데이터를 재정제 하기 위함이다. IN, EXISTS, ANY, ALL 키워드를 사용할 수 있다. 1. IN '=' 비교만 가능하며 OR 조건의 검색 결과 내용을 가져온다. 서브쿼라가 먼저 동작 된 후 메인쿼리가 동작 된다. EX) select ename, job from emp e where deptno in (2,4); select deptno from dept d where loc in ('LA','boston'); select ename, job from emp e where deptno in (select deptno from dept d where loc in ('LA','boston')); 2. EXISTS 메인쿼리 실행

서브쿼리
서브쿼리를 사용해보긴 했지만, 거의 WHERE문에서 사용했었다. SELECT문과 FROM문은 봐도 헷갈리는 부분이 있어서 이참에 서브쿼리에 대해 종합적으로 정리해보려고 한다. 서브쿼리란? 서브쿼리는 말그대로 메인쿼리에서 서브로 사용하는 또 다른 쿼리문이다. 메인쿼리에 종속적이며 서브쿼리가 사용되는 목적은 메인쿼리에서 최종적으로 필요한 데이터를 조회하기 위한 수단으로 사용된다. 서브쿼리는 더 복잡한 조건을 만족하는 검색이나 연산을 할 때 유용하므로 자주쓰이고 있다. 서브쿼리의 종류 > 중첩 서브쿼리(Nested Subquery) WHERE절에서 사용하는 쿼리로, 서브쿼리 연산자를 사용하여 메인쿼리와 서브쿼리의 데이터를 비교하는 방식이다. 서브쿼리 연산자는 크게 비교 연산자와 EXISTS 연산자로 나눌 수 있다. 1. 비교연산자 비교 연산자는 서브쿼리의 결과값을 사용하여 메인쿼리의 조건식을 만족하는 데이터를 조회한다. 비교 연
SUBQUERY
WHERE SUBQUERY > 상품 중에서 리뷰가 최소 3개 이상 존재하는 상품의 정보만 확인 > '2018년 12월 31일' 이전 사이트에 등록된 상품들에 관한 리뷰 review 테이블의 모든 컬럼들 표시 FROM SUBQUERY : Derived Table > FROM 절에서 작성되는 서브쿼리에서 만들어지는 테이블을 Derived Table이라 한다. = SQL문 안에서만 결과 형식에 따른 서브쿼리 스칼라(scalar) 서브쿼리 단일값을 리턴하는 서브쿼리 WHERE 절에서 =, > 등의 조건 표현식과 비교하는 값 하나의 column에 여러 row들이 있는 형태의 결과를 리턴하는 서브쿼리 해당 서브쿼리는 IN, ANY(SOME), ALL 등의 키워드와 함께 사용할 수 있음 하나의 테이블 형태의 결과(여러 column, 여러 row)를 리턴하
[QueryDsl] 성능 개선(exists, 다중 조건)
1. exists querydsl 에서 exists문을 사용하려면 이렇게 fetchCount를 사용해야하는데 여기에 치명적인 단점이 있다. exists는 데이터 1개만 찾고 결과를 리턴하는 반면 count는 모든 데이터를 조회하기 때문에 데이터가 많아질수록 성능 차이가 난다. 우리의 목적은 데이터 1개만 찾는 것이기 때문에 이것을 보완하는 방법은 fetchFirst를 사용하는 것이다. 주의: 데이터가 없으면 null을 반환한다. 2. 다중 조건 만약 관리자가 회원을 조회한다면 조건으로 이름으로도 할 수 있고, 유저 아이디로도 할 수 있고, 가입 날짜로도 할 수 있고, 회원 상태로도 할 수 있는 선택지들이 있을 것이다. 이름: where name = name 유저 아이디: where username = username 가입 날짜: where joinedDate = joinedDate 회원 상태: where status = sta
Edit Profile POST #02
DB에서의 업데이트가 프론트엔드에 반영되지 않았다. 프론트엔드는 session으로부터 정보를 얻기 때문이다. session은 로그인 할때 한번만 작성되고 있다. 로그인 하고 나서는 session이 아무것도 안하기 때문이다. 로그인 했을때의 user가 그대로 남아 있는거다. 그래서 DB에 있는 user정보를 업데이트해도 session은 업데이트 되지 않는다. 이제 session을 업데이트 해주면 된다. 두가지 옵션이 있다. 하나는 직접 하는거 req.session.user를 해주고 여기에 정보를 넣어준다. userController.js에서 이 방법도 괜찮긴 하지만 별로 보기 좋지 않다. 그리고 나머지도 추가해 줘야한다. 이거 말고도 avatarUrl,socialOnly등 더 있다. 이 정보들도 session에 있다. 그래서 req.session.user가 form의 value들이랑 같고 나머지는
Edit Video # 03
이전 파트에서 마무리 짓지 못했던 걸 이어서 해보도록 하겠다. 그러기 위해서 먼저 findOneAndUpdate()라는 function에 대해 배워 볼거다. https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate 실제로 model에는 할수 있는게 굉장히 많다. 여러가지 들이 있는데 이것들의 차이점은 뭐냐면 예를 들어 findOne을 보면 어떤 조건이든 지정할수가 있다. 제목이 Hello인 영상을 하나 검색 할 수도 있다. 다른 말로는 영상 제목으로 검색 할수 있다는 말이다. 하지만 영상을 ID로만 찾을 거란걸 미리 알고 있다면 findOne을 쓸 필요가 없다. 그냥 findById를 쓰면 된다. 그리고 이미 준비 되어 있다. findByIdAndUpdate()도 있다. 지금 상황에 딱 필요 한거다. 지금 해야 하는 것은 영상의 ID를 여기 `findByIdAnd

SQL_Day 4_서브쿼리
Day 3 복습 중복 제거할 때는 어떻게 할까? 데이터 그룹화는 언제 쓸까? 그룹화한 뒤 총계출산을 하고 싶다면? 총계출산한 자료명을 지정하려면 ? 그룹화한 뒤 조건에 맞게 조회하고 싶다면 ? 집계함수 쓸 때 주의할 점은 무엇일까? 집계함수와 다른 컬럼을 연결하여 나타내고 싶을 떈 어찌할까? 1. 오늘 배운 내용 union, 스칼라 서브쿼리,파생테이블,where절에서 서브쿼리활용, 더불어 Any, All, in, exists까지 배웠다. 파생테이블을 깔끔히 정리할 수 있는 CTE를 배웠다. 그리고 부가적으로 csv를 MySQL로 가져와 활용할 수 있는 법을 배웠다. 2. 이해하기 어려웠던 부분 1)UNION 절 데이터를 합하여 조회하고 싶을 때 쓴다 단 조회할 컬럼명의 개수는 맞춰야한다. UNION 뒤에 DISTINCT나 ALL 써 중복 제거처리를 할 수 있다. 아무 것도 쓰지 않으면 DISTINCT이다.(기본)

TIL 30. 회원가입 email 중복 에러(objects.filter().exists())
회원가입 시 이미 존재하고 있는 e-mail에 대해 중복 에러를 아래와 같이 작성하였습니다. 코드의 내용은 User의 객체에서 email에 해당하는 것만 필터링하여 불러와서 존재하는지 판단하여 존재할 시 중복에러를 발생시키는 작업입니다. 이 방법이 효율적인 이유는 다음과 같습니다. 상위 코드는 DB에 어떤 쿼리도 전달하지 않습니다. DB에 아무런 메시지도 전달하지 않기 때문에 장점으로 볼 수 있습니다. 왜냐하면 DB에 쿼리를 전달하게 되면 웹 애플리케이션을 느려지게 하기 때문입니다. DB의 레코드를 진짜로 가져오기 위해서는 for문으로 쿼리셋을 순회해야하는데 이 경우 DB의 레코드를 실제로 가져오고 장고 모델로 변환되므로 속도적으로 조금 불리할 수 있습니다. 또한 exists()의 경우 쿼리셋 캐시를 만들지 않으면서 레코드가 존재하는지 검사합니다. (쿼리셋에 if문으로 존재여부를 판단하게 되면(True/False) if문 때문에 쿼리셋이 '평가'되고 이에 따라 쿼리셋 캐시에
Using Django querysets effectively
https://blog.etianen.com/blog/2013/06/08/django-querysets/ https://docs.djangoproject.com/en/3.1/ref/models/querysets/#iterator queryset cache evaluation
자바 코드 - 파일이나 디렉토리의 존재 여부
파일의 존재 여부 조사 File#exists() 메서드를 사용한다. 파일 또는 디렉터리가 존재하면 true, 존재하지 않으면 false를 반환한다. File file = new File("test.txt"); if(file.exists()) { ... 파일이 존재하는 경우 } else { ... 파일이 존재하지 않는 경우 }

Oracle - 집합연산자
참고 2020-08-26-02)집합연산자.sql 2020-08-27-01)집합연산자2.sql 집합연산자 여러개의 SELECT문을 연결하여 하나의 쿼리문으로 만드는 역할을 수행 UNION, UNION ALL, INTERSECT, MINUS 조인대신에 의외로 많이 쓰임 UNION: 합집합, 중복1번제거 UNION ALL: 합집합, 중복됨 INTERSECT: 교집합 MINUS: A - B A에서 B를 뺀 나머지부분 제약사항 집합연산자로 연결되는 각 SELECT문의 SELECT절에 사용되는 컬럼의 갯수와 DATE TYPE은 일치해야한다 ORDER BY절은 맨 마지막 SELECT문에서만 사용 가능하다 BLOB, CLOB, BFILE타입의 컬럼에 대하여 집합연산자 사용 금지 UNION, INTERSECT, MINUS 연산자는 LONG형 컬럼에는 사용될 수 없다