이런 오류가 날땐 아래와 같이 해결하면 된다.

 

 

 

 

 

 

 

window > 환경 변수 편집

 

 

 

 

 

 

 

 

 

 

고급 > 환경 변수

 

 

 

 

 

 

 

 

 

 

시스템 변수 > Path > 편집

 

 

 

 

 

 

 

 

 

 

 

 

 

새로 만들기 > MySQL가 설치된 bin 의 폴더 추가 후 확인 클릭

설치 시 따로 건들지 않았다면 Program Files 하위 디렉토리에 있다.

 

 

모두 저장 후 cmd 창도 껐다 다시 열기

 

 

 

이제 잘된다!

 

 

 

 

 

 

'공부 > My SQL' 카테고리의 다른 글

oracle 하루 이전 날짜 구하기  (0) 2022.05.25
oracle json value 추출  (0) 2022.05.12
WITH AS (CTE)  (0) 2021.03.08
Select Create Table, Insert Ignore INTO.., ON DUPLICATE KEY  (0) 2021.03.02
뷰, 스토어드 프로시저, 트리거  (0) 2020.12.12
1
2
SELECT TO_CHAR (SYSDATE - 1'yyyymmddhh24miss')
  FROM DUAL
 
cs

 

1
2
  SELECT json_value (column_name, '$.name') AS VALUE
    FROM tbl a
 
cs

column_name 컬럼에 

 

{

 "name" : "홍길동",

 "age" : 25

}

 

이런 json이 들어가있으면

 

위의 VALUE 에는 홍길동이 출력된다.

 

키가 없더라도 오류가 나지 않고 빈칸이 출력된다.

CTE

CTE 란 Common Table Expression 이다.

CTE는 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되던 것을 대신할 수 있으며 간결하게 보여질 수 있다.

 

CTE는 비재귀적 CTE와 재귀적 CTE 두 가지가 있다.

 

비재귀적 CTE

1
2
3
4
5
6
7
WITH CTE_테이블이름(열 이름)
AS
(
    <쿼리문>
)
 
SELECT 열1, 열2 FROM CTE_테이블이름 ;
cs

쿼리문에 대한 것을 CTE_테이블로 정의해놓고, SELECT 문에서 CTE_테이블을 활용한다.

 

 

 

 

1
2
3
SELECT userid AS '사용자', SUM(price*amount) AS '총구매액'
  FROM buyTBL 
  GROYP BY userid;
 
cs

이 쿼리의 조회 결과가 아래와 같고,

 

 

 

총구매액을 내림차순으로 정렬하고 싶을 때, 쿼리 뒤에 ORDER BY 를 붙이는 방법 대신, CTE 방법을 이용하면 다음과 같다.

 

1
2
3
4
5
6
7
WITH abc(userid , total)
AS
(
    SELECT userid, SUM(price*amount)
    FROM buytbl GROUP BY userid
)
SELECT * FROM abc ORDER BY total desc;
cs

AS () 안에서 조회 한 buytbl 의 userid, SUM(price*amount) 가 각각

abc 테이블의 userid, total 열로 설정이 된다.

 

이때 주의할 점은 WITH ( 1, 2, 3... ) 의 열 개수와 AS ( SELECT 1, 2, 3... ) 의 열 개수가 같아야 한다.

이 쿼리의 조회 결과는 아래와 같다.

buytbl 을 ORDER BY 한 결과와 같다!

 

 

>>여러 개의 CTE 를 사용한 예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WITH cte_userTBL(addr, maxHeight)
AS
(
    SELECT addr, MAX(height)
    FROM usertbl
    GROUP BY addr
),
cte_addr(addr, height)
AS
(
    SELECT addr, height
    FROM usertbl
    GROUP BY addr
)
SELECT AVG(A.maxHeight*1.0) AS '각 지역별 최고키의 평균' , B.addr FROM cte_userTBL A, cte_addr B;
cs

 

+ Recent posts