[Oracle DB] SQL –

*SQL

질문: 선택

DML: 삽입, 업데이트, 삭제

TCL : COMMIT, ROLLBACK > 트랜잭션 제어를 목적으로 만들어진 언어

DDL: CREATE, ALTER, DROP, RENAME, TRUNCATE > 데이터 구조 정의

DCL: 승인, 취소


( 보다그리고 테이블 )

* 테이블에 대한 정보를 보는 방법

테이블 선택_

2 USER_TABLES에서;

탭에서 * 선택;

* 제한 사항 확인

DESC USER_CONSTRAINTS

> 필요한 것 사용자 나중에 이름만 바꾸면

* VIEW 생성

모양: 보기 만들기

첫 번째보다 생성 권한 부여

> 관리자 계정으로 다시 로그인

시스템/오라클 연결

> 권한 부여 : 승인하다 권한 에게 사용자 이름:

CREATE VIEW를 부여합니다.

쇼트;

> 원래 계정으로 다시 로그인

스콧/타이거 연결

생산하는

보기 만들기 추천

2 ~처럼

선택하다 EMPNO, ENAME, SAL, DEPTNO

4 OUT OF EMP

5 어디 DEPTNO = 10;

* 보다 정보 표시

DESC USER_VIEWS

* 테이블수업 보다 차이점

– 테이블 : 데이터 저장고 > 데이터를 물리적으로 저장하는 스토리지

-보다: 물리적 테이블을 기반으로 하는 논리적 가상 테이블

> 테이블의 일부만 볼 수 있음

> 물리적인 위치가 없어도 테이블이 있는 것처럼 사용할 수 있습니다.

그러므로보다복사하지 않고 테이블의 일부를 복사합니다.

선택하다 명령어로만 사용 가능

SQL> EMPS에서 * 선택;

위의 내용을 내부적으로 실행하면 다음 프로세스가 수행됩니다.

SQL> 선택 *

2 FROM (DEPTNO = 10인 EMP에서 EMPNO, ENAME, SAL, DEPTNO 선택);

> 보기~이다 선택하다 명령어 문자만 저장하여 테이블이 존재하는 것처럼 사용

* 테이블 복사 및 VIEW

– 테이블 복사

테이블 CDEPT 만들기

2 처럼

부서에서 * 선택;

> 복사하기 전까지는 동일합니다.

, 복사 후 DML이 경우 복사된 테이블에는 변경 사항이 반영되지 않습니다.

-보다

> 보기는 다음과 같습니다, 복사한 것과 똑같이 보일 것입니다.

보기 CDEPT 만들기

2 처럼

부서에서 * 선택;

++ 휴지통을 거치지 않고 바로 삭제
SQL> DROP TABLE CDEPT PURGE;

* 보다그리고 DML

-보다에게 삽입

> 보기저장되지 않습니다보다원본 테이블에 저장된 정보

EMPS에 삽입

2 VALUES(1111, ‘홍’, 3000, 10);

>> 보기의해 DML가능하다

* 보기 변경: 생성 또는 교체

광고 EMPS 생성 또는 교체

2 처럼

EMPNO, ENAME, SAL, COMM, DEPTNO 선택

4 EMP에서

5 여기서 DEPTNO = 30;

> 이와 같이, 확인해보면 변경된 것을 알 수 있습니다.

VIEW_NAME, 텍스트 선택

2 USER_VIEWS에 의해;

* 연봉이 높은 순으로사람만 출력 > 청소, , 샐러리 :: 행 번호

EMPNR, ENAME, SAL 선택

2 E1에서

WHERE LINECOUNT <=3;

-밖 절에서 사용 하위 쿼리: 보기처럼 행동

EMPNR, ENAME, SAL 선택

2 FROM (EMPNR, ENAME, SAL 선택)

EMP에서

4 SAL DESC로 주문)

5 WHERE LINECOUNT <= 3;

* 연봉 내림차순 사람만 출력 > 청소, , 샐러리

EMPNR, ENAME, SAL 선택

2 FROM (EMPNR, ENAME, SAL 선택)

EMP에서

4 SAL ASC에서 주문)

5 WHERE LINECOUNT <= 3;

*일련번호

그 용도는 일반 기둥과 다릅니다.

> 반 열, 반열

아래와 같은 표현이 가능하지만여기서 줄 수 = 2불가능한 경우

ROWNUM, EMPNO, ENAME, SAL 선택

2 EMP에서

여기서 ROWNUM = 1;

> 행 번호조건이 충족될 때까지 실행만 하고 일시정지하는 구조를 가지고 있습니다.

그래서 일반적으로 다른 모든 것보다 작습니다.

, 크기가 큰=1 까지만 (하나2그렇지 않으면 멈출 것이기 때문에..)


*색인

> 목적 : 빠른 검색을 위해

> 열 값 : 로우위드별도의 위치로..

인덱스가 없는 프로세스

ROWID, ENAME, SAL, JOB, DEPTNO 선택

2 EMP에서;

> 다음

ROWID, ENAME, SAL, JOB, DEPTNO 선택

2 EMP에서

WHERE ROWID=’AAASRGAEAAAAJ0AAH’;

>> 또한 해당 데이터 검색 및 찾기

* INDEX 생성 명령어 : CREATE INDEX 이름

색인 생성 IDX_EMP_ENAME

2 ON EMP(ENAME);

> 인덱스 생성 후 실행

EMPNR, ENAME, SAL 선택

2 EMP에서

WHERE ENAME = ‘스미스’;

>> 재료 검색 프로세스 가속화(데이터가 클수록 차이가 커집니다..)

*색인 확인

DESC USER_INDEXES

>>

COL INDEX_NAME 형식 A20

COL TABLE_NAME 형식 A10

INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS 선택

2 USER_INDEXES에서

WHERE TABLE_NAME IN (‘EMP’, ‘DEPT’);

* 인덱스의 고유성

-색인 자동으로 생성 : PK, 영국

> 삽입 추가 후 다음과 같은 기존 값을 찾습니다.

(무결성을 유지하기 위해)

-색인 수동 생성 : , 필요한 인덱스를 직접 생성

+인덱스지정하면 좋은 열은 무엇입니까? : 자주 검색되는 칼럼

> 가입 조건

* 색인 삭제 : DROP-INDEX 이름

드롭 인덱스 IDX_EMP_ENAME;

*일하다 열로 검색하는 것이 일반적입니다.

.. 색인 IDX_EMP_JOB 닫다

색인 생성 IDX_EMP_JOB

2 ON EMP(작업);

>> 생성

다음 SELECT 문과 같은 데이터가 표시됩니다(JOB is!
).

EMPNR, ENAME, JOB 선택

2 EMP에서

WHERE 작업 = ‘매니저’;

COL INDEX_NAME 형식 A20

COL TABLE_NAME 형식 A10

INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS 선택

2 USER_INDEXES에서

WHERE TABLE_NAME = ‘EMP’;

>> 데이터 사전 확인


*순서: 자동 번호 생성기

> 사용하기위한 99.9%가다 삽입문에 사용

-애플리케이션그만큼 DB데이터 삽입하는 동안 PC의 가치로 사용하기 위한 목적으로 생성됨 물체

– RDBMS: 관계형 데이터베이스

> 싱글 테이블하나 있어야합니다 PC반드시 있어야 한다

> 사람들이 게시판에 글을 올릴 때 글을 구분할 수 있어야 합니다.

: 우편 번호

> 요즘 우편번호는 사용자에게 표시되지 않고 관리용으로만 사용됩니다.

* Create SEQUENCE: CREATE SEQUENCE의 이름

시퀀스 생성 DEPT_DEPTNO_SEQ

2 1부터 시작

1 증가

4 노캐시

5 노사이클;

– 번역하다

시퀀스 만들기 시퀀스 이름

1부터 시작 –> 씨앗 하나

1씩 증가 –> 1증가하다

최소값 1 –> 최저한의

최대값 100 –> 최대값 100

주기 | 노사이클 ; 사용 가능한 에디션

노캐시 | 캐시 20 한 번에 미리 생성되는 숫자의 수

아래 표현처럼 삽입명령문이 실행될 때마다 번호가 생성되어 실행됩니다.

학과에서 끼워 넣다

2 VALUES(DEPT_DEPTNO_SEQ.NEXTVAL, ‘AAA’, ‘BBB’);

* 순서 확인

DESC USER_SEQUENCES

또는

* USER_SEQUENCES에서 선택;

>> 시퀀스하나만 만들었다, 여러 테이블에 사용할 수 있습니다.

!


* 오라클 계정

Scott/Tiger –> 최종 사용자: 최종 사용자

시스템/오라클 –> 학위 집사..

시스템/오라클 –> 실제 소유자 계정.. 성주졸업..

* 권한 : 승인, 취소

– 시스템 권한

> 보증 권한 에게 사용자;

> 취소 권한 OUT OF 사용자

– 개체 권한

> 보증 권한 반대하다 사용자;

> 취소 권한 개체에서 사용자;

* 사용자 생성(계정): 암호로 식별되는 사용자 이름 생성;

CONN 시스템/오라클

사용자 만들기 사용자1

2 타이거로 식별;

연결하다 사용자1/호랑이

결과 : 오라클연결되지 않음!
!
> USER1으로 로그인 불가

>> ??

특권

시스템: 시스템

물체: 개체 생성자 > 개체 권한은 개체 작성자에게 있습니다.

>> 따라서 다음과 같은 방법으로 DB에 접근할 수 있는 USER 권한을 부여해야 합니다.

* 사용자 권한: GRANT 권한 이름을 사용자 이름에 부여;

연결 허용 사용자1;

> CONNECT :: DB 접근 권한

> RESOURCE : 객체 생성 권한

++ 사용 사용자 이름으로 ‘SQL>’ 보정
SETSQLPROMPT “_USER>”

* USER OBJECT 권한 부여 승인하다 선택 개체 이름 사용자 이름;

> 다른 사용자의 테이블 열기

체계 관련.. 즉, 테이블 이름 앞에 사용자 이름이 와야 합니다.

> 다른 사람이 만든 테이블에 액세스하려면 사용자 이름이 테이블 이름 앞에 나와야 합니다.

!

– USER1으로 로그인한 상태에서

SCOTT.EMP에서 * 선택; >> 오류가 발생했습니다

그것을 해결하기 위해쇼트넌 가야 해

CONN 스콧/타이거 >> 격벽로 등록

-승인하다 선택 객체 이름 TO 사용자 이름;

SCOTT>EMP에서 선택 선택 사용자1;

다시 로그인하고 표를 확인하십시오.

스캇>콘 사용자1/호랑이

SCOTT.EMP에서 * 선택; >> 해결!

*스미스 샐러리 2000년변화 : USER1으로 로그인한 상태에서 시작

스콧/타이거 연결

> 연결

EMP에 대한 업데이트를 USER1에 부여합니다.

> 허용하다

CONN 사용자1/호랑이 > user1 다시 로그인

SCOTT.EMP 업데이트

2 SAL 설정 = 2000

WHERE ENAME = ‘스미스’;

> USER1에서 업데이트하려면

ENAME, SAL을 선택하세요.

2 BY SCOTT.EMP

WHERE ENAME = ‘스미스’;

> 체크하면 UPDATE 결과는 성공

* UPDATE 권한 부여: GRANT UPDATE ON table name TO user name

SCOTT.EMP 업데이트

2 세트 소금 = 100;

>> 오류가 발생했습니다

EMP 업데이트 허용 사용자1;

>> 허용하다

* OBJECT 권한 취소: REVOKE 권한 FROM 사용자 이름;

스콧/타이거 연결

> 연결된.

-물체 철회하다 : 철회하다 권한 OUT OF 사용자;

선택 해제, USER1의 EMP로 업데이트;

> 권한이 취소되었습니다.

.

* 취소된 USER1 권한: 취소된 FROM 사용자 이름 권한;

철회하다 연결, USER1의 자원;

* 비밀번호 변경 > 관리자로도 가능

사용자 user1 변경

2 사자로 식별;

> 비밀번호 변경

연결 사용자1/사자

> 연결된.

* 테이블 생성

테이블 T1 생성

2(ID 번호);

* 사용자 삭제 > 관리자 전용: DROP USER 사용자 이름 CASCADE;

사용자를 삭제하면 해당 사용자와 해당 사용자의 모든 테이블이 사라집니다.

정말 삭제하시겠습니까???? 왜냐하면 종속 옵션으로 삭제해야 합니다.

> 명확한 의미

사용자 UESR1 종료 캐스케이드;

> 사용자가 삭제되었습니다.

* SCOTT 계정 차단 방법

IF 쇼트 떠나다,

릴리스 사용자 SCOTT CASCADE; > 10내가 수년 동안 일했던 모든 테이블이 날아갔습니다.

비밀번호를 변경하지 않고 액세스를 비활성화할 수 있습니다.

사용자 변경 스콧

2 계정이 차단되었습니다.

> 이 방법CONN 스콧/타이거 만약에 ‘계정이 잠겼습니다’

> 올바른 비밀번호를 입력해도 접근이 완전히 차단됩니다.

> 권한을 가진 사람 쇼트테이블 액세스

* 차단된 계정 차단 해제

사용자 변경 스콧

2 호랑이 식별

계정 차단 해제

> 비밀번호를 다시 호랑이로 변경, 계정 터놓다

더보기

++ 신청

1. 테스트 전용 계정을 만듭니다.

( ID: TEST_ACCOUNT PW: TIGER )

사용자 TEST_ACCOUNT 만들기
2 타이거로 확인됨;

2. LOGIN을 활성화하기 위해 DB에 권한을 부여합니다.

TEST_ACCOUNT에 대한 연결을 부여합니다.

명령 3-6은 TEST_ACCOUNT에 의해 실행됩니다(권한 필요) >>>> TEST_ACCOUNT에 EMP 테이블 권한 부여.. 해결

CONN 스콧/타이거
EMP에서 TEST_ACCOUNT에 SELECT를 부여합니다.


SALGRADE에서 TEST_ACCOUNT에 SELECT를 부여합니다.


CONN TEST_ACCOUNT/호랑이

3. 직원의 이름, 직업, 급여 및 급여 수준을 출력하시겠습니까?

E.JOB, E.SAL, S.GRADE 선택
2 SCOTT EMP E, SCOTT SALGRADE S
3 S. LOSAL과 S. HISAL 사이의 E. SAL;

4. 부서 20의 사원과 같은 급여를 받는 사원의 이름, 급여, 부서번호를 출력하시오.

ENAME 선택, 섹션 번호
2 SCOTT.EMP
3 WHERE SAL IN(SCOTT.EMP에서 SAL 선택, DEPTNO = 20인 경우);

5. 이름에 T가 포함된 사원과 같은 부서에서 근무하는 사원의 사원번호와 이름을 출력하시오.

EMPNO, ENAME 선택
2 SCOTT.EMP
3 WHERE DEPTNO IN(SCOTT.EMP에서 DEPTNO 선택, ‘%T%’와 같은 ENAME);

6. BLAKE라는 사원보다 늦게 입사한 사원의 이름과 입사일을 출력하시오.

C.ENAME, C.HIREDATE 선택
2 SCOTT EMP E, SCOTT EMP C
3 WO C.설정 > E.설정
4 AND E.ENAME = ‘블레이크’;
.

7. TEST_ACCOUNT 계정에 테이블을 만들고 이 테이블을 선택하고 업데이트할 수 있는 SCOTT 권한을 부여합니다.

CONN 시스템/오라클
GRANT TEST_ACCOUNT용 테이블 생성;
CONN TEST_ACCOUNT/호랑이

사용자 데이터 테이블 생성
2(숫자 없음(2),
3MSG VARCHAR2(20));

GRANT SELECT, 업데이트 ON TEST_ACCOUNT.USERDATA TO scott;

(예)
SQL> 설명 사용자 데이터

당신의 이름? 범주
————————————————– —— ——– ——— ———— ——
번호 없음(2)
MSG VARCHAR2(20)

.

8. SCOTT 계정에서 EMP 테이블을 복사하는 COPY_EMP5 생성(단, copy_emp5가 이미 있는 경우 삭제하고 다시 생성)

CONN 스콧/타이거
테이블 COPY_EMP5 생성
2AS
3 EMP에서 * 선택;
.

9. COPY_EMP5 테이블의 부서 ID 10에 있는 직원의 직원 ID, 이름, 급여 및 부서 ID만 표시하는 CEMP5 보기를 만듭니다.

CONN 시스템/오라클
GRANT SCOTT CREATE VIEW;
스콧/타이거 연결

CEMP5 보기 만들기
2AS
3 EMPNO, ENAME, SAL, DEPTNO 선택
4 EMP에서
5 WO ABTNR = 10;

10. 이 보기를 선택하려면 TEST_ACCOUNT 권한을 부여하십시오.

TEST_ACCOUNT에 SCOTT.CEMP5에 대한 선택 권한을 부여합니다.


.

11. TEST_ACCOUNT에서 CEMP5를 통한 데이터 액세스 가능 여부를 선택합니다.

* SCOTT.CEMP5에서 선택;

EMPNO ENAME SAL DEPTNO
———- ———- ———- ———-
7782 클락 2450 10
7839 킹 5000 10
1111 홍 3000 10
.

12. COPY_EMP5 테이블의 JOB 열에 IDX_CEMP5_ENAME이라는 인덱스를 생성합니다.

CONN 스콧/타이거
색인 생성 IDX_CEMP5_JOB
2 ON COPY_EMP5(주문);
.

13. 데이터 사전을 쿼리하여 아래 결과를 확인합니다.

INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS 선택
USER_INDEXES 중 2개
3 WHERE TABLE_NAME = ‘COPY_EMP5’;

(예)
INDEX_NAME INDEX_TYPE TABLE_NAME 고유
———- ———- ————- ———
IDX_CEMP5_ENAME 일반 COPY_EMP5 고유하지 않음
.

14. 인덱스를 사용하려면 SELECT 문을 완성하십시오.

이메일, 직업 선택
COPY_EMP5 중 2개
3 WHERE 직업 = ‘매니저’;

ENAME 주문
———- ———
존스 매니저
블레이크 매니저
클라크 매니저

.
15. IDX_CEMP5_ENAME 인덱스 삭제

드롭 인덱스 IDX_CEMP5_JOB;
.