본문 바로가기

전체 글

[PostgreSQL] LOOP문을 이용한 배열 데이터 저장 테이블에 연속적인 데이터를 입력할 필요가 있을 때 function 파라미터를 배열로 받아서 저장하는 방법을 사용하면 편하다. 예를 들어 상품을 주문할 경우 그 주문건에 상품 품목이 한개라면 상관이 없지만 상품 품목이 여러개라면 한 주문번호에 여러 상품의 데이터가 저장될 필요가 있다. 이를 위해서는 주문에 관한 테이블도 최소 2개 이상이 필요하게 된다. 하나는 주문에 관한 데이터가 입력되는 테이블, 또 하나는 주문에 대해 관련 상품 정보들을 담고 있는 테이블이다. 그리고 이렇게 되면 두번째 테이블은 주문ID와 상품ID를 PK로 사용하게 될 것이다. PostgreSQL에서 배열 데이터 타입은 character varying[], integer[], text[] 등등이 있고, anyarray 등의 배열관련 데.. 더보기
[SQL] DBMS 함수의 차이점 문자열 일부를 얻기 Access - MID() DB2, Oracle, PostgreSQL - SUBSTR() MySQL, SQL Server, Sybase - SUBSTRING() 데이터 형식 변환 Access, Oracle - 각 형식마다 별도의 함수가 있음 DB2, PostgreSQL - CAST() ( PostgreSQL 에서는 :: 으로도 가능) MySQL, SQL Server, Sybase - CONVERT() 현재 날짜 얻기 Access - NOW() DB2, PostgreSQL - CURRENT_DATE MySQL - CURDATE() Oracle - SYSDATE SQL Server, Sybase - GETDATE() Reference book : 하루 10분씩 핵심만 골라 마스터하는 SQ.. 더보기
[SQL] 자주 사용되는 텍스트 제어 함수 LEFT() - 문자열 왼쪽 끝에서부터 지정된 길이만큼 문자를 반환 LENGTH() (또는 DATALENGTH() 나 LEN()) - 문자열의 길이를 반환 LOWER() (Access에서는 LCASE() 사용) - 문자열의 문자를 소문자로 변경 LTRIM() - 문자열 왼쪽에 있는 공백을 잘라냄 RIGHT() - 문자열 오른쪽 끝에서부터 지정된 길이만큼 문자를 반환 RTIRM() - 문자열 오른쪽에 있는 공백을 잘라냄 UPPER() (Access에서는 UCASE() 사용) - 문자열의 문자를 대문자로 변경 TRIM() - 문자열 왼쪽 및 오른쪽에 있는 공백을 잘라냄 Reference book : 하루 10분씩 핵심만 골라 마스터하는 SQL handbook 더보기
[PostgreSQL] Add auto increment column in PostgreSQL 지금까지는 고유 번호 생성 function을 하나 만들고 이것만 쓰다가 타 데이터베이스에서 쓰는 autoIncrement 적용하려 알아보니 이런 방법이... 1. sequence 생성 CREATE SEQUENCE 2. 변경할 컬럼에 sequence 적용 ALTER TABLE ALTER COLUMN SET DEFAULT nextval(); 참고 : http://siphu.wordpress.com/2009/08/10/add-auto-increment-column-in-postgresql/ 더보기
[PostgreSQL] Linux Fedora13 - PostgreSQL9.0 install/setting 1. install repo RPM #rpm -ivh http://yum.pgrpms.org/reporpms/9.0/pgdg-fedora-9.0-2.noarch.rpm 2. install PostgreSQL 9.0 #yum install postgresql90-server postgresql90-contrib 3.inidb #service postgresql-9.0 initdb 4. service start #service postgresql-9.0 start 5. pg_hba.conf file setting #gedit pg_hba.conf --- modify --- Type Database User IP-Address Method host all all 127.0.0.1/32 md5 host all .. 더보기
[Java] java.util.Iterator 인터페이스 디자인 패턴 중 Iterator 패턴을 생각하다가 문득 java.util.Iterator 인터페이스가 생각나서 api를 찾아보았다. Java로 프로그래밍을 해본 사람이면 java.util.Iterator 인터페이스를 써봤을 것이다. Iterator 인터페이스는 열거되어있는 것들을 하나하나 선택해서 가져올 때 사용하는 컬렉션 중 하나이다. Iterator 클래스에는 다음과 같이 3개의 method가 정의되어있다. hasNext() next() remove() hasNext() : iterator객체가 다음 elements가 있는지를 확인한다. elements가 있으면 true, 없으면 false를 반환한다. next() : 현재 iterator객체가 위치한 지점의 elements를 반환하고 다음 위치의 e.. 더보기
[Design Pattern] 디자인 패턴? 위키백과에서 정의하고 있는 디자인 패턴은 다음과 같다. 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것. 위의 정의는 디자인 패턴을 잘 설명해 주고 있다. 여기서 핵심은 방법 이라는 것이다. 이것이 디자인 패턴을 알고 있으면서도 쉽게 적용하기가 힘든 이유다. 잘 만들어진 라이브러리나 프레임워크들은 모두 이 디자인 패턴이 녹아 들어 있을 것이다. 평상시는 그저 라이브러리나 프레임워크를 사용할 뿐이다. 그렇다고 해서 너무 어렵게 생각할 필요도 없다고 본다. 좋은 프로그래밍 습관을 가진 프로그래머는 아마 자신도 모르게 디자인 패턴을 사용하고 있을 .. 더보기