[Oracle DB] SQL –

* DDL 및 DML

-질의: 선택

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

– DDL: 생성, 수정, 삭제, 이름 바꾸기

와 성격이 다른 SQL 문이 뭐야?? 답변 : 5 > 구조적 정의이기 때문에 성격이 약간 다릅니다.

1. 선택 2. 삽입 3. 업데이트 4. 삭제 5. 삭제

문의그리고 DML
‘DQL’

* 거래: 여러 작업 처리와 관련하여 DML모음

> 예를 들어, 은행에서 송금 은행 부서 두 은행 업데이트하려면 ~ 해야 하다

-모 아니면 도 > 모든 것이 되기 위해, 또는 전부는 아닙니다 >TCL

TCL : 커밋(>모두), 롤백(>없음)

>커밋: 현재 거래 사이 DML나는 내가 들은 모든 것을 데이터베이스에 반영할 것이다.

> 반환: 취소하겠습니다.

읽기 일관성 > 읽을 때 저지르다날짜 하나만 표시

>롤백: 지금까지 이루어진 거래 취소. 실행 취소 세그먼트원래 값 빼기

>> 로그인 == > 로그아웃 거래까지

중간에 TCL현재 트랜잭션이 종료됩니다.,

다음 먼저 DML새로운 거래가 시작됩니다

(+자바~이다 DML모든 거래 > 그러므로 DML 모두 저지르다)

데이터 수정 후 저지르다 다른 건 하지마 CMD창에서 값을 다시 변경하려고 하면 창이 멈춥니다.

그 다음에 알파벳동시에 사용하는 방법?
하나.
순서대로(“선착순” 원칙에 따라)

2. 시간을 나누다

>> 멀티태스킹 환경 : 동시에 여러 작업을 처리할 수 있습니다.(가장 짧은 시간에 일을 끝내다)

내가 쓰는 데이터 차단나무 상자

*잠금: 트랜잭션 간의 상호 파괴적인 동작을 방지하기 위한 Oracle의 보호 관리 메커니즘

> DML 잠금: 한 줄씩 이루어집니다, 무기한 기다리다, 자동으로 일어난다잠금 행 수준

– 막 다른 골목: 혼자서는 상황에서 벗어날 수 없습니다. 차단

– 막 다른 골목 해결 : 유사한 작업을 동시에 수행

하나. 시간을 바꾸다.

2. 사업 양도

* 자동 커밋 / 자동 롤백

– 자동 커밋: 정상 종료 시 발생DDL/DCL사용할 때 발생

– 자동 롤백: 비정상 종료 발생 시 발생


* 데이터베이스 유형 : 동시성/진실성

진실성: 데이터베이스에 잘못된 데이터가 없어야 합니다.

>DML각 실행 후 다음 규칙이 제대로 준수되는지 확인합니다.,

문제가 없을 때만 반성하면 흠잡을 데가 없다..

EMP

직원 번호 직원 이름 샐러리 부서 번호

복사 엑스 복사 영형 500~5000 (외부 값 참조)

NULLX NULLX

: 기본 키 : 0이 아님 : 확인 : 알 수 없는 키

부서

부서 번호 부서

복사 엑스 독특한 가치

NULLX

: 기본 키 : 고유한

* 제한(의무)

-기본 키: 복사 X / NULL X

-제로가 아님

-확인

-고유한

– 알 수 없는 키

> 테이블을 생성할 때 제약 조건을 지정할 수 있습니다.,

제약 조건은 테이블 생성 후에도 지정할 수 있습니다..

> 데이터 유형 열 이름 (의무 약명) 제약 유형

>> (제한 약명)빠질 수 있다

테이블 이름_나뉘다_구속 유형의 이름을 지정할 때

위반한 제한 사항을 쉽게 확인할 수 있습니다.

> 지정하지 않으면 자동으로 SYS_C번호로 이름

* 외래 키 <-> 기본 키 관계
– 어린이 키 <-> 부모 키
– 슬레이브 키<-> 마스터 키

* 구속 방법

– 컬럼 레벨 구속 방법 > 열한계와 함께

SQL> 테이블 DEPARTMENT1 생성

2 (부서 번호(2) 기본 키,

DNAME VARCHAR2(20) 고유,

4 LOC VARCHAR2(20));

– 테이블 레벨 구속 방법

열 이름 데이터 유형,

열 이름 데이터 유형,

CONSTRAINT 제약 조건 이름 제약 유형(열 이름)

CONSTRAINT 제약 조건 이름 제약 유형(열 이름)

CONSTRAINT 제약 조건 이름 제약 유형(열 이름)

> 열그런 다음 끝에 제약 조건을 작성하십시오.

그러므로, 결국 무엇 나뉘다제한 사항이 있는지도 확인해야 합니다.

SQL> 테이블 EMP1 생성

2 (EMPNO NUMBER(4) 제약 조건 EMP1_EMPNO_PK 기본 키,

ENAME VARCHAR2(20) NOT NULL,

4 SALNUMBER(7,2),

5 DEPTNO 번호(2),

6 확인 제한 EMP1_SAL_CK(500에서 5000 사이의 SAL),

7 제약 조건 EMP1_DEPTNO_FK 외래 키(DEPTNO)

8일 참조 ABT1(ABTNR)); > FOREIGH KEY의 참조 열(PK 또는 UK여야 함)

* 오류가 발생했을 때 무엇이 ​​잘못되었는지 알기 위해

데이터 사전볼만한 가치가 있는 :사용자_목표에스

> 제한 사항에 대한 정보를 볼 수 있습니다.

SQL> DESC USER_CONSTRAINTS

두 테이블에 대한 Constraint 정보 확인 가능

>콜 열 제목 형식 A테이블 크기는 숫자로 변경할 수 있습니다.

SQL> COL CONSTRAINT_NAME FORMAT A18

SQL> COL TABLE_NAME FORMAT A10

SQL> COL SEARCH_CONDITION FORMAT A25

SQL> CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION 선택

2 USER_CONSTRAINTS에서

WHERE TABLE_NAME IN (‘EMP1’, ‘DEPT1’);

약명 / 유형(P: PRIMARY KEY, U: UNIQUE, C: CHECK, R: FOREIGN KEY) / 테이블 이름 / 상태

(제로가 아님검사 제약 조건 중 하나입니다.)

CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION

————- ———- ——- —-

SYS_C0011129 PDEPT1

SYS_C0011130 U 구획1

SYS_C0011131 CEMP1 “ENAME”은 NULL이 아닙니다.

EMP1_SAL_CK CEMP1 500에서 5000 사이의 SAL

EMP1_EMPNO_PK P EMP1

EMP1_DEPTNO_FK R EMP1

테이블 생성 후에도 제한 추가

>컴파트먼트1 책상 위에 위치 기둥에 고유한 제약 조건 추가

SQL> ALTER TABLE DEPT1

2 추가 제한 DEPT1_LOC_UK 고유(LOC);

제약조건 삭제

SQL> ALTER TABLE DEPT1

2 삭제 제한 DEPT1_LOC_UK;


*DDL

테이블 생성 만들다, 교환 변화, 끄다

이름 변경 이름 바꾸기, 테이블의 모든 행 삭제 짧은,

테이블에 주석을 달다 논평

>> 자동 커밋 세대

< 실습 >

* 테이블 닫다

(예)

회원

메모 번호(5)

ID VARCHAR2(20)

비밀번호 VARCHAR2(20)

MNAME VARCHAR(20)

MPOINT 번호(8)

등록 날짜

주소 VARCHAR2(50)

회원

MEMNO ID PW MNAME MPOINT REGDAT ADDR

1111 AAABBB 홍길동 500 02/27/23 서울 강남구

2222 BBB CCC 고길동 1500 02/27/23 인천

테이블 멤버 생성

(메모리 번호(5),

ID VARCHAR2(20),

비밀번호 VARCHAR2(20);

MNAME VARCHAR(20),

MPOINT 번호(8),

REGDATE,

주소 VARCHAR2(50));

구성원에 삽입

값(1111, ‘AAA’, ‘BBB’, ‘홍길동‘, 500, 시스데이트, ‘서울 강남구‘);

구성원에 삽입

값(2222, ‘BBB’, ‘CCC’, ‘고길동‘, 1500, SYSDATE, ‘인천‘);

*비밀번호 열 길이 50캐릭터 변경

-DDL: 테이블과 같은 구조를 정의하는 언어 > 변경

SQL> 테이블 멤버 변경

2 암호 VARCHAR2(50) 변경;

* MPOINT 열 삭제

SQL> 테이블 멤버 변경

2 드롭 열 MPOINT;

* 드롭 테이블

SQL> DROP TABLE MEMBER;

* 삭제된 데이터의 휴지통 확인 및 복원

SQL> 휴지통 표시

원래 이름 재활용 지역의 이름 개체 유형 드롭 시간

—- ————— —- ——– —- —————

부서 BIN$t7SEE3J0QUK/KT2KfF/CXA==$0 테이블 2023-02-27:12:08:15

회원 BIN$dSNmA8v2Rd2RB5qvKWVxnA==$0 테이블 2023-02-27:15:32:30

SQL> 플래시백 테이블 멤버

2 인쇄하기 전에;

* 테이블 이름 변경

SQL> 멤버를 멤버로 이름 바꾸기;

< 훈련 2 >

* 테이블의 모든 행 삭제

– 메모리에서 삭제;

– TRUNCATE 테이블 메모리;

> 삭제: DML / 다듬기: DDL

> DDL, DCL하다 ==> 자동 커밋일어난다

>> 그러므로짧은당신이 할 경우 자동. 저지르다이런 일이 일어났다 기본값으로 재설정 불가능!

끄다~이다 DML이 때문에 기본값으로 재설정 가능한

>> 따라서 삭제 시간 짧은가 더 빠르다

>> 단계짧은일부만 삭제할 수 없습니다.!

* 테이블에 레이블 지정

SQL> 테이블 MEM에 대한 주석

2 이다’멤버 테이블입니다..’;

> 주석은 설명로 확인할 수 없음

* 테이블 주석을 확인하는 방법 : USER_TAB_COMMENTS

SQL> 선택 *

2 USER_TAB_COMMENTS에서;

> 깨끗하다

SQL> 열 주석 형식 A25

SQL> 선택 *

2 USER_TAB_COMMENTS에서;

* ‘SQL>’을 ‘서울 A>’로 변경
SQL> SET SQLPROMPT “서울A>”

++ 응용 프로그램 문제

더보기

1. 그림 1과 같이 TABLE을 생성하는 SQL 문을 작성합니다.

커스텀 테이블 생성
(CUST_ID NUMBER(6),
CUST_GENDER_NUMBER,
CUST_NAME VARCHAR2(10));
.

2. 그림 2와 같이 데이터를 추가하는 SQL 문을 작성합니다.

커스텀에 삽입
VALUES(1, 1, ‘이창길’);

커스텀에 삽입
VALUES(2, 0, ‘마지막 지연’);

커스텀에 삽입
값(3, 1, NULL);

커스텀에 삽입
VALUES(4, 0, ‘이나영’);

커스텀에 삽입
VALUES(5, 1, ‘김경숙’);

3. GRADE 열을 CUST 테이블에 추가하는 SQL 문을 작성합니다.
(단, 등급은 두 자리 숫자)

테이블 커스텀 변경
레벨 번호 추가(2);

4. GRADE 열에 TYPE을 4자리 숫자로 변경하는 SQL 문을 작성하십시오.

테이블 커스텀 변경
등급 번호 변경(4);
.

5. CUST_ID 열에 PRIMARY KEY 제약 조건을 추가합니다(하지만 제약 조건 이름은 CUST_ID_PK 임).

테이블 커스텀 변경
제한 CUST_ID_PK 기본 키 추가(CUST_ID);

6. CUSTOMER 테이블을 복사하여 CUSTOMER 테이블 생성

고객 테이블 생성
처럼
* 고객별 선택;
.

7. 그림 3과 같이 정보를 확인할 수 있는 SQL 문을 작성합니다.

CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME 선택
USER_CONSTRAINTS에서
WHERE TABLE_NAME = ‘고객’;

CONSTRAINT_NAME C TABLE_NAME
——————————————— – —- ———–
CUST_ID_PK P 고객

8. BONUS 테이블에 EMPNO 열을 추가합니다.
(테이블이 없으면 테이블을 만들어서 연습하세요)
.
테이블 보너스 변경
직원 번호 추가(4);

9. EMPNO 열에 PK 제약 조건 추가

테이블 보너스 변경
제한 BONUS_EMPNO_PK 기본 키 추가(EMPNO);
.

10. ENAME 열에 UK 제한을 추가합니다.

테이블 보너스 변경
제한 BONUS_ENAME_UK 고유 항목 추가(ENAME);

11. SAL 500~5000 사이의 값만 올 수 있음(CHECK 제약 추가)

테이블 보너스 변경
Constraint BONUS_SAL_CK CHECK 추가(SAL 500~5000)

12. 제약 조건이 올바르게 설정되었는지 확인하기 위해 데이터 사전을 쿼리합니다.

COL CONSTRAINT_NAME 형식 A18
COL TABLE_NAME 형식 A10
COL SEARCH_CONDITION 형식 A25

CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION 선택
USER_CONSTRAINTS에서
WHERE TABLE_NAME IN (‘보너스’);

CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION
————- ———- ——- —-
BONUS_EMPNO_PK P 보너스
BONUS_ENAME_UK U 보너스
BONUS_SAL_CK C 보너스 세일 500~5000

13. 샘플 데이터 추가(INSERT Data Satisfying Constraints, 5)

보너스에 삽입
VALUES(‘AAA’, ‘BBB’, 700, 100, 10);

보너스에 삽입
VALUES(‘BBB’, ‘CCC’, 800, 150, 20);

보너스에 삽입
VALUES(‘CCC’, ‘DDD’, 900, 200, 30);

보너스에 삽입
VALUES(‘DDD’, ‘EEE’, 1000, 250, 40);

보너스에 삽입
VALUES(‘EEE’, ‘FFF’, 1100, 300, 50);

ENAME JOB SAL COMM AMPNR
———- ——— ———- ———- ———-
AAABBB 700 100 10
BBB CCC 800 150 20
CCC DDD 900 200 30
DDD EEE 1000 250 40
EEE FFF 1100 300 50

SQL> 설명 보너스


——————
ENAME
일하다
남자 이름
오다
EMPNR <-- 숫자(4) 그림 1) SQL> 설명 고객
이름 제로? 유형
—————————————– ——– – ———————
고객 ID 번호(6)
CUST_GENDER 번호
CUST_NAME VARCHAR2(10)

그림 2)

SQL> cust에서 *를 선택하십시오.

CUST_ID CUST_GENDER CUST_NAME
———- ———– ———-
1 1 이창길
2 0 이지연
3 1
4 0 이나영
5 1 김경숙

.
그림 3)

SQL> /

CONSTRAINT_NAME C TABLE_NAME
——————————————— – —- ———–
CUST_ID_PK PNCUST