DB/Oracle 48

DB 27강. 서브쿼리

-- 테이블에 별칭을 주는 것도 가능하다. -- SELECT *를 쓰면 더이상 열 추가가 되지 않기때문에 -- e.*이라고 사용하면 된다. SELECT e.*, max(sal) FROM emp e; SELECT max(sal) FROM emp; SELECT * FROM emp WHERE sal = 5000; 가장 높은 월급을 받는 사람을 찾기 위해 이렇게 찾는 것은 사람이 눈으로 보고 적어야 하니까 프로그램이라고 할 수 없다. -- WHERE절에 붙어있는 서브쿼리는 그냥 서브쿼리 SELECT * FROM emp WHERE sal = ( SELECT max(sal) FROM emp ); 이때 쿼리문을 WHERE절의 조건으로 넣어주면 된다. 이것을 단일행 서브 쿼리라고 한다. 서브 쿼리의 결과가 단일행이므로..

DB/Oracle 2022.02.09

DB 26강. 스칼라 서브쿼리

스칼라(scalar) : 하나의 숫자로만 표시되는 양 즉, 상수이다. SELECT ename, 2 FROM emp; 2 자체 데이터가 스칼라이다. 또한 쿼리의 결과가 하나만 나오는 것을 스칼라 쿼리라고 한다. SELECT avg(sal) FROM emp; SELECT절 안에 SELECT가 또 들어가는 것을 서브 쿼리라고 하는데 이때 서브쿼리가 스칼라이면 스칼라 서브쿼리라고 한다. 그래서 보통 컬럼에 적어주는 서브 쿼리를 스칼라 서브 쿼리라고 한다. SELECT에 서브 쿼리를 넣을 때는 항상 스칼라 서브 쿼리이어야 한다. SELECT ename, (SELECT '2' FROM emp) FROM emp; 서브 쿼리문의 결과는 14줄이 나오는데 ename 한 줄당 14개씩 결과가 나오기 때문이다. [출처] h..

DB/Oracle 2022.02.09

DB 25강. 형변환 함수

묵시적 형변환 -- 형변환 함수 SELECT 2 + '2' FROM dual; 명시적 형변환 SELECT 2 + to_number('2') FROM dual; emp테이블의 hiredate에 /말고 -로 바꿔줘! 스키마로 hiredate 타입을 먼저 확인해준다. -- YYYY MM DD hh:mm:ss 규칙 SELECT ename, to_char(hiredate,'YYYY-MM-DD') HIREDATE FROM emp; 이건 그냥 String임 SELECT '2020/04/01' FROM dual; SELECT to_date('2020/04/01') FROM dual; 9들은 숫자의 자리수를 말한다. SELECT to_char(1530, '$9999') FROM dual; SELECT to_char(15..

DB/Oracle 2022.02.08

DB 24강. 날짜 데이터

-- 날짜 sysdate 현재시간 출력 SELECT sysdate FROM dual; -- 현재 시간과 사이의 개월 수 SELECT ENAME, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) 근속년수, decode(TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12), 40, '금반지증정', '없음') FROM emp; SELECT ADD_MONTHS(sysdate, 3) FROM dual; -- 마지막 날짜 출력 SELECT last_day(sysdate) FROM dual; [출처] https://cafe.naver.com/metacoding 메타코딩 : 네이버 카페 코린이들의 궁금증 cafe.naver.com 메타 코딩 유튜브 https://ww..

DB/Oracle 2022.02.08

DB 23강. 데이터 타입

5가지만 알고있자.날짜 데이터는 나중에 배울것이다. * 문자 데이터 타입 * CHAR 고정된 길이의 문자2천Byte VARCHAR2 가변 길이의 문자4천Byte CLOB 대용량 텍스트40억Byte BLOB 이진형 대용량 객체사진, 동영상 등 저장 가능 * 숫자형 데이터 타입 * NUMBER 가변 숫자 [출처] https://cafe.naver.com/metacoding 메타코딩 : 네이버 카페 코린이들의 궁금증 cafe.naver.com 메타 코딩 유튜브 https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9 메타코딩 문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 ..

DB/Oracle 2022.02.08

DB 22강. 숫자 함수

-- ROUND 반올림. 두번째 인수는 소수점 자리수 SELECT ROUND(987.654, 2) FROM dual; --TRUNC 소수점 이하 버리기 SELECT TRUNC(987.654, 2) FROM dual; -- mod 나머지 구하기 SELECT mod(6,4) FROM dual; [출처] https://cafe.naver.com/metacoding 메타코딩 : 네이버 카페 코린이들의 궁금증 cafe.naver.com 메타 코딩 유튜브 https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9 메타코딩 문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : http..

DB/Oracle 2022.02.08

DB 21강. 문자 위치 추출 함수 instr( )

학생의 전화번호에서 지역번호만 뽑아내려고 한다. SELECT name, substr(tel, 1, 3) FROM student; 이렇게 적기엔 02 지역번호는 2개이고 다른 곳은 3개이다. substr에 들어갈 3번째 인수 자리에 어쩔 땐 2가 들어가야 하고, 어쩔 땐 3이 들어가야 한다. 변해야 하는 것이다. 하지만 데이터베이스에는 변수가 없다. 이때 instr( ) 함수를 사용해준다. instr( )은 내가 찾는 문자열의 위치가 나온다. SELECT '-)$' from dual; -- 결과 : 3 -- $의 인덱스가 나오는 것 SELECT instr('-)$', '$') from dual; SELECT instr(tel, ')')-1 FROM student; instr(tel, ')')-1 자체가 변..

DB/Oracle 2022.02.08

DB 20강. 문자 추출 함수 substr( )

SELECT '가나다라' FROM dual; '가나다라'에서 앞에 '가나'만 잘라내고 싶으면 substr( )을 사용한다. 어디서부터 몇 개를 자를지 인수가 2개 필요하다. 1번째 인수는 인덱스 번호, 2번째 인수는 개수 이때 자바에서는 인덱스가 0번부터 시작이었지만 데이터베이스에서 인덱스는 1부터 시작한다. SELECT substr('가나다라', 1, 2) FROM dual; 그러면 주민번호 앞 6자리만 뽑아내는 것도 가능하다. SELECT name, substr(jumin, 1, 6) FROM student; -- 주민번호 751023-1****** SELECT name, substr(jumin, 1, 6) || '-' || substr(jumin, 7, 1) || '******' JUMIN FROM..

DB/Oracle 2022.02.07

DB 19강. 문자열 길이 함수 lengthb( )

미리보기로 볼 수 있는 글의 양을 정하는데 글자의 개수로 정하자니 한글로 100자 이상이면 "..."이 나오게 하면 영어를 적었을 때 100자 이상 더 적을 수 있었다. 비교해보니 확실히 크기가 다르다. 글자의 길이, 크기를 구할 때 lengthb, Byte 크기를 구해준다. 영어는 한글자당 1Byte -- 영어 1Byte (UTF-8) SELECT lengthb('ABCD') from dual; 한글은 한글자당 3Byte -- 한글 3Byte (UTF-8) SELECT lengthb('가나다라') from dual; [출처] https://cafe.naver.com/metacoding 메타코딩 : 네이버 카페 코린이들의 궁금증 cafe.naver.com 메타 코딩 유튜브 https://www.youtu..

DB/Oracle 2022.02.07

DB 18강. 소문자 변경 함수 LOWER( )

단일행 함수는 가로(행) 연산을 한다. 레코드 연산을 하는 것이다. 아무것도 아닌 테이블, 연습 테이블을 dual이라고 한다. SELECT 'Ssar' FROM dual; 아이디를 입력할 때 모두 소문자로 입력해야지! SELECT LOWER('Ssar') 소문자 FROM dual; 유효성 검사에 LOWER를 사용하면 좋다. [출처] https://cafe.naver.com/metacoding 메타코딩 : 네이버 카페 코린이들의 궁금증 cafe.naver.com 메타 코딩 유튜브 https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9 메타코딩 문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.co..

DB/Oracle 2022.02.07