오늘의 수업내용
create user sqlDB identified by 1234;
grant connect , resource, dba to sqlDB; -- 역할 부여
select * from userTBL;
seqeunce 활용하기
create table userTBL1
as
select 순번 IDX, 고객이름 userName,
출생년도 birthYear, 주소 addr, 연락처 tel
from userTBL;
테이블 생성 확인
select * from userTBL1;
시퀀스(sequence) 생성
create sequence id_seq;
해당 시퀀스의 값을 증가
update userTBL1 set idx=id_seq.nextval;
where 레코드에 조건을 줌
having 집계함수에 조건을 줌
--범위 출력
select rownum, username from userTBL1
where rownum between 1 and 7;
-- between 시작 범위값을 1에서만 입력 가능
select rownum, username from userTBL1
order by username desc;
delete from buyTBL1
where username Like '김%'; -- 김으로시작되는 이름
delete from buyTBL1
where username Like '성%'; -- 성으로 시작되는 이름
select rownum, emp_no,
First_name, last_name from bigdata;
중간 값이 사라져도 rownum의 값은 변경 없이 내림차순
이유 : rownum은 레코드가 생성된 이후에 만들어지기 때문
범위 삭제
delete from bigdata where EMP_no between 1 and 7;
rownum 1번 삭제
delete from bigdata where rownum = 1;
rownum 2번 삭제
delete from bigdata where rownum = 2;
-- rownum 정렬(비순차적)
select rownum rnum, emp_no, First_name,
last_name from bigdata
order by first_name desc;
--order by정렬시 rownum순서 비순차적으로 정렬됨
--rownum은 레코드가 생성된 이후에는 유지되기 때문
-- rownum 정렬(순차적)
select rownum rnum, k.* from -- 쿼리에 별칭 지정
(select frist_name, last_name from bigdata order by bigdata.first_name desc) k;
-- rownum는 순차적으로 정렬
-- 쿼리가 안에서 먼저 동작 후 rownum가 생성되었기 때문
select rownum rnum, emp_no, First_name, last_name from
(select * from bigdata);
select rownum rnum, k.* from
(select * from bigdata) k;
--정렬 추가
select rownum rnum, k.* from
(select first_name, last_name from bigdata order by bigdata.first_name desc) k;
-- 범위 추가
select rownum rnum, k.* from
(select rownum rn , first_name, last_name from bigdata
order by bigdata.first_name desc ) k
where rownum between 1 and 7;
-- rownum 범위 설정 추가
select rownum rnum, p.*
from
(
select rownum rn, emp_no, first_name, last_name
from (
select * from bigdata
where First_name like '%shin%'
order by emp_no desc
) k -- 별칭
where rownum <= 10 -- 큰숫자 (RN 칼럼의 끝범위)
) p -- 별칭
where rn >= 1; -- 작은숫자 (RN 칼럼의 시작범위)
select * from buyTBL1 sample(20); -- (퍼센트)
-- 대략적으로 계산되어 나온다
-- 일정한 출력값이 아니므로 정확하지 않음
delete from t1
commit; -- 테이블 내부만 삭제 / 삭제내역 ↑, 삭제시간↑
drop table t2; --테이블 전부 삭제 / 삭제시간 ↓
truncate table t3;--테이블 내역 잘라내기(delete와 동일) / 삭제시간 ↓
create table p239
(
id number (5,2) -- (정수, 소수점)범위 자릿수를 나타낸다
);
insert into p239(id)
values(123.45);
insert into p239(id)
values(123.00);
-- 소수점 .00 = 0 출력값은 123으로 표기
insert into p239(id)
values(1234);
--소숫점 2자리포함 정수형은 3자리까지 입력 가능으로 오류
create table p239(
id number
);
insert into p239(id)
values(12345678901234567890123456789012345678901234567890);
-- 40번자리까지 정상입력
-- 이후 큰값은 0으로 통일되어 출력
select * from p239;
movieTBL 만들기
Create table movieTbl (
movie_id number(4),
movie_title nvarchar2(30),
movie_director nvarchar2(30),
movie_star nvarchar2(30),
movie_script clob, --텍스트파일
movie_film BLOB -- 바이너리파일(mp3,동영상 등)
);
sqllde 스키마명/비밀번호@호스트 control=입력한 테이터 문서
select * from movieTBL;
imgTBL 만들기
create table imgTBL(
idx number(4),
imgtitle nvarchar2(30),
imgCLOB CLOB, -- 텍스트 파일
imgBLOB BLOB -- 바이너리 파일
);
sqllde 스키마명/비밀번호@호스트 control=입력한 테이터 문서
select * from imgTBL;
CLOB, BLOB 데이터 삽입 방법
새로 이해한 내용(데이터형)
char(5) = 5개의 데이터블록중 3개의 블록을 유니코드가 차지
EX)
( | | | | |) -5개의 칸중 유니코드 '가'입력시
(ㄱ|ㅣ|ㅏ| |) 3개의 칸을 차지
nchar(5) = 5개의 데이터블록 중 1개의 블록이 유니코드가 차지
EX)
( | | | | | ) - 5개의 데이터블록 중 유니코드 '가'입력시
(가| | | | ) 1개의 칸에 개별로 유니코드가 입력 1개의 칸만 차지