ORA-01861: 리터럴이 형식 문자열과 일치하지 않음

SQL/공부 2008. 9. 8. 18:23

DATE 타입의 컬럼을 WHERE 문에서 BETWEEN 으로 검색하려하는데 날짜는 상관없는데 시분초까지 검색하려면 'ORA-01861: 리터럴이 형식 문자열과 일치하지 않음' 이 에러가 떴다. 구글검색결과 타입을 지정해줘야한다는 결론이 났다. 다음과 같이 하면 된다. WHERE SDATE BETWEEN TO_DATE('2008-09-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE('2008-09-08 23:59:59', 'yyyy-mm-dd hh24:mi:ss') 에공..

메인쿼리-서브쿼리(Main Query - Sub Query)

SQL/공부 2007. 12. 7. 14:29

Main Query - Sub Query ? 사원테이블에서 최대월급을 받는 사람과 그 월급을 출력하려면.. select ename, max(sal) from emp where sal=max(sal); 이러면 되는 줄 알았건만.. ㅡ,.ㅡ;; '그룹 함수는 허가되지 않습니다' 이건 뭐여~~ 서브쿼리를 사용하자! select ename, sal from emp where sal=(select max(sal) from emp); ENAME SAL ---------- ---------- KING 5000 where 절에 있는 (select max(sal) from emp) 이 서브쿼리다. ? 여기서, JONES의 월급보다 많이 받는 사원들의 이름, 월급을 출력하려면.. select ename, sal from ..

SQL - 조인

SQL/공부 2007. 12. 7. 12:09

1. equi join - 두 테이블 사이에 서로 공통된 컬럼이 있을때 하는 조인 where 절에 증거를 줘야한다. 먼저, emp 테이블 말고 dept 테이블이 있는데 이를 확인하면.. select * from dept; DEPTNO DNAME LOC -------------------------------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 여기있는 deptno 가 emp 테이블과의 연결고리다. emp 테이블에도 deptno가 있는 것을 확인해보라. 그럼 여기서,, 각 사원들의 근무지를 보려면 select ename, loc from emp, dept where emp.deptno=d..

SQL 함수3

SQL/공부 2007. 11. 29. 17:46

max - 최대값을 출력하는 함수 다음과 같이 해보자. emp 테이블에서 월급이 제일 큰것을 출력하려면. select max(sal) from emp; MAX(SAL) --------- 5000 자, 다음은 직업이 SALESMAN 인 사원이 받는 월급 중 가장 많은 월급과 함께 직업을 같이 출력하려면.. select job, max(sal) from emp where job='SALESMAN'; -'단일 그룹의 그룹 함수가 아닙니다' 라는 메시지를 볼수 있다. 여기서 문제가 뭐냐하면, job이 SALESMAN 인 row 는 여러개니까 그것이 다 출력되려고 하고, max 값은 최대값으로 하나만 나오려고 하니까 둘이 다투다가 문제가 생기는 것이다. 따라서, 여기서 필요한 건 뭐?! group by 절이 필요..

SQL 함수2

SQL/공부 2007. 11. 29. 16:36

to_char - 말 그대로 char 로 바꿔주는 함수 바꿀 때 포맷도 줄 수 있느데, 몇개 예를 들어보면 day 는 요일을 반환하고, d 는 일수(?)를 반환한다. 뭐냐하면, 일요일부터 토요일까지 1~7까지의 숫자를 반환한다. 일요일은 1, 월요일은 2, 금요일은 6 이런식으로 반환한다 select hiredate, to_char(hiredate,'day'), to_char(hiredate,'d') from emp; HIREDATE TO_CHAR(HIREDATE,'DAY') TO_CHAR(HIREDATE,'D') --------------------------------------------------------------------- 1980-12-17 수요일 4 1981-02-20 금요일 6 198..

SQL - 함수

SQL/공부 2007. 11. 26. 14:27

upper - 대문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : NEVER, GIVE UP!! lower - 소문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : never, give up!! initcap - 앞글자만 대문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : Never, Give Up!! concat - 연결해서 출력 SQL> select concat(ename, sal) 2 from emp; CONCAT(ENAME,SAL) -------------------- SMITH800 ALLEN1600 WARD1250 .....

SQL 2강

SQL/공부 2007. 11. 23. 18:36

그냥 이어서... -- 연결연산자 || 연결연산자의 장점은 문자열로 표현할수 있다는 것이다. 다음을 입력해보자. select ename || ' 의 월급은 ' || sal from emp; ENAME||'의월급은'||SAL ----------------------- SMITH 의 월급은 800 ALLEN 의 월급은 1600 WARD 의 월급은 1250 -- where 절에 조건을 줘서 특정 데이터만 select -- 사원이름이 SCOTT 인 사원의 이름, 월급? select ename, sal from emp where ename = 'SCOTT'; ENAME SAL ---------- ---------- SCOTT 3000 이름을 줄때 소문자로 쓴다던지, ''(싱글쿼터) 로 감싸주지 않으면 원하는 결과..

SQL 1강

SQL/공부 2007. 11. 23. 17:52

그냥 처음 시작해서 1강임. 범위는 맘데로.. ㅡ,.ㅡ;;; 자~~ 시작!!! * SQL (Structure Query Language) 다음과 같이 5가지로 분류할 수 있다. 1. Query --> select 2. DML --> insert, update, delete 3. DDL --> create, alter, drop, truncate, rename 4. DCL --> grant, revoke 5. TCL --> commit, rollback, savepoint 이제부터는 오라클에서의 예제다. (오라클 설치는 잘 해보자!!) 오라클의 테스트 계정은 scott 이고 pw는 tiger이다. sqlplus을 실행시켜서 접속해보자. cmd창에서 sqlplus scott/tiger 를 입력하자. lock..