1. 데이터의 일련번호
데이터를 정리할 때 DB에서 일련번호를 부여할 수도 있다.
이 일련번호를 발생시킬 때는 특정 데이터를 구분하기 위해서이기 때문에 값에 중복해서 일련번호를 부여하진 않는다.
오라클 DB에서는 자동으로 일련번호를 부여할 수 있다.
이것을 시퀀스(Sequence)를 생성한다 라고 부른다.
M*Sql에서는 Identity 제약조건을 만든다 라고 부른다.
(M으로 시작하는 SQL 프로그램; Maria DB, My-Sql 등)
이제 어떻게 일련번호를 부여하는지 알아보자.
2. 시퀀스 연습하기
1) 테이블 생성하기
create table sungjuk(
sno int not null -- 일련번호
,uname varchar(50) not null
,kor int not null
,eng int not null
,mat int not null
,tot int
,aver int
,addr varchar(50) -- 주소
,wdate date -- 등록일(년월일시분초)
);
위와 같은 9개의 칼럼을 가진 테이블을 만들었다.
여기서 date 라는 자료형이 처음 등장했다!
이것은 날짜를 표현하는 자료형이다.
값을 따로 지정할 때는 문자형처럼 ' ' 안에 넣어주며 '2022-08-22'와 같은 형태로 넣으면 된다.
시간은 : 를 사용하여 구분해준다.
* 현재 날짜를 표기할 때는 함수가 있다.
sysdate라는 함수를 입력하면 된다(괄호가 없는 함수이다).
2) 시퀀스(Sequence)
시퀀스는 일련번호를 자동으로 생성해준다.
- 시퀀스 생성 : create sequence 시퀀스명;
- 시퀀스 삭제 : drop sequence 시퀀스명;
- 시퀀스 생성 형식)
create sequence 시퀀스명
increment by 증가값 start with 시작값;
이제 시퀀스를 생성해보자.
-- sungjuk 테이블에서 사용할 시퀀스 생성
create sequence sungjuk_seq;
-- sungjuk_seq 시퀀스 삭제
drop sequence sungjuk_seq;
-- 시퀀스를 이용해서 행추가
insert into sungjuk(sno, uname, kor, eng, mat, addr, wdate)
values (sungjuk_seq.nextval, '홍길동', 89, 85, 90, 'Seoul', sysdate);
select * from sungjuk;
시퀀스인 sungjuk_seq를 만든 뒤 .nextval 이란 함수를 사용하여 시퀀스를 순차적으로 표기하게 하였다.
3. 문제
● [문제]
-- 문1) 전체행에 대해서 총점(tot), 평균(aver)을 구하시오
update sungjuk set tot=kor+eng+mat, aver=(kor+eng+mat)/3;
-- 문2) 이름에 '나' 글자가 있는 행을 조회하시오
select uname
from sungjuk
where uname like '%나%';
-- 문3) 주소가 서울, 제주 행을 조회하시오
select uname, addr
from sungjuk
where addr = 'Seoul' or addr = 'Jeju';
select uname, addr
from sungjuk
where addr in ('Seoul', 'Jeju');
-- 문4) 국영수 세과목 모두 90점이상 행이 몇개인지 조회하시오
select count(*)
from sungjuk
where kor>=90 and eng >=90 and mat >=90;
select count(*) as 갯수
from sungjuk
where kor>=90 and eng >=90 and mat >=90;
-- 문5) 주소별로 정렬해서 조회하시오. 주소가 같다면 일련번호 순으로 다시 정렬해서 조회하시오
select uname, addr
from sungjuk
order by addr;
select uname, addr, sno
from sungjuk
order by addr, sno;
'⁂ Oracle DB > : 기본 익히기' 카테고리의 다른 글
[Oracle] #3-4 데이터 가공하기 : distinct, group by, 집계함수 (0) | 2022.08.22 |
---|---|
[Oracle] #3-3 자료형과 제약 조건 (0) | 2022.08.22 |
[Oracle] #3-1 sort정렬과 Alter문 (0) | 2022.08.22 |
[Oracle] #2-3 Where 조건절(연산자, between, in, like)과 Null값 (0) | 2022.08.19 |
[Oracle] #2-2 기초 SQL문 - select, as, commit, rollback (0) | 2022.08.19 |