ORACLE

오라클 우편번호 만들는 법/제약조건/삭제,수정/데이터 입력

gold99 2024. 1. 16. 00:30

***우편번호 만들는 법
***제약조건
***삭제,수정
--데이터 입력
-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