2009. 9. 1. 21:56 카테고리 없음

- 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
 
q SQL*Plus 툴에는 SQL Buffer가 있는데 가장 최근에 입력된 SQL 문장 또는 PL/SQL Block 이 저장되어 있다.  이 때, 세미콜론(;)/로 변경되어 저장된다.
q Buffer의 내용을 보거나 변경하거나 저장할 수 있으며, 다른 파일의 내용을 Buffer로 불러들이는 것도 가능하다.


    
 - 
q 실습용 tabledata를 만들기 위해 다음과 같이 실행하시오.

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;

q DB 상의 data가 대소문자를 구별하므로 저장된 정확한 형태를 알지 못하는 경우 Function을 이용하여 data를 변형시킨 후 비교하기도 한다.

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()등 함수 쓰면 성능 떨어지니 알아놓자.
( 데이터가 수백만건... 우선 다 바고 그 다음 비교함)


-

posted by 부풍