기록해! 정리해!

5-예제2 본문

Oracle

5-예제2

zsuling 2022. 5. 20. 16:59

drop table school;

create table school(
idx char(3),
sname nvarchar2(10),
age number(3),
tel varchar2(15)
);

문제1. idx에 p.k 를 부여하여 school을 만드시오.

alter table school
add primary key (idx);

문제2. 레코드를 추가하시오.

insert into school(idx, sname, age, tel)
values ('101', '둘리', 12, '010-5037-6133');

insert into school(idx, sname, age, tel)
values ('102', '하니', 15, '010-1234-1212');

insert into school(idx, sname, age, tel)
values ('104', '영심이', 17, '017-5555-0341');

insert into school(idx, sname, age, tel)
values ('105', 'young won', 20, '010-5555-6363');

insert into school(idx, sname, age, tel)
values ('107', '대한민국', 22, '019-3245-1234');

insert into school(idx, sname, age, tel)
values ('109', '아름이', 25, '010-1212-5555');

문제3. 이름을 기준으로 내림차순 정렬하시오.

select * from school
order by sname desc;

문제4. 번호가 101, 104, 107 인 학생의 레코드를 출력하시오.

select * from school
where idx in(101, 104,107);

문제5. 105번의 이름을 영원으로 변경하시오.

update school set sname='영원'
where idx='105';

문제6. 104번의 나이를 15살로 수정하시오.

update school set age='15'
where idx='104';

문제7. 이름이 아름이인 학생의 전화번호를 삭제하시오.

update school set tel=''
where sname='아름이';

문제8. 전체 학생의 나이를 19살로 수정하시오.

update school set age='19'
where idx in(101,104,105,107,109);

문제9. 102번 학생을 삭제하시오.

delete from school
where idx='102';

문제10. 전체 레코드를 삭제하시오.

delete from school; --DML(롤백 가능)

drop table school; --DDL(롤백 불가능)


select * from school;


--252p
1. sname과 tel의 값의 길이를 구하시오
select length(sname)길이1, length(tel)길이2 from school;

2. 전체의 값을 하나의 컬럼에 나타내시오
select idx||sname||age||tel as 학생정보
from school;

3.별칭
select '번호:'||idx||',이름:'||sname||',나이:'||age||',전화번호:'||tel
as 학생정보
from school;

4.뷰
create view v_school
as
select '번호:'||idx||',이름:'||sname||',나이:'||age||',전화번호:'||tel
as 학생정보
from school;

select * from v_school;

5.쉼표 찾기 
select instr(학생정보,',')from v_school;

select instr(학생정보,',',1)from v_school; --첫글자부터 쉼표찾기
select instr(학생정보,',',8)from v_school; --여덟번째 글자부터 쉼표찾기

select instr(학생정보,',',1),instr(학생정보,',',8),instr(학생정보,',',14) from v_school;

 

6.문자 바꾸기
insert into school(idx, sname, age, tel)
values ('200', 'Park min', 25, '010-1212-5555');

select lower(sname),upper(sname),initcap(sname) from school;
--소문자 / 대문자 / 첫글자만 대문자

 

7. 뷰 별칭

create view v_school1
as
select lower(sname)소문자,upper(sname)대문자,initcap(sname)첫글자 from school;

select * from v_school1;

 

create view v_school2(소문자,대문자,첫글자)
as
select lower(sname),upper(sname),initcap(sname) from school;

select * from v_school2;

 

 

8.변환함수 (253p)


select * from school;

문자열을 문자열로 변환하는 함수 
select replace (tel,'-','') from school;
--  -가 ''(공백)으로 변함

select sname,replace(lower(sname),'min','민') 
,replace (tel,'-','') from school;

select tel,translate(tel,'0123','영일이삼')from school;

--0123이 영일이삼 으로 바뀜

 

select tel,substr(tel,0,3) from school;
--0번째부터해서 3번째 글자 나옴

select tel,substr(tel,0,3),substr(tel,5,4) from school; 

select tel,substr(tel,1,3),substr(tel,5,4),substr(tel,10,4) from school; 

select substr(tel,1,3)||substr(tel,5,4)||substr(tel,10,4) as "전화번호" from school
where tel is not null ;  --하나의 컬럼으로 만들 때

 

 

 

Create  table  t2
as
select   substr(tel,1,3) ||  substr(tel,5,4) || substr(tel,10,4)  as "전화번호" 
from   school
where tel  is  not  null  ;


select * from  t2 ;


select   substr(전화번호,1,3) || '-' || substr(전화번호,4,4) || '-' || substr(전화번호,8,4)  as "전화번호" 
from    t2
where tel  is  not  null  ;

'Oracle' 카테고리의 다른 글

6-1  (0) 2022.05.23
6-예제1(shopping)  (0) 2022.05.23
5-예제1(컬럼)  (0) 2022.05.20
5-3  (0) 2022.05.20
5-2  (0) 2022.05.20
Comments