(2) 오라클 ------ 편도 기능과 다중 테이블 쿼리

1. 소개 SQL 함수

2 일 방향성 함수

3, 멀티 테이블 쿼리

소개 SQL 함수

1. SQL의 기능은 무엇입니까?

그림 삽입 설명 여기

이 개 두 SQL 기능 :

편도의 기능과 멀티 라인 기능

편도의 기능

그림 삽입 설명 여기

1 제어 기능 총액

그림 삽입 설명 여기
---- INITCAP (ENAME) 첫 글자 (대문자), 저급 (소문자) 상부 대문자 ----
선택 (SELECT) A. *를 Where INITCAP (a.ename) = '제임스 어퍼 (a.ename)에서 EMP = '제임스

2 캐릭터 제어 기능

그림 삽입 설명 여기
예를 들면 :

---- 이름은 모든 대안 A가 0이고 포함 ----
EMP가 ENAME로부터 SELECT는 (a.ename, 'A', '0')를 장착
---- 급여 5를 5 왼쪽하지 않으면 0으로 시작 첨가 ----
SELECT LPAD (a.sal. '5', '0') EMP에서 SAL을

3 수치 함수
  • DUAL 발현과 기능을 테스트 할 수는 '의사 테이블'인

        ---- 라운드 : 라운딩 ----
        SELECT 라운드 (45.625, 2)에서 듀얼 -> 45.63

        ---- TRUNC :截断 ----
        이중에서 선택 TRUNC (45.625, 2); -> 45.62

        ---- MOD :求余 ----
        이중에서 선택 모드 (500, 300); -> (200)

4. 날짜
  • 날짜와 시간 : 오라클의 날짜 데이터 형식은 실제로 두 개의 값이 포함되어 있습니다.
  • SYSDATE 함수가 반환 : 날짜, 시간, 예를 들어 : 이중에서 선택 SYSDATE -> 2020년 3월 12일 0시 0분 0초
  • 날짜 함수
    그림 삽입 설명 여기
    (5) 전달 함수

그림 삽입 설명 여기

  • 오라클은 자동으로 변환 (암시 적 데이터 형식 변환) 다음과 같은
    그림 삽입 설명 여기
    예를 들어 :로부터 '11'+ 2를 선택 듀얼 -> 13;

  • 디스플레이 변환기
    그림 삽입 설명 여기
            ---- TO_CHAR 날짜 문자열 회전, 디지털 대 문자열 ----
            SELECT TO_CHAR (SYSDATE, '는 MM-DD-YYYY') TO_CHAR (2121.13 'L000,999.99')에서 듀얼 -> 2020년 3월 12일, ¥ 002,121.13
            ---- TO_DATE 문자열 전송 날짜 ----
            SELECT TO_DATE ( '2020년 3월 12일' '는 MM-DD-YYYY')에서 듀얼 -.> 3분의 2,020 / 12은
            ---- TO_DATE 문자열 디지털 ----
            > 2121.13 -; SELECT TO_NUMBER ( '¥ 002,121.13', 'L000,999.99')에서 듀얼
    그림 삽입 설명 여기

  • 날짜 형식 요소
    그림 삽입 설명 여기

    6, 일반 함수
  • NVL (expr1을, expr2이) ----->은 expr1이 null, expr2이 선택의 다음 값, 그렇지 않으면 자신을 선택하는 경우

        ---- 쿼리 테이블이 더 부서를 쓸하는 직원 부서 직원 번호, 부서 번호가없는 ----
        선택 (SELECT) a.ename, NVL합니다 (TO_CHAR (a.mgr), '어떤 부서') EMP에서 작업들 a

  • NVL2 (expr1을, expr2이, expr3를이) -----> 선택이 빈은 expr1의 expr2이 아닌 경우, 선택은 빈 expr3를하는 경우

        ---- 섹터 1의 더 보너스 상품을 조회하지 플러스 보너스 ---- 0.5있다
        선택 (SELECT) a.ename은 EMP A로부터, NVL2 (a.comm, a.comm + 0.5, 1)

  • 반환 expr1을에 이르기까지 NULLIF (expr1을, expr2이) -----> 동일한 반환 NULL,
  • COALESCE (expr1을, expr2이, ..., exprn) -----> COALESCE COALESCE NVL 비해 이점에 복수의 값을 교대로 동시에 처리 할 수있다. 첫 번째 표현식이 비어 있으면, 다른 매개 변수에 대한 다음 표현 반환 COALESCE
7 조건식
  • SQL 문에있는 IF-THEN-ELSE 로직을 사용하여
  • 두 가지 방법이 있습니다 :
    케이스 표현
    DECODE의 기능

        ----- 검색어 정보 10, 20 직원 부서 번호 10 인쇄 섹터 임금 1.1 배는 다른 섹터에서의 1.2 배 임금 (케이스) ---- 인쇄
        선택 (SELECT) a.ename, a.deptno, A 경우 .deptno 때 다음 a.sal 10 1.1 다른 EMP A로부터 a.sal * 1.2 단부 new_sal;

        ----- (DECODE) ----
        선택 a.ename, a.deptno 디코드 (a.deptno, 10 a.sal * 1.1 * 1.2 a.sal) EMP A로부터 new_sal;

  • 훈련 연습

        ----은 "2020 3월 12일 9시 5분 8초"밖으로 1. 인쇄 현재 시스템 날짜 및 시간 형식 (참고 : 사용 따옴표는 지금까지 문자를 추가 할 수 있습니다)
        에 대해서는 SELECT TO_CHAR (SYSDATE, 'YYYY'를 "MM"달 "DD"일 "HH : MI : SS ') 이중에서; ----> 2020 3월 12일 9시 5분 8초

        ---- (2)의 형식 번호 : 1,234,567.89 1,234,567.89에
        이중에서 SELECT TO_CHAR (1234567.89 '999,999,999.99');

        ---- 3, 디지털 문자열, 문자열에 특수 문자 경우, 암시 적 변환은 할 수있다 :
        + 100 듀얼에서 SELECT '1234567.89';

        ---- 4, 특수 문자의 문자열, 예를 들어, "1,234,567.89"경우, 암시 적 변환이 완료 TO_NUMBER ()를 사용할 필요가 없습니다
        선택 TO_NUMBER ( '1,234,567.89', ' 이중에서 999,999,999.99') + 100 - ---> 1,234,667.89

        ---- 5, 날짜 문자열로 쿼리, 일반적으로 사용 TO_DATE ()와 같은 쿼리에 대한 날짜, 그래서 날짜 형식에 초점을 맞출 필요가 없습니다
        곳에 EMP A에서 선택 a.ename, a.hiredate을 a.hiredate = TO_DATE ( '1981년 2월 20일', ' YYYY-MM-DD');

        ---- 6, 매달 문의 끝에서 두 번째의 마지막 이틀 신병 정보
        . EMP의 a에서 *를 선택 곳 a.hiredate = LAST_DAY (a.hiredate) - 2;

        ---- 제 계산 종업원 급여
        A *를 선택 a.sal * 12 + NVL (a.comm 0) EMP A로부터 급여;

다중 테이블 쿼리

1, 데카르트 제품
  • 표 EMPLOYEES (20 행), 표 DEPARTMENTS (8 개 라인), 직교 세트 : 20x8 = 160 개 행

  • 다음과 같은 조건에서 생산 집회를 데카르트 :

        생략 연결 상태
        조인 조건이 유효하지 않습니다
        서로 연결되어있는 모든 테이블의 모든 행에

  • 어떻게 직교 세트를 피하기 위해 :

        WHERE 효과적인 연결 조건에 추가 할 수 있습니다.

2, 별칭 테이블
  • 별칭을 사용하여 쿼리를 단순화합니다. 사용 테이블 접두사 효율성을 향상시킬 수 있습니다.
    예를 들면 :
SELECT e.employee_id,
       e.last_name,
       e.department_id,
       d.department_id,
       d.location_id
  FROM employees e, departments d
 WHERE e.department_id = d.department_id
(3) 접속 테이블의 복수
  • 최소한 n-1 연결 조건에서의 n 테이블을 연결합니다. 예를 들어 세 개의 연결 테이블, 적어도 두 개의 연결 상태.
4 비 연결 당량
  • 임금 직원 쿼리 테이블 (EMP)는 처음 몇 파일 (sal_grades) 임금 규모의 테이블에 속하는 :
select a.ename, a.sal, b.level
  from emp a, sal_grades b
 where a.sal between b.low_sal and hight_sal;
도 5는, 내부 및 외부 조인
  • 욕실은 :
    테이블의 동일한 열 두 개 이상의 행과 결합 된 결과 집합은 테이블과 일치하지 않는 다른 테이블의 행을 포함하지 않는

  • 외부 연결 :
    두 개의 테이블이 (가) 추가 리턴 라인에 조인 조건을 만족 또한 연결하는 동안 충족되지 테이블 행 조건에서 (또는 오른쪽) 왼쪽을 반환,이 연결은 왼쪽 (또는 오른쪽) 외부 조인이라고합니다. 일치하는 행이 해당 결과 테이블 (NULL). 절 조건은 내부 접속을 연결하는 외부 유사한 비어 없지만, 즉를 외부 연결선 연산자를 증가시키는 조건과 일치하지 않는리스트의 뒤에 연결되어, 괄호 더하기 기호 (+)의와

실시 예 (우측 외측 가입)

select * from emp a, dept b where a.deptno(+) = b.deptno;
6, 자연스러운 연결
  • NATURAL 절은 같은 이름을 가진 두 테이블에 나열된 조건에 해당하는 연결을 생성 가입하세요. 테이블 데이터 쿼리에 상응하는 조건을 만족한다. 경우에만 동일한 열 이름 및 다른 데이터 유형은 에러가 발생한다.
7, ON 절은 연결을 만들 수 있습니다
  • 가입 자연 조건의 같은 이름의 연결로 표시됩니다. ON 절은 추가 연결 조건을 지정할 수 있습니다. 연결 상태가 다른 상태에서 분리된다. ON 절은 문 높은 가독성을합니다.
  • 절에 다중 테이블 조인을 만들려면
SELECT employee_id, city, department_name
  FROM employees e
  JOIN departments d
    ON d.department_id = e.department_id
  JOIN locations l
    ON d.location_id = l.location_id;
8 연결 이후
  • 자신에 연결

예를 들면 :

  select m.*
  from employees e, employees m
  where e.manager_id = m.employee_id and e.last_name = 'Chen'  
9, 왼쪽 (오른쪽) 외부 조인하고, 완전 외부 조인
  • 접속 동안 복귀 라인 이외에 두 테이블은 또한이 연결은 왼쪽이라고 (또는 우측) 외주에 가입되면, 만족하고 있지 않은 좌측 (또는 우측)에 나타난 행 상태를 반환하는 조인 조건을 만족시킨다.

  • 연결시 리턴 라인에 추가로 두 개의 테이블이 추가로 두 개의 테이블을 만족하지 않는 리턴 라인 조건에서 조인 조건을 만족이 연결은 전체 외부 연결이라고합니다.
    그림 삽입 설명 여기


다음에 제 (3) 오라클 ------ 그룹화 기능, 서브 쿼리 생성하고 관리 테이블 및 데이터 처리

게시 67 개 원래 기사 · 원 찬양 19 · 전망 9854

추천

출처blog.csdn.net/qq_41530004/article/details/104809399