*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;
.