***우편번호 만들는 법
***제약조건
***삭제,수정
--데이터 입력
-conn special/test
-select * from tab;
re:
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
JUSO1 TABLE
JUSO2 TABLE
-desc juso1;
re:
이름 널? 유형
----------------------------------------- -------- --------------------
NO NUMBER
IRUM VARCHAR2(20)
AGE NUMBER
CITY VARCHAR2(10)
HOBBY VARCHAR2(20)
--값 넗기
insert into juso1 values(1,'누구',20,'서울','놀기');
insert into juso1 values(2,'누구2',21,'부산','먹기');
SQL> select * from juso1;
NO IRUM AGE CITY HOBBY
---------- -------------------- ---------- ---------- -------------
1 누구 20 서울 놀기
2 누구2 21 부산 먹기
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--부분 삽입
insert into juso1(no,irum,age,city,hobby)values(3,'누구3',24,'충남','자여');
SQL> select * from juso1;
NO IRUM AGE CITY HOBBY
---------- -------------------- ---------- ---------- ---------
1 누구 20 서울 놀기
2 누구2 21 부산 먹기
3 누구3 24 충남 자여
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--널값 삽입
insert into juso1 values(3,'이장화',null,null,'null');
SQL> select * from juso1;
NO IRUM AGE CITY HOBBY
---------- -------------------- ---------- ---------- ----------------
1 누구 20 서울 놀기
2 누구2 21 부산 먹기
3 누구3 24 충남 자여
3 누구3 충남
3 이장화 null
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
insert into juso1 values(4,'이홍',13,'','그냥');
SQL> select * from juso1;
NO IRUM AGE CITY HOBBY
---------- -------------------- ---------- ---------- --------------
1 누구 20 서울 놀기
2 누구2 21 부산 먹기
3 누구3 24 충남 자여
3 누구3 충남
3 이장화 null
4 이홍 13 그냥
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--중복 방지 테이블 만들기
--나이는 21살 이상만 이름은 널값 허용 안함
--시티에는 기본값 서울 입력 안하면 기본값 삽입
--취미는 수영,먹기,자기,그냥에서 선택가능
create table juso3(
no number primary key,
irum varchar2(20) not null,
age number check(age>20),
city varchar2(20) default '서울',
hobby varchar2(10) check(hobby in('수영','먹기','자기','그냥'))
);
insert into juso3(no,irum,hobby) values(1,'홍길동','수영');
SQL> select * from juso2;
NO IRUM AGE CITY HOBBY
---------- -------------------- ---------- -------------------- -------
1 홍길동 서울 수영
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
insert into juso3 values(2,'김길동',25,'부산','자기');
select * from juso3;
NO IRUM AGE CITY HOBBY
----- -------------------- ---------- -------------------- -------
1 홍길동 서울 수영
2 김길동 25 부산 자기
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
insert into juso3 values(3,'nugu3',21,'','먹기');
select * from juso3;
NO IRUM AGE CITY HOBBY
----- -------------------- ---------- -------------------- --------
1 홍길동 서울 수영
2 김길동 25 부산 자기
3 nugu3 21 먹기
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
insert into juso3 values(4,'nugu4',22,'울산','먹기');
insert into juso3 values(null,'nugu5',30,'','그냥);
1행에 오류:
ORA-01400: NULL을 ("SPECIAL"."JUSO3"."NO") 안에 삽입할 수 없습니다
++++++++++++++
insert into juso3 (no,city)values("5","경북");
1행에 오류:
ORA-00984: 열을 사용할 수 없습니다
insert into juso3(no,irum,city)values(9,'nu9','춘천');
select * from juso3;
NO IRUM AGE CITY HOBBY
----- -------------------- ---------- -------------------- ----------
1 홍길동 서울 수영
2 김길동 25 부산 자기
3 nugu3 21 먹기
4 nugu4 22 울산 먹기
9 nu9 춘천
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--customer,product 테이블 만들기
--cus_id || pro_cd 컬럼은 기본키로
create table customer(
cus_cd char(5) primary key,
irum varchar2(20),
tel varchar2(20)
);
create table product(
pro_cd char(5) primary key,
irum varchar2(20),
price number,
cus_cd char(5)
);
++++++++++++++++++++++++++++++++++++++++++++++
--데이터 삽입
-customer테이블
insert into customer values('10','삼성','666-5555');
insert into customer values('20','LG','222-1111');
insert into customer values('30','대우','333-7777');
-product테이블
insert into product values('1111','탱크냉장고',500000,'30');
insert into product values('1112','무소음냉장고',550000,'10');
insert into product values('3111','센스선풍기',50000,'10');
insert into product values('3112','시원선풍기',50000,'20');
insert into product values('3110','시원선풍기2',50000,'50');
SQL> select * from customer;
CUS_I IRUM TEL
----- -------------------- --------------------
10 삼성 666-5555
20 LG 222-1111
30 대우 333-7777
SQL> select * from product;
PRO_C IRUM PRICE CUS_C
----- -------------------- ---------- -----
1111 탱크냉장고 500000 30
1112 무소음냉장고 550000 10
3111 센스선풍기 50000 10
3112 시원선풍기 50000 20
3110 시원선풍기2 50000 50
++++++++++++++++++++++++++++++++++++++++++++
--잘못된 데이터 취소
rollback;
SQL> select * from customer
2 ;
선택된 레코드가 없습니다.
SQL> select * from product;
선택된 레코드가 없습니다.
+++++++++++++++++++++++++++++++++++++
--기본키가 부모가 됨..
--일반 컬럼은 자식이 됨
--자식을 수정함
alter table product
add constraint prd_fk foreign key(cus_cd) --product 테이블의 cus_cd 가 customer 테이블의 cus_cd 참조
references customer(cus_cd);
--기본키 설정
alter table customer
add primary key(cus_cd);
alter table product
add primary key(cus_cd);
++++++++++++++++++++++++++++++++
select table_name from dictionary order by table_name;
desc user_cons_columns;
--테이블의 컬럼명 보기
select table_name,column_name from user_cons_columns;
SQL> col column_name format a10
SQL> select table_name,column_name from user_cons_columns;
TABLE_NAME COLUMN_NAM
------------------------------ ----------
PRODUCT CUS_CD
JUSO2 IRUM
JUSO2 AGE
JUSO2 HOBBY
JUSO2 NO
JUSO3 IRUM
JUSO3 AGE
JUSO3 HOBBY
JUSO3 NO
CUSTOMER CUS_CD
PRODUCT PRO_CD
11 개의 행이 선택되었습니다.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--db새로 삽입.
insert into customer values('50','신일','555-4444');
insert into product values('3113','시원선풍기',50000,'50');
----컬럼명 바꾸기(변경 됨..버전 사위 버전에서 가능)
alter table customer
rename suc_cd to cus_cd;
잘못된 컬럼 | 바뀔 컬럼
+++++++++++++++++++++++++++++++++++++++++
--사용자 소유의 제약
select * from user_constraints;
select * from user_cons_columns;
++++++++++++++++++++++++
-- 수정
update 테이블명 set 컬럼명1=값1,컬럼명2=값2,...컬럼명n=값n
where 조건
conn ejb/ejb
--데이터가 다 바뀜
update personnel set job='사무직',pay=2500;
rollback;
--조건을 주어야 부분 업데이트 가능
update personnel set job='사무직',pay=2500
where pname like 'A%';
select * from personnel;
--급여가 2000이상인 경우 업무를 '관리직'으로 변경
update personnel set job='관리직'
where pay>=2000;
--급여를 0.3% 인상
update personnel set pay=pay*0.3/100; -- pay=pay*1.03
--삭제
delete from 테이블명 where 조건;
delete from personnel;
select * from personnel;
---------------rollback의 범위
insert aaa...
insert bbb...
create table ccc(
)
commit 되어 버림
_______________________
update...
delete...
rollback...
rollback <= update를 하기 전까지
+++++++++++++++++++++++++++++++++++++++++++++++++++
-30번 부서에 근무하는 사람 삭제
delete from personnel where dno=30;
SQL> select * from personnel;
PNO PNAME JOB MANAGER STARTDAT PAY BONU
----- --------------- -------------------- ------- -------- ------ ----
1111 SMITH MANAGER 1001 90/12/17 1300
1114 JAMES 관리직 1001 90/04/12 5168
1001 BILL 관리직 89/01/10 9100
1118 MARTIN 관리직 1111 91/09/09 4485
1121 KIM 관리직 1114 90/12/08 5200
1123 PARK 관리직 1111 90/01/03 3250
2000 HELLO_KIM 관리직 1116 01/10/13 6500
----------------------------++++++++++++++++++++++++++++++++----------------------
conn special/test
select * from customer;
select * from product;
--거래처명이 '대우' 인 경우 삭제
delete customer where irum like '대우';
1행에 오류:
ORA-02292: 무결성 제약조건(SPECIAL.PRD_FK)이 위배되었습니다- 자식 레코드가
발견되었습니다
--자식 노드 부터 삭제후 부모 노드에 있는 데이터 삭제
delete product where cus_cd =30;
delete customer where irum like '대우';
SQL> select * from product;
PRO_C IRUM PRICE CUS_C
----- -------------------- ---------- -----
1112 무소음냉장고 550000 10
3111 센스선풍기 50000 10
3112 시원선풍기 50000 20
3113 시원선풍기 50000 50
3116 시원선풍기2 50000 60
SQL> select * from customer;
CUS_C IRUM TEL
----- -------------------- --------------------
10 삼성 666-5555
20 LG 222-1111
50 신일 555-4444
60 신일 555-4444
++++++++++++++++==우편번호 만들기==+++++++++++++++++++++++
www.phpschool.com
1.테이블 생성
CREATE TABLE ZIPCODE (
ZIPCODE VARCHAR2(7),
SIDO VARCHAR2(4),
GUGUN VARCHAR2(13),
DONG VARCHAR2(43),
BUNJI VARCHAR2(17)
);
commit;
2.데이터 파일 생성(d:\data\oracle\3-30.dat)
--값 사이는 , 로 구분
ex)
값,값,값,값,값
값,값,값,값,값
값,값,값,값,값
값,값,값,값,값
값,값,값,값,값
3.컨트롤 파일 생성(d:\data\oracle\3-30.ctl)
(절대 경로)
따로 (d:\data\oracle\3-30.ctl) 파일로 만들어줌
=================================================================
(파일내용)
load data infile 'd:\data\oracle\3-30.dat'
badfile 'd:\data\oracle\3-30.bad'
into table ZIPCODE insert
fields terminated by ',' optionally enclosed "'"
(ZIPCODE,SIDO,GUGUN,DONG,BUNJI)
===================================================================
4.실행(명령창에서 위치 'd:\data\oracle' 에서 3-30.ctl 파일이 존재하는곳)
sqlldr userid=special/test control=3-30.ctl direct=yes
5.확인(sqlplus에서)
select * from zipcode;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--동이름에 '부민' 이라는 글자가 포함된 주소 출력
select sido,gugun,dong from zipcode where dong like '%부민%';
re:
44 개의 행이 선택되었습니다.
'ORACLE' 카테고리의 다른 글
오라클 사용자 삭제//사용자 삭제//테이블 정보 (0) | 2024.01.17 |
---|---|
오라클 테이블 스페이스 (0) | 2024.01.16 |
오라클 연산/급여계산 (1) | 2024.01.16 |
오라클 연산/집합 (0) | 2024.01.16 |
오라클 문자열 검사 (2) | 2024.01.16 |