- Literals
숫자는 그냥, 문자는 따옴표.
따옴표없이 영어 -> 테이블이나 컬럼일 것이다.
대소구분 거진 안함.(오라클)
- DISTINCT & ALL
distinct 중복제거
all 디폴트
- WHERE Clause(절(節))
- 날짜 포맷 보기
(나라마다 날짜 표현타입등이 다르므로, 어렵다)
select sysdate from dual;
ALTER SESSION SET NLS_DATE_LANGUAGE = AMERICAN;
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/RR';
Between '82/01/01' and '82/01/10' // 날짜 계산등도 가능
- 논리 연산 NULL : 알수없다
- ORDER BY Clause
NULL값은 신경안씀.(오라클의 경우 Desc의 경우 맨 앞에 NULL몰아넣음)
- SQL*Plus Commands
-
SQL> conn system/manager
(* system 사용자로 접속한다.)
SQL> CREATE USER testxx IDENTIFIED BY testxx;
(* xx 에는 각자 고유한 번호를 부여한다.)
SQL> GRANT resource, connect TO testxx;
SQL> conn testxx/testxx
SQL>ALTER SESSION SET nls_date_language = AMERICAN;
SQL> ALTER SESSION SET nls_date_format = 'DD-MON-RR';
SQL> @C:\SUMMIT2.sql
(* 각자의 ORACLE_HOME 위치를 확인하여 그 path를 적어준다. 부록 1 참조)
SQL> SELECT count(*) FROM s_emp;
(* 25 개가 나와야 한다.)
SQL> SELECT count(*) FROM s_dept;
(* 12 개가 나와야 한다.)
SQL> ALTER SESSION SET nls_date_format = 'RR/MM/DD';
-
"select
from
where id = '" & strID & "'
and password = '" & strPasswd & "';"
strID = ' OR 1 = 1 -- //해킹으로도 쓰였던 (sql injection 검색) 'or 1=1 ;--
strID = ' ** SELECT 1 = 1 --
- date (oracle 7byte)
number(p,s)
char() - 2000byte
varchar2() - 4000byte
-
SQL> SELECT 'The title for ' || INITCAP(first_name) || ' ' ||
UPPER(last_name) || ' is ' || LOWER(title)
|| '.' "EMPLOYEE'S JOB STATUS"
FROM s_emp;
SQL> SELECT last_name, salary FROM s_emp WHERE title = 'PRESIDENT';
SQL> SELECT last_name, salary FROM s_emp WHERE UPPER(title) = 'PRESIDENT';
SQL> SELECT last_name, salary FROM s_emp WHERE LOWER(title) = 'president';
SQL> SELECT last_name, salary FROM s_emp WHERE INITCAP(title) = 'President';
- 프롬프트 바꾸기
SET SQLPROMPT _USER'@'_CONNECT_IDENTIFIER >
-where절서 UPPER() LOWER()등 함수 쓰면 성능 떨어지니 알아놓자.
( 데이터가 수백만건... 우선 다 바고 그 다음 비교함)
-