SQL 5

VARCHAR 컬럼과 INT 컬럼 비교

SELECT A.컬럼, (SELECT COUNT(컬럼) FROM TEST2 B WHERE A.형식이 VARCHAR인 컬럼 = B.형식이 INT인 컬럼) FROM TEST1 A 이런 식의 쿼리가 있었는데 INT 형식으로 변환할수 없다는 ERROR가 났다. 생각을 해보다가 VARCHAR형식의 컬럼 과 INT 형식의 컬럼을 비교 가능 여부가 헷갈리기 시작했다.. 그래서 공부 차 정리해보고자 한다. CHAT GPT에게 물어본 결과 아래와 같다. * VARCHAR 와 INTEGER 간의 비교는 가능하다. 비교 연산자(=.)를 사용하여 VARCHAR 와 INTEGER의 값을 비교할 수 있다. 그러나 이러한 비교는 데이터 형식의 호환성을 고려해야 한다. 아래의 경우, VARCHAR열과 INTEGER 값을 비교하려고 ..

DB/SQL 2023.06.08

[Oracle] ORDER BY 사용 시, ROWNUM

ROWNUM 을 쓰는 쿼리에서 ORDER BY로 정렬을 하면 ROWNUM이 뒤죽박죽 되어버리는 경험을 한 적이 있을거다. 그럴 경우 아래와 같이 해보자! SELECT ROWNUM, A.* FROM ( SELECT NAME, ID FROM TEST ORDER BY NAME ASC ) A 아래와 같이 ROWNUM을 사용할 시 뒤죽박죽 이유는 SELECT실행 순서때문이다. SELECT ROWNUM, ID, NAME FROM TEST_DATE ORDER BY NAME SELECT 실행순서에 대해 자세한 내용을 확인하고 싶다면 아래의 링크 클릭! https://talking-potato-dev.tistory.com/46

DB/SQL 2023.05.23

[SQL] INDEX 가공

* 인덱스 컬럼은 가공하지 않아야 인덱스를 정상적으로 사용할 수 있다!! * 인덱스 사용이 불가능하거나 범위 스캔이 불가능한 예 1. 인덱스 컬럼을 조건절에사 가공하는 경우 SELECT * FROM USER WHERE SUBSTR(NAME,1,1)="이"; --SUBSTR(컬럼, 시작위치,길이) 2. 부정형을 사용하는 경우 SELECT * FROM USER WHERE F_NAME '김'; 3. IS NOT NULL을 사용하는 경우 SELECT * FROM USER WHERE F_NAME IS NOT NULL; * 인덱스 가공 예 위 1번을 인덱스가 타게끔 수정한 것. SELECT * FROM USER WHERE NAME LIKE '%이%';

DB/SQL 2023.05.10

[Oracle] SQL SELECT 쿼리 실행 순서

* SELECT 쿼리 실행 순서 : SQL 쿼리 실행 시, WHERE / GROUP BY / ORDER BY 절 등 구문을 실행하는데 순서가 존재한다. 실행 순서 FROM / JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 1. FROM / JOIN 절 : 쿼리에서 첫번째 실행 순서는 FROM ! , 테이블 전체를 가져옴. 2. WHERE 절 : FROM절에서 읽어온 테이블에서 조건에 맞는 결과만 필터링 3. GROUP BY 절 : 필터링된 데이터들을 선택한 컬럼으로 그룹핑 4. HAVING 절 : 그룹핑 후 각 그룹에 사용되는 조건절. HAVING절은 각 그룹엥 조건을 걸기 때문에 퍼포먼스가 떨어지므로 주의해서 사용할 것. 5. SELECT 절 :..

DB/SQL 2023.05.10