전체 글

공부한거 대충 끄적이는 블로그...
❌이전글/이전글

ORACLE - 그룹 바이(GROUP BY) (1)

그룹바이를 정리해보고 싶었다. 그래서 정리해봤다. 먼저 그룹바이를 알기 전 SQL 실행 순서를 알아야 한다고 배웠다. SQL 실행 순서 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY Group by 란? 데이터를 그룹화하는 문법, 값은 값을 가진 데이터끼리 모으는 것 GROUP BY 컬럼이 아니면 집계함수로 표현해야한다 GROUP BY 컬럼이 아니면 SELECT 절에서 집계함수를 사용하지 않으면 에러가 난다 SELECT * FROM EMP GROUP BY DEPTNO ---------------- SQL Error [979] [42000]: ORA-00979: GROUP BY 표현식이 아닙니다. 테스트에 사용한 데이터 오라클에서 주는 SCOTT스키마를 사용..

❌이전글/이전글

오라클(ORACLE) - FULL OUTER JOIN ANSI에서 오라클로 변환

ANSI FULL OUTER JOIN표현을 오라클 문법으로 표현해보자! #테스트를 위한 데이터 준비! WITH EMP1 AS ( SELECT 1 A, 2 B, 3 C FROM DUAL UNION ALL SELECT 2 A, 2 B, 3 C FROM DUAL UNION ALL SELECT 3 A, 2 B, 3 C FROM DUAL UNION ALL SELECT 5 A, 2 B, 3 C FROM DUAL ), EMP2 AS ( SELECT 1 A, 2 B, 3 C FROM DUAL UNION ALL SELECT 2 A, 2 B, 3 C FROM DUAL UNION ALL SELECT 4 A, 2 B, 3 C FROM DUAL ) SELECT * FROM EMP1 UNION ALL SELECT TO_NUMBE..

❌이전글/이전글

DBeaver 공백이있는 쿼리 실행오류!

디비버 툴에 익숙해지고 있다. 근데 쿼리 실행하다 엔터처리된 부분(공백) 에서 자꾸 에러가 났다. 이렇게! 환경설정에서 설정해주는게 있을 것 같아서 찾아봤다! SQL실행 부분을 찾아보니 있다. 참 다행이다. 윈도우 > 설정 > 편집기 > SQL 편집기 > SQL실행 탭 순으로 찾아가자! 붉은색 네모를 보면 Blank line is statement delemiter의 체크박스의 체크표시를 없애주자! 아주 훌륭하게 없앴다. 이제 적용 후 쿼리를 실행해 보자! 이제 공백이 있는 부분도 잘 실행된다!

❌이전글/이전글

DBeaver : no active connection 대체 뭐야.....?

DBeaver 툴을 사용중 갑자기 No active connection 라는 에러를 만났다. Test Connection을 누르고, 연결이 잘되는 것을 확인하고 쿼리를 실행시켰지만 아래와 같은 에러가 자꾸 뜬다. 툴을 삭제하고 다시 설치도 해보고 구글링도 열심히 해보았지만, 나같은 사례를 못찾았다. 환장하겠다. 한동안 SQL Developer 를 사용하다, 너무 불편해서 다시 문제해결방법을 찾아보았다. 그러다 단축키 중 Switch active connection (for SQL script)라는 걸 찾았는데, CTRL + 9를 누르면 아래와 같이 창이 하나 뜨는데, 사용할 데이터베이스를 클릭하고, 쿼리문을 실행하자 정상 파싱되고 테이블을 출력해줬다. 대체 이게 무슨 에런지 이해를 못하겠다.... 오렌지..

❌이전글/이전글

오라클 한글 3byte -> 2byte변경

오라클 한글 3byte -> 2byte 변경 cmd창에서 sqlplus /as sysdba 로 접속 후 #쿼리문 ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE CHARACTER SET KO16KSC5601; ALTER DATABASE CHARACTER SET INTERNAL_USE KO16KSC5601; shutdown immediate; 위 내용 복사 붙여넣기 노란색은 에러날 수 있음, 무시하기 이후 쿼리문을 사용시 * 1행에 오류: ORA-01034: ORACLE not avai..

❌이전글/이전글

쉘 커맨드라인 명령어 일정시간마다 반복실행하기

쉘 커맨드라인 명령어 일정시간마다 반복실행하기 서버에서 로그 볼 때 로그파일이 업데이트 됐는지, 시간을 확인하기 위해서 계속 ll, ll, ls -l, ll 명령어를 치니까 솔직히 조금 짜증나더군요. 손가락도 넘 아픔 ㅠㅠ. 그래서 쉘 커맨드라인에서 while문으로 조져봤습니다. while [조건문]; do 명령어; done; 쉘 스크립트에서 while문 문법임. 저걸 사용하면됨. 조건문으로 true를 줘서 항상 참이되게 true로 주고, do와 done; 사이에 명령어를 입력하면됨. ls -l로 리스트를 보여주면서, sleep 3;명령어로 터미널에서 3초간 대기 시켜주면, 3초마다 ls -l을 찍음 이 얼마나 편리한가. for문도 가능함. for 변수 in 반복횟수 //{1..100} 또는 1 2 3 ..

❌이전글/이전글

구글 AdSense와 구글 Ads 다르다는 걸 알았다. 시스템 정책 위반???

정말 바보 같은 일이 발생했다. 구글 AdSense와 구글 Ads와 다르다는 걸 최근에 알았다. gmail로 시스템 정책을 위반했다고 메일이 왔다. 처음 메일을 받고 시스템 우회 정책을 위반했다고 정지되었다고 메일이 왔고, 이의 신청을 몇 차례 하였다. 하지만 계속해서 거절당했다. 그냥 애드센스 필요 없어하다가 최근에 이런 메일을 다시 받았다. ??? 갑자기 돈 인출? 너무 어이없어서 google ads를 들어가 보았다. 누군가가 내 계정을 해킹(?)해서 구글 Ads에서 광고 캠페인을 만든 것 같았다. 광고를 여러 사이트에 띄우고 광고 게재한 사람이 돈을 내는 것 같았다. 구글 애드센스는 블로그주인이 만든 콘텐츠(글)에 광고를 띄워 여러 사람에게 노출시켜주어서 블로그 주인에게 수익이 가는 방식이고, 구글..

❌이전글/이전글

오라클ORACLE - 패스워드 만료 ORA-28001

데이터베이스 일반계정으로 접속하려고 하니 패스워드가 만료 났다고 한다. ORA-28001 에러! ADMIN(sys as sysdba) 계정으로 접속 후 아래 쿼리를 실행해줬다. ALTER USER test01 IDENTIFIED BY 1234; 바꿔줬다. 문제 없이 접속되었다. 하지만 구글링 했을 때, 180일 뒤면 또 이런 문제가 발생! 패스워드가 만료되어 또 귀찮을 수 있다. 가장 먼저 아래 쿼리를 실행해서 확인해주었다. SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT'; 빨간 네모 박스에 있는 녀석이 분명하다 패스워드 생명주기라고 적혀있다. 저 녀석을 이제 UNLIMITED로 변경해주면 된다. 아래 쿼리를 실행하면 된다. 쿼리를 실행하고 결과를 확인해보자! ..

❌이전글/이전글

오라클(Oracle) - INNER 조인(JOIN)을 이해해보자

#JOIN - 두 개 이상 테이블을 묶어서 하나의 결과 집합으로 만들어 내는 것을 뜻합니다. - 데이터베이스에서 중복데이터를 피해서 데이터를 여러테이블로 나눠서 저장하고, 이 때 나눠진 테이블을 동일한 컬럼을 기준으로 원하는 결과를 출력하기 위해 조인을 합니다. 조인의 정확하게 이해하기 위해서 그림으로 그려서 만들어봤습니다. 두개의 테이블이 있을 때 INNER JOIN 예시 위 두테이블에서 U_NAME으로 조인을 할 수 있습니다. USER_TABLE과 BOARD_TABLE에서 테스트1, 테스트2의 값이 있는데, BOARD_TABLE에서 노란 행을 INNER, 겹치지 않는 부분 하얀색 행을 OUTER라고 합니다. 여기서 두테이블을 조인을 하면 하얀색 행인 OUTER행은 삭제되어 아래와 같이 출력됩니다. #..

❌이전글/이전글

SQL SELECT 명령어 실행 순서

FROM > CONNECT BY > WHERE > GROUP BY > HAVING > ORDER BY >SELECT 사이사이에 다양한 예약어가 들어가겠지만 크게 간추려본다면 이렇게 되는 듯. 그리고 SELECT 절에서 사용한 별칭은 HAVING절이나, WHERE절에 사용할 수 없음. SELECT COUNT(*) A, B_TYPE AS B FROM BOARD GROUP BY B_TYPE HAVING COUNT(*) > 100; 예를 들어 이런 쿼리가 있는데, 위 쿼리문은 아래와 같은 결과 값을 출력해준다. SELECT 안의 COUNT(*) 에 A라는 별칭을 줬고, 이 별칭을 HAVING절 옆 COUNT(*)를 대신 해보자. 에러가 발생, 명령어 실행할 때 WHERE절, HAVING절이 먼저 실행되서 에러가..

부드러운당근무침
정보의 게이트웨이