[  ORACLE DB 특수문자 제거, 숫자만 빼고 다 제거 쿼리문   ]





--치환할 문자를 |로 구분하여 입력 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve', '') FROM DUAL --결과: Hungry, . - Jobs ; --문자를 제거만 할꺼면 3번재 파라미터는 생략가능 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve') FROM DUAL --결과: Hungry, . - Jobs ; SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', 'Stay|Foolish|Steve', '###') FROM DUAL --결과: ### Hungry, ### ###. - ### Jobs 2005 ; --특수문자 제거 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', '[[:punct:]]') FROM DUAL --결과: Stay Hungry Stay Foolish Steve Jobs ; --숫자를 제외한 모든문자 제거 (숫자만) SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[^[:digit:]]') FROM DUAL --결과: 2005 ; --$같은 특수문자를 치환하기 위해서는 Escape 문자(\)를 붙여 줘야함 SELECT REGEXP_REPLACE('$Stay Hungry, Stay Foolish. - Steve Jobs', '-|\$') FROM DUAL --결과: Stay Hungry, Stay Foolish. Steve Jobs





참조 : http://gent.tistory.com/82

출처: http://wjheo.tistory.com/entry/특수문자-제거-숫자만-빼고-다-제거 [IT world]

출처: http://wjheo.tistory.com/entry/특수문자-제거-숫자만-빼고-다-제거 [IT world]

[    JSP DB(데이터베이스)    ]





'스터디 > JSP' 카테고리의 다른 글

JSP 파일업로드  (2) 2017.08.16
JSP 커넥션 풀(Connection Pool)  (0) 2017.08.16
JSP 자바 빈즈(JAVA BEANS)  (0) 2017.08.14
JSP 에러페이지에 대하여...  (0) 2017.08.11
JSP 쿠키(cookie)에 대하여...  (0) 2017.08.11

[    테이블 수정하기 Alter Table    ]




테이블을 생성하고... DROP하는건 다 하실 수 있다는 전제하에 Alter table에 관해 포스팅을 진행하겠습니다.



1. 테이블에 새로운 컬럼(필드)를 추가하기


ex)

Alter Table 테이블명 ADD name varchar2(10) Not null




2. 테이블의 특정 필드의 데이터 타입을 변경하기


ex)

Alter Table 테이블명 MODIFY name varchar2(30)




3. 테이블의 특정 컬럼을 삭제하기


ex)

Alter Table 테이블명 DROP COLUMN 컬럼명;




4. 테이블의 컬럼명 변경하기


ex)

Alter Table 테이블명 RENAME COLUMN 변경전컬럼명 TO 변경할컬럼명;





5. 테이블의 특정 컬럼에 제약조건 추가하기


ex)

Alter Table 테이블명 ADD CONSTRAINTS 제약조건별칭 Primary key (col3);

Alter Table 테이블명 ADD CONSTRAINTS 제약조건별칭 Foreign key (bno) references 참조할테이블(참조할컬럼);





6. 테이블의 특정 컬럼에 걸려있는 제약조건 삭제하기


ex)

Alter Table 테이블명 DROP CONSTRAINTS 제약조건별칭;


참고)

제약조건 별칭은

select * from user_constraints where table_name='테이블명' 으로 조회해서 제약조건 별칭을 알 수 있습니다.

[    Oracle DB 제약조건의 종류와 사용    ]



이번 포스팅에서는 Oracle DB에서 값을 넣을 때 제약사항을 거는 방법에 대해서 알아보겠습니다.


제약조건은 데이터의 무결성을 보장받기 위해서 사용하게 됩니다.


[종류]


1. Not Null

: 컬럼 생성시 지정하지 않으면 default로 Null이 허용가능하게 되어 있습니다. 따라서 해당 컬럼값을 입력하지 않고 튜플을 삽입시 Null이 들어가게 되는데 

  이를 방지하기 위해서는 Not Null을 기술해 주면 됩니다.


ex) name varchar2(10) NOT NULL;


2. UNIQUE

: 유일한 값만 들어가도록 하고 싶을 때 사용합니다. 즉, 중복이 허용되지 않도록 데이터를 넣어야하는 경우 사용합니다.


ex) bno number UNIQUE;


3. Primary Key

: 기본키입니다. 기본키란 해당 테이블을 대표하는 컬럼으로 Primary key로 지정된 컬럼은 Null값을 가지지 못하며, 중복된 값을 가질 수 없습니다.

 즉, 이 primary key에 의해 튜플들은 중복되지 않고 구분될 수 있게 됩니다.

 따라서 UNIQUE와 NOT NULL을 동시에 정의한 것과 효과가 같게 됩니다.


ex) bno number primary key;


4. Foreign Key

: 외래키를 의미하는 제약조건입니다. 외래키는 참조 무결성을 위해 사용되는데 

이 외래키로 지정된 컬럼은 반드시 다른 테이블의 "Primary key(기본키)"와 참조 관계를 가지게 되고

외래키로 지정된 컬럼은 참조관계를 가진 테이블의 기본키에 있는 값만을 가질 수 있습니다.

즉, Null 값은 허용하되, 참조하고 있는 테이블의 기본키에 있는 값만 입력될 수 있습니다.


사용법은 ) constraints 지정할외래키명 foreign key references 참조할테이블명(참조할기본키컬럼명)


ex) create table testTable(

bno number primary key,

title varchar2(200) not null,

cateId number not null,

constraints fk_cateId foreign key references cateTable(cateId)

)


5. CHECK

: Mysql enum 데이터 타입과 비슷한 효과를 내주는 거로서, 입력될 수 있는 데이터의 종류를 제한할 수 있습니다.

예를들어)

gender varchar2(8) CHECK ( gender IN ('남','여') ) 로 해서 만든다면 gender 필드에는 남, 여 둘 중 하나의 값만 들어갈 수 있게됩니다.

또한,

bno number primary key CHECK ( bno between 1 and 1000 ) 으로 한다면 bno값은 1부터 1000 사이의 값만을 가질 수 있습니다.




참고)

위와같이 constraints 키워드를 이용해서 제약조건을 걸어두면, 해당 제약조건을 확인하는 방법

constraint가 지정된 테이블을 확인하는 방법이 있습니다.


select * from user_constraints where table_name = '테이블명' 을 하면 해당 테이블에 제약조건으로 지정한 정보를 다 볼 수 있습니다.

[    Oracle DB 대표적으로 많이 쓰이는 데이터 타입 정리    ]



1. 문자


-    char(n)

: n Byte 고정 크기

-    varchar2(n)

: 최대 n Byte 크기지만 사용한 Byte에 맞게끔 저장됨 


ex) varchar2(20) 으로 20Byte로 생성했는데, "남자" 라고 2글자 4Byte만 저장했다면 4Byte로 저장되게 됨.


될 수 있으면 char보단 varchar2 사용이 권장된다.


참고)

Mysql에서는 varchar2가 아닌 => varchar(n) 을 사용하고, 긴 문자열을 다룰 때 text 라는 데이터 타입도 자주 사용됩니다.


2. 숫자

-    Number(p,s) 

숫자에서 가장 대표적으로 사용되는 데이터 타입입니다. 정수, 실수 다 사용 가능하며 p는 유효 숫자 개수, s는 소수점 이하 자리수를 가리킵니다.

ex) Number(5,1) 로 지정하고 데이터 234.15를 insert하면 5개 숫자가 유효하고 소수 첫번째 자리까지 표현함으로 반올림되어 234.2가 저장됩니다. 

만약, Number(3.1)로 해놧는데 234.15를 저장하면 소수점 이하 첫째 자리까지해서 234.2가 되더라도 총 4개의 숫자를 저장해야하는데 p를 3으로 입력했기 때문에

오류가 발생합니다.

p와 s는 생략 가능합니다.


참고)

Mysql에서는 Number 속성이 없습니다.

숫자를 사용할 때는

- int(n)

- bigInt(n)

- float 

등을 사용합니다. 이때 주의할 점은 bigInt의 경우 자바에서 String 타입으로 받아야 한다는 점입니다.!!


3. 날짜

-    Date

: 연/월/일 시/분/ 까지 표현할 수 있는 많이 사용되는 날짜 타입입니다.

default 값으로 현재 날짜를 입력하고자 할 때는 sysDate를 사용해 입력합니다.

ex) insert into table명(regdate) values( sysdate );

-    Timestamp

: Date가 시/분/초 까지만 표현 가능하다면 timestamp는 연/월/일 시/분/초 + ms(밀리세컨드) 까지 더 정밀하게 표현할 수 있습니다.

default 값으로 현재 날짜를 입력하고자 할 때는 systimestamp를 사용합니다.

ex) insert into table명(컬럼명) values( systimestamp );


참고)

Mysql에서는 now()를 이용해서 현재 시간을 입력할 수 있습니다.


4. NULL

: 값이 없음을 의미하는 데이터 타입입니다. 보통 테이블 생성시 컬럼에 별도로 설정하지 않으면 Null값을 허용하도록 default로 만들어지게 됩니다.

 따라서 insert시 컬럼에 값을 입력하지 않으면 Null이 들어가게 됩니다. 하지만

Null을 허용하고 싶지 않다면

제한자 객체인 "Not Null"을 사용하면 됩니다.

ex) regdate Not Null default systimestamp;


5. 대용량 데이터(LOB : Large Object Block)

: 대용량 데이터를 담기 위해 사용되는 타입입니다.

- 문자 : => CBLOB 을 사용합니다.

- 그 외(이미지,동영상 등) => BLOB을 사용합니다.


+ Recent posts