기록해! 정리해!

6-SQL 기본문법 정리 본문

Oracle

6-SQL 기본문법 정리

zsuling 2022. 5. 24. 10:59

5/23

 

1) 정보처리 문제 6-1파일 보기

DDL-만들기 (ex.alter, drop) -롤백 불가능

DML-조작 (ex. select, insert, update, delete) -롤백 가능

DCL-권한 (ex. grant, revoke)

 

alter : 제약조건, 컬럼 등 큰거를 수정

update : 레코드 값을 수정

 

2) 구조

-선형 구조

Que(큐) : FIFO (먼저 들어간게 먼저 나온다)

Stack(스택) : FILO (먼저 들어간게 나중에 나온다)

Deck(데크) - 양쪽 끝에서 노트의 삽입과 삭제가 허용

 

-비선형 구조 (입출력 모호)

: 트리, 그래프 

 

3) 정규화

어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 한다

데이터 삽입시 릴레이션을 재구성할 필요성을 줄인다

효과적인 검색 알고리즘을 생성할 수 있다

 

4) 릴레이션의 기본키를 구성하는 어떤 속성도 null값이나 중복값을

   가질 수 없음을 의미하는 것 -개체 무결성 제약조건

 

5) 트랜잭션이 수행을 하는 도중 수행이 잘못되었고 데이터베이스가 모순상태에 있을 때 ,

   문제 있으면 롤백

          없으면 커밋

   (트랜잭션 : 작업처리의 단위)

 

6) 데이터베이스 설계 중 가장 먼저 수행되는 것 - 요구조건 분석 단계

 

7) 외래키와 가장 직접적으로 관련된 제약조건 - 참조 무결성

 

8) 후보키가 만족해야할 두 가지 성질로 타당한 것 (기본키를 대신할 수 있는) -유일성, 최소성

 

9) 프로시저의 역할

장점: 보안, 일관성, 속도

단점: 구현하기 어렵고 불편하다

 

10) 용어 

row=record=touple

컬럼=속성

필드: 행과 열이 교차하는 하나의 값

 

11) 집합함수

- count(*)를 제외한 모든 그룹함수들은 null을 무시한다

- 모든 자료형에 max, min 사용 가능

- 그러나, avg, sum은 숫자만 사용가능

 

2) insert ~~ select ~~ 구문

   : select 결과를 다른 테이블에 insert하는 구문

 

3) 트리거 (82p)

 

-원본테이블

1) 삭제하기

-지워진 테이블을 보관할 테이블
 create table delStudent(
 sno varchar2(3) ,
 sname nvarchar2(10),
 year varchar2(10),
 dept nvarchar2(10) ,
 delStudent date, --삭제한 날짜
 constraint   delStudent_sno_pk   primary  key(sno));

-트리거 생성 테이블
create or replace trigger trg_delStudent --만들거나 덮어씌우거나
after delete --삭제 후에 작동하게 지정
on student --트리거를 부착할 테이블
for each row --각 행마다 적용됨
begin
insert into delStudent 
values (:old.sno, :old.sname, :old.year, :old.dept, sysdate()); -- :old 테이블의 내용을 백업 테이블에 삽입
end;

 

delete from student 
where sno='600';

select * from student; --600 없음
select * from delStudent; --존재

 

2) 업데이트하기

 create table upStudent(
 sno varchar2(3) ,
 sname nvarchar2(10),
 year varchar2(10),
 dept nvarchar2(10) ,
 upStudent date,
 constraint   upStudent_sno_pk   primary  key(sno));

 

create or replace trigger  trg_upStudent
after update
on student
for each row
begin
insert into upStudent 
values (:old.sno, :old.sname, :old.year, :old.dept, sysdate());
end;

update student set sname='둘리'
where sno='700';

select * from student;
select * from upStudent;

select sysdate from dual;  --22/05/23 수정한 날짜만 띄워보기

select sysdate+10 from dual; --22/06/02 연산이 가능

 

4) 데이터베이스 모델링 111p

 

5) 중복빼고 여러개의 컬럼을 조인해서 사용하기

select s.*, c.cno, cname, credit, grade, midterm, final

from student s, enrol e, course c
where s.sno=e.sno and c.cno=e.cno;

 

--뷰로 만들어보기
create view v_join3
as
select s.*, c.cno, cname, credit, grade, midterm, final

from student s, enrol e, course c
where s.sno=e.sno and c.cno=e.cno;

select * from v_join3;

'Oracle' 카테고리의 다른 글

7-3 (프로시저)  (0) 2022.05.24
7-2  (0) 2022.05.24
7-1  (0) 2022.05.24
7-예제1(데이터 베이스 용어)  (0) 2022.05.24
6-2  (0) 2022.05.23
Comments