Oracle 학습3
71369 단어 Oracle
1 DML 문
-- DML , !
-- DML ,
-- , ,
-- , ,
-- , ,
--
INSERT INTO DEPT(DEPTNO,DNAME,LOC_ID) VALUES (50,' ',1000);
INSERT INTO DEPT(DEPTNO,DNAME,LOC_ID) VALUES (60,' ',1001);
-- ,
INSERT INTO DEPT VALUES (50,' ',1000);
INSERT INTO DEPT (DEPTNO,DNAME) VALUES (50,' ');
INSERT INTO DEPT (DEPTNO,DNAME,LOC_ID) VALUES (60,' ',NULL);
ROLLBACK;
COMMIT;
INSERT INTO EMP VALUES (8000,' 1',' ',7602,'9-12 -1987',3000,1000,20);
INSERT INTO EMP VALUES (8001,' 1',' ',7602,TO_DATE('1987-12-5','YYYY-MM-DD'),3000,1000,10);
-- , ,
INSERT INTO DEPT_BAK SELECT * FROM DEPT;
-- UPDATE
-- UPDATE , , ,
-- , ,
UPDATE EMP SET ENAME = ' 2',JOB = ' ' ,SAL= 3500,COMM= 1500 WHERE EMPNO=8001;
--
DELETE FROM DEPT WHERE DEPTNO >40;
병합문구: Oracle 9i에 추가된 문구: 조건에 따라 표에서 데이터를 수정하거나 삽입하는 기능을 수행하고 삽입된 데이터 줄이 목적표에 존재하면 UPDATE를 실행하며 존재하지 않으면 INSERT: 1. 단독 수정을 피한다. 2. 성능과 응용성을 향상시킨다. 3. 데이터 창고 응용 프로그램에서 특히 유용하다.
MERGE INTO DEPT_BACK D
USING DEPT S
ON (D.DEPTNO = S.DEPTNO)
WHEN MATCHED THEN
UPDATE SET D.DNAME = S.DNAME, D.LOC_ID = S.LOC_ID
WHEN NOT MATCHED THEN
INSERT VALUES (S.DEPTNO, S.DNAME, S.LOC_ID);
2 DDL 문
1. 건표문
--
CREATE TABLE STUDENT(
SID NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(10),
GRADE VARCHAR2(20),
SEX CHAR(2) DEFAULT ' ',
BIRTHDAY DATE
);
--
CREATE TABLE DEPT_BACK
AS
SELECT * FROM DEPT;
--
DROP TABLE DEPT_BACK;
CREATE TABLE DEPT_BACK
AS
SELECT DEPTNO " ",DNAME " " FROM DEPT WHERE DEPTNO <= 30;
2. 테이블 구조 수정
-- , ,
-- :1. ;2. ;3. ( , )
-- , ,
ALTER TABLE STUDENT ADD TEL VARCHAR2(11);
ALTER TABLE STUDENT ADD ADDR VARCHAR2(20) ;
SELECT * FROM STUDENT;
--
-- , ,
ALTER TABLE STUDENT MODIFY TEL NUMBER(11);
ALTER TABLE STUDENT MODIFY TEL VARCHAR2(11) ;
-- , ,
ALTER TABLE STUDENT MODIFY SEX CHAR(2) DEFAULT ' ';
INSERT INTO STUDENT (SID,SNAME,GRADE,BIRTHDAY) VALUES (1003,' 3',' ',TO_DATE('1985-12-8','YYYY-MM-DD'));
-- , .
-- ,
ALTER TABLE STUDENT MODIFY GRADE VARCHAR2(20);
--
ALTER TABLE STUDENT DROP COLUMN ADDR;
-- ,TRUNCATE TABLE DELETE ,
TRUNCATE TABLE DEPT_BACK;
, DELETE , 。 TRUNCATE
RUNCATE TABLE
DDL , , DELETE ROLLBACK
,DELETE
:TRUNCATE TABLE table_name;
3. 테이블 이름 수정
Oracle , 。 DDL RENMAE
RENAME , 、 、
, DBA
:RENAME old_name TO new_name;
RENAME STUDENT TO STUDENT_NEW;
3 트랜잭션
1. 첫 번째 실행에서 시작된 DML 문장 2. 끝: (1) COMMIT 또는 ROLLBACK (2) DDL or DCL 문장(은밀한 제출 사물) (3) 사용자 연결이 이상하거나 사용자가 연결을 끊거나 (4) 시스템 붕괴(은밀한 스크롤) 3. 업무는 여러 상황에서 끝난다.일반적으로 사무가 발생한 사용자가 명령을 통해 표시되는 제어 사무의 끝 (COMMIT와 ROLLBACK) 을 회답해야 사무 중의 데이터 변화의 통제성을 확보할 수 있다.4. 사용자가 직접 업무를 제어하는 것을 제외하고 다른 상황은 은밀하게 업무를 끝낼 수 있다.은식으로 사무를 끝내는 예측할 수 없기 때문에, 가능한 한 은식으로 사무를 끝내는 것을 피해야 한다
1. Oracle에서 업무를 통제하는 주요 명령식인 COMMIT와 ROLLBACK 명령, 그리고 보조적인 SAVEPOINT 명령 2. COMMIT와 ROLLBACK을 사용하여 업무를 통제하면 다음과 같은 장점이 있다(1) 데이터의 일치성을 확보한다.수정된 데이터(일치하지 않는 데이터)는 제출하기 전에 다른 사용자가 볼 수 없는 데이터(2) 영구적으로 데이터가 효력이 발생하기 전에 수정된 데이터를 다시 보기 (3) 관련 조작을 함께 구성한다.하나의 업무에서 관련 데이터가 바뀌거나 모두 성공하거나 모두 실패합니다
커밋 또는 롤백 전 데이터의 상태 1, 트랜잭션 시작 후 일련의 DML 작업이 수행됩니다.업무가 끝나기 전에 수정된 데이터는 복구할 수 있다. 2. 현재 사용자는 DML 작업의 결과를 볼 수 있다. 3. 다른 사용자는 DML 작업의 결과를 볼 수 없다. 4. 조작된 데이터는 잠겨 있고 다른 사용자는 이 데이터를 수정할 수 없다.
제출 후 데이터의 상태 1. 데이터의 수정은 데이터베이스에 영구적으로 기록됩니다.2. 데이터 이전의 상태가 영구적으로 분실된다.3. 모든 사용자가 조작 후의 결과를 볼 수 있다.4. 기록 자물쇠가 풀리고 다른 사용자가 이 기록을 조작할 수 있다.
지정된 태그 점으로 폴백
-- ,
-- ,
INSERT INTO DEPT VALUES (50,' ',1000);
SAVEPOINT A;
DELETE FROM DEPT D WHERE D.DEPTNO > 30;
SAVEPOINT B; -- B 10,20,30
UPDATE DEPT D SET D.DNAME=' ' where d.deptno=10;
ROLLBACK TO B;
COMMIT;
--
ROLLBACK TO A;
4 데이터베이스 객체 개요
개체 이름
묘사
테이블
기본 데이터 저장 대상, 줄과 열로 존재
구속
데이터 확인을 수행하여 데이터 무결성을 보장하는 객체
뷰
하나 이상의 테이블 데이터 표시
인덱스
쿼리 속도 향상
동의어
객체의 별칭
데이터베이스 객체의 이름 규칙: 1. 문자로 시작해야 합니다. 2, 숫자(0-9), 문자(a~z)와 세 개의 특수 문자(# $) 3, oracle의 보존 문자 4를 사용하지 마십시오. 같은 사용자 아래의 대상은 이름이 같을 수 없습니다.
데이터 형식
설명
VARCHAR2(size)
가변 길이 문자열
CHAR(size)
고정 길이 문자열
NUMBER(p,s)
숫자값
DATE
날짜 값
LONG
최대 2GB의 긴 문자열
CLOB
단위 문자열 데이터 최대 바이트 4G
RAW and LONG RAW
바이너리 데이터를 저장하는 길이 변환 문자열
BLOB
2진 데이터, 최대 4GB
BFILE
2진 데이터 외장형 스토리지, 최대 4GB
5 데이터베이스 객체 - 구속조건
제약은 테이블에서 강제로 실행되는 데이터 검사 규칙으로 삽입되거나 수정되거나 삭제된 데이터는 관련 필드에 설정된 검사 조건에 부합되어야 한다. 즉, 제약 조건이다. 제약 조건은 한 테이블의 한 필드에 구축될 수도 있고 한 테이블의 여러 필드에 구축될 수도 있다.표의 데이터가 상호 의존성이 있을 때 관련 데이터가 삭제되지 않도록 보호할 수 있다.Oracle은 다음과 같은 다섯 가지 유형의 무결성 제약을 지원합니다.
구속
분류하다
NOT NULL
비어있지 않음
UNIQUE Key
고유 키
PRIMARY KEY
메인 키
FOREIGN KEY
외부 키
CHECK
검열
--================================== ===============================================
-- , . ,
-- , , , ALTER TABLE
-- , , ,1, ;2. Oracle
-- , ( ), NULL
-- ,
DROP TABLE STUDENTS;
CREATE TABLE STUDENTS(
SID NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(20) CONSTRAINT SNAME_NN NOT NULL, --
GRADE VARCHAR2(20) NOT NULL --
);
INSERT INTO STUDENTS VALUES (1000,' 1');
INSERT INTO STUDENTS VALUES (1001,NULL);
-- , , , null
--
-- ( )
CREATE TABLE STUDENT(
SID NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(20) NOT NULL,
EMAIL VARCHAR2(20),
CONSTRAINTS EMAIL_UNI UNIQUE (EMAIL)
);
INSERT INTO STUDENT VALUES (1000,' 1','[email protected]');
INSERT INTO STUDENT VALUES (1001,' 1','[email protected]');
-- ( )
DROP TABLE STUDENT;
CREATE TABLE STUDENT(
SID NUMBER(4) PRIMARY KEY,
FIRST_NAME VARCHAR2(10),
LAST_NAME VARCHAR2(20),
CONSTRAINTS NAME_UNI UNIQUE (FIRST_NAME,LAST_NAME)
);
INSERT INTO STUDENT VALUES (1000,' ',' ');
INSERT INTO STUDENT VALUES (1001,' ',' ');
INSERT INTO STUDENT VALUES (1002,' ',' ');
INSERT INTO STUDENT VALUES (1003,' ',' ');
INSERT INTO STUDENT VALUES (1003,' ',NULL);
INSERT INTO STUDENT VALUES (1004,NULL,' ');
INSERT INTO STUDENT VALUES (1005,' ',NULL);
INSERT INTO STUDENT VALUES (1005,null,NULL);
INSERT INTO STUDENT VALUES (1006,null,NULL);
-- : ,
--
--
-- ? ,
--
--
DROP TABLE STUDENT;
CREATE TABLE STUDENT(
SID NUMBER(4),
SNAME VARCHAR2(20),
CONSTRAINTS PK_STU PRIMARY KEY (SID)
);
INSERT INTO STUDENT VALUES (1000,' 1');
INSERT INTO STUDENT VALUES (1001,' 1');
INSERT INTO STUDENT VALUES (1001,' 1');
INSERT INTO STUDENT VALUES (null,' 1');
-- ,
DROP TABLE STUDENT;
CREATE TABLE STUDENT(
FIRST_NAME VARCHAR2(10),
LAST_NAME VARCHAR2(20),
GRADE VARCHAR2(20),
CONSTRAINTS PK_STU PRIMARY KEY (FIRST_NAME,LAST_NAME)
);
INSERT INTO STUDENT VALUES (' ',' ','Java ');
INSERT INTO STUDENT VALUES (' ',' ','Java ');
INSERT INTO STUDENT VALUES (' ',' ','Java ');
INSERT INTO STUDENT VALUES (' ',' ','Java ');
INSERT INTO STUDENT VALUES (' ',null,'Java ');
INSERT INTO STUDENT VALUES (NULL,' ','Java ');
INSERT INTO STUDENT VALUES (NULL,null,'Java ');
-- ( )
-- , , null
--
-- , , ,
CREATE TABLE DEPT1(
DEPTNO NUMBER(4) PRIMARY KEY,
DNAME VARCHAR2(10)
);
CREATE TABLE EMPL1(
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(10),
DEPT_NO NUMBER(4),
CONSTRAINTS FK_EMP FOREIGN KEY (DEPT_NO) REFERENCES DEPT1 (DEPTNO)
);
-- , , , .
INSERT INTO DEPT1 VALUES (10,' ');
INSERT INTO DEPT1 VALUES (20,' ');
INSERT INTO DEPT1 VALUES (30,' ');
INSERT INTO EMPL1 VALUES (1000,' 0',' ',10);
INSERT INTO EMPL1 VALUES (1001,' 1',' ',10);
INSERT INTO EMPL1 VALUES (1002,' 2',' ',20);
INSERT INTO EMPL1 VALUES (1003,' 3',' ',20);
INSERT INTO EMPL1 VALUES (1004,' 4',' ',20);
INSERT INTO EMPL1 VALUES (1005,' 5',' ',NULL);
SELECT * FROM EMPL1;
SELECT * FROM DEPT1;
-- , , , .
DELETE FROM DEPT1 WHERE DEPTNO = 10;
DELETE FROM EMPL1 WHERE DEPT_NO = 10;
-- , , ,
DROP TABLE EMPL1;
DROP TABLE DEPT1;
-- ?
CREATE TABLE DEPT1(
DEPTNO NUMBER(4) PRIMARY KEY,
DNAME VARCHAR2(10),
LOCID NUMBER(4),
CONSTRAINTS LOC_UIN UNIQUE (LOCID)
);
CREATE TABLE EMPL1(
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(10),
DEPT_NO NUMBER(4)
);
-- , ALTER TABLE
ALTER TABLE EMPL1
ADD CONSTRAINTS FK_EMPL FOREIGN KEY (DEPT_NO) REFERENCES DEPT1 (DEPTNO);
-- ,
CREATE TABLE CARD(
CID NUMBER(4) PRIMARY KEY,
CNAME VARCHAR2(10)
);
CREATE TABLE PERSON(
PID NUMBER(4) PRIMARY KEY,
PNAME VARCHAR2(20),
CID NUMBER(4),
CONSTRAINTS FK_PER_CARD FOREIGN KEY (CID) REFERENCES CARD(CID),
CONSTRAINT CID_UNI UNIQUE (CID)
);
INSERT INTO CARD VALUES (1000,' ');
INSERT INTO CARD VALUES (1001,' ');
INSERT INTO PERSON VALUES (1,' 1',1000)
INSERT INTO PERSON VALUES (2,' 2',1000)
SELECT * FROM CARD;
SELECT * FROM PERSON;
-- ,
CREATE TABLE STUDENT(
SID NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(20)
);
CREATE TABLE COURSE(
CID NUMBER(4) PRIMARY KEY ,
CNAME VARCHAR2(20)
);
-- 1. ,
DROP TABLE STU_COUR;
CREATE TABLE STU_COUR (
SID NUMBER(4) ,
CID NUMBER(4),
CONSTRAINT FK1 FOREIGN KEY (SID) REFERENCES STUDENT (SID),
CONSTRAINT FK2 FOREIGN KEY (CID) REFERENCES COURSE (CID),
CONSTRAINT PK_STU_COUR PRIMARY KEY (SID,CID)
);
-- 2. ,
CREATE TABLE STU_COUR (
SCID NUMBER(4) PRIMARY KEY,
SID NUMBER(4) ,
CID NUMBER(4),
CONSTRAINT FK1 FOREIGN KEY (SID) REFERENCES STUDENT (SID),
CONSTRAINT FK2 FOREIGN KEY (CID) REFERENCES COURSE (CID)
);
INSERT INTO STUDENT VALUES (1,' 1');
INSERT INTO STUDENT VALUES(2,' 2');
INSERT INTO STUDENT VALUES(3,' 3');
INSERT INTO STUDENT VALUES(4,' 4');
INSERT INTO COURSE VALUES (1,'Corejava');
INSERT INTO COURSE VALUES (2,'Oracle');
INSERT INTO COURSE VALUES (3,'html');
INSERT INTO COURSE VALUES (4,'JavaScript');
INSERT INTO COURSE VALUES (5,'JavaWeb');
INSERT INTO STU_COUR VALUES (1,1,1);
INSERT INTO STU_COUR VALUES (2,1,2);
INSERT INTO STU_COUR VALUES (3,1,3);
INSERT INTO STU_COUR VALUES (4,1,4);
INSERT INTO STU_COUR VALUES (5,2,1);
INSERT INTO STU_COUR VALUES (6,2,3);
INSERT INTO STU_COUR VALUES (7,2,4);
-- 1
SELECT S.SID,S.SNAME,C.CID,C.CNAME
FROM STUDENT S,COURSE C ,STU_COUR SC
WHERE S.SID = SC.SID AND C.CID=SC.CID AND S.SNAME = ' 1';
SELECT * FROM STUDENT;
-- CHECK ,
DROP TABLE USERS;
CREATE TABLE USERS (
ID NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(20),
SEX CHAR(2) DEFAULT ' ' CHECK (SEX IN (' ',' '))
);
CREATE TABLE USERS (
ID NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(20),
SEX CHAR(2) DEFAULT ' ' ,
CONSTRAINTS SEX_VALUE CHECK (SEX IN (' ',' '))
);
INSERT INTO USERS (ID,NAME) VALUES (1,' 1');
INSERT INTO USERS (ID,NAME,SEX) VALUES (3,' 1',' ');
SELECT * FROM USERS;
-- , ALTER TABLE , ,
ALTER TABLE USERS
DROP CONSTRAINTS SEX_VALUE;
-- , ,
CREATE TABLE DEPT1(
DEPTNO NUMBER(4) PRIMARY KEY,
DNAME VARCHAR2(10),
LOCID NUMBER(4),
CONSTRAINTS LOC_UIN UNIQUE (LOCID)
);
CREATE TABLE EMPL1(
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(10),
DEPT_NO NUMBER(4)
);
-- , ALTER TABLE
ALTER TABLE EMPL1
ADD CONSTRAINTS FK_EMPL FOREIGN KEY (DEPT_NO) REFERENCES DEPT1 (DEPTNO);
ALTER TABLE DEPT1
DROP PRIMARY KEY CASCADE;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Oracle 생성 향후 3일간의 전체 시점 (단계 상세)수요: X 좌표축 시간은 모두 정시 시간으로 앞으로 3일 동안의 예측을 보여준다(x 축은 앞으로 3일 동안의 정시 시간을 보여준다), 3시간마다 한 눈금, 가로 좌표는 모두 24개의 눈금을 보여준다 1단계: 현재 시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.