'DataBase'에 해당되는 글 10건

  1. 2009.09.18 :: VIEW
  2. 2009.09.18 :: UNION
  3. 2009.09.18 :: OUTER JOIN
  4. 2009.09.17 :: INNER JOIN
  5. 2009.09.17 :: JOIN
  6. 2009.09.14 :: [Mysql/Psql] 데이터 암호화
  7. 2009.06.17 :: [Mysql] 기초 키워드 및 함수
  8. 2009.06.17 :: [Mysql] 문자 함수
  9. 2009.06.16 :: [Mysql] Oracle에 MINUS를 Mysql에서 구현해보자
  10. 2009.06.15 :: [MySql] Alter Table 문법
DataBase 2009.09.18 17:18
뷰는 쿼리 상에서만 존재하는 테이블, 가상테이블이라고도 한다.
뷰를 사용하면 복잡한 쿼리를 간단하게 저장해서 사용할 수 있다.

뷰를 등록하는 방법
CREATE VIEW ssuk AS
SELECT * from table;

뷰를 삭제하는 방법
DROP VIEW ssuk

뷰를 보는 방법
Table을 보는 방법과 같다.
Mysql) DESC ssuk
Psql) \d ssuk


뷰가 유용한 이유
1. 데이터베이스의 구조를 변경하여도 테이블에 의존하는 어플리케이션을 변경할 필요가 없다.
2. 뷰는 복잡한 쿼리를 간단한 명령으로 단순하게 만들 수 있어 편리하다.
3. 사용자에게 필요없는 정보를 숨기는 뷰를 만들 수 있다.

'DataBase' 카테고리의 다른 글

VIEW  (0) 2009.09.18
UNION  (0) 2009.09.18
OUTER JOIN  (0) 2009.09.18
INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
posted by ssuk1010
DataBase 2009.09.18 16:59

두개 이상의 테이블을 묶는 방법

규칙

  • 각 SELECT문의 열 수는 같아야 한다
  • 각 SELECT문의 표현식과 집계 함수도 같아야 한다.
  • SELECT문의 순서는 중요하지 않습니다.
  • 열의 데이터 타입은 같거나 서로 변환가능 해야 한다.
  • UNION의 결과는 중복값을 하나로 나오게 한다. (default)
  • 중복을 보고 싶으면 UNION ALL을 사용할 수 있다.
SELECT column FROM table1
UNION
SELECT column FROM table2
ORDER BY column


table 만들기
CREATE TABLE table3 AS
SELECT column FROM table1
UNION
SELECT column FROM table2;

'DataBase' 카테고리의 다른 글

VIEW  (0) 2009.09.18
UNION  (0) 2009.09.18
OUTER JOIN  (0) 2009.09.18
INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
posted by ssuk1010
DataBase 2009.09.18 16:36
INNER JOIN과 비슷하지만
일치하는 것이 없는 경우 NULL값으로 표시
1:N 관계에서 유용

LEFT OUTER JOIN
OUTER JOIN 키워드 앞에 있는 table을 기준으로 한다.
SELECT somcolumns
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON condition


RIGHT OUTER JOIN
OUTER JOIN 키워드 뒤에 있는 table을 기준으로 한다.
SELECT somcolumns
FROM table1 t1
RIGHT OUTER JOIN table2 t2
ON condition

'DataBase' 카테고리의 다른 글

VIEW  (0) 2009.09.18
UNION  (0) 2009.09.18
OUTER JOIN  (0) 2009.09.18
INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
posted by ssuk1010
DataBase 2009.09.17 14:06

INNER JOIN은 여러 테이블의 record들의 결합이다.
결합된 행들이 조건에 만족한 경우만 data가 추출된다.

SELECT somecolumns
FROM table1
   INNER KOIN
   table2
ON somecondition

INNER JOIN은 Equal JOIN과 Not Equal JOIN, Natural JOIN으로 구분할 수 있다.


"boys" Table
 boy_id boy  toy_id 
 1 Davey   3
 2 Bobby  5
 3 Beaver   2
 4 Richie  1

"toys" Table
 toy_id toy 
 1 hula hoop 
 2 balsa glider
 3 toy soldiers
 4 harmonica
 5 baseball cards 

  

EQUAL JOIN
테이블 사이에서 동일한 데이터를 추출하는 키워드
같은 행들을 반환
SELECT boys.boy, toys.toy
FROM boys
  INNER JOIN
  toys
ON boys.toy_id = toys.toy_id

NON EQUAL JOIN
테이블 사이에서 동일하지 않는 데이터를 추출하는 키워드
다른 행들을 반환
SELECT boys.boy, toys.toy
FROM boys
  INNER JOIN
  toys
ON boys.toy_id <> toys.toy_id

Natural JOIN
일치하는 열 이름을 사용하는 INNER JOIN
두 테이블에 같은 이름의 열이 있을 때만 동작
on절이 없는 INNER JOIN
SELECT boys.boy, toys.toy
FROM boys
  Natural JOIN
  toys

CROSS JOIN
한데이틀의 모든 행과 다른 테이블의 모든 행이 연결되는 모든 경우를 반환
카티젼 조인이라고도 불린다.

'DataBase' 카테고리의 다른 글

UNION  (0) 2009.09.18
OUTER JOIN  (0) 2009.09.18
INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
posted by ssuk1010
DataBase 2009.09.17 11:26

JOIN은 두개 이상의 테이블을 특정 column 의 관계를 이용해서 data를 추출하는 키워드이다.

"Persons" Table
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

"Orders" Table
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

"Persons" Table과 "Orders" Table은 P_Id라는 같은 column을 가지고 있다.
두 table을 연결해서 data를 추출하려면 JOIN 키워드를 이용하면 된다.

<JOIN의 타입>
JOIN(INNER JOIN): 양 table에서 매치되는 data가 적어도 1개 이상 있을때 data가 추출된다.
LEFT JOIN: 양 table에 매치되는 data가 없어라도 왼쪽 table로 모든 daa가 추출된다.
RIGTH JOIN: 양 table에 매치되는 data가 없어라도 오른쪽 table로 모든 daa가 추출된다.
FULL JOIN: table들 중 하나의 매치가 있다면 data가 추출된다.

'DataBase' 카테고리의 다른 글

OUTER JOIN  (0) 2009.09.18
INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
posted by ssuk1010
DataBase 2009.09.14 16:20

License 정보를 Database에 넣어서 관리하고 싶을 때 사용했던 방식이다.

Mysql은 자체적으로 암호화 함수를 제공한다.


CREATE TABLE LICENSE_INFO (            
 MAX_SUBS blob NOT NULL,                 
) TYPE=InnoDB;

AES_ENCRYPT : 암호화
format) AES_ENCRYPT(FIELD_VALUE, 'KEY'));
ex)  insert into LICENSE_INFO values (AES_ENCRYPT(200, 'ssuk'_key));

'KEY' 값은 나중에 복호화 할때 이용되기 때문에 기억해야 한다.


AES_DECRYPT : 복호화
format) AES_DECRYPT(FILED_NAME, 'KEY')
ex) select AES_DECRYPT(MAX_SUBS, 'ssuk_key') from LICENSE_INFO;

결과에 암호화로 넣은 200이 나오는 것을 확인할 수 있음


이렇게 Msyql 간단히 사용할 수 있다.^^


그럼 Psql은??
사실 Psql도 암호화/복호화 함수가 있기 때문에 쉽게 사용할 수 있다.
모르는 사람이 많은 이유는 따로 contrib를 설치 해야하기 때문이다.

1. postgresql-contrib-xxx.rpm을 설치한다.
ex) postgresql-contrib-8.2.13-1PGDG.rhel4.i386.rpm (내가 사용한 rpm)

2. pgcrypto.sql 파일을 DB에 적용한다.
ex) psql DB_NAME < /usr/share/pgsql/contrib/pgcrypto.sql

3. 실제 사용

CREATE TABLE LICENSE_INFO (
 MAX_SUBS varchar(32)          
);

encode(encrypt()) : 암호화
format) (encode(encrypt('FIELD_VALUE', 'KEY', 'aes'), 'hex'),
ex) insert into LICENSE_INFO values (encode(encrypt('200', 'ssuk_key', 'aes'), 'hex'));

'KEY' 값은 나중에 복호화 할때 이용되기 때문에 기억해야 한다.

decrypt(decode()) : 복호화
format) decrypt(decode(FILED_NAME, 'hex'), 'KEY', 'aes') 
ex) select decrypt(decode(MAX_SUBS, 'hex'), 'ssuk_key', 'aes') from LICENSE_INFO;

결과에 암호화로 넣은 200이 나오는 것을 확인할 수 있음

이로써 Psql도 간단히 암호화/복호화를 쓸 수 있다.

'DataBase' 카테고리의 다른 글

INNER JOIN  (0) 2009.09.17
JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
[Mysql] Oracle에 MINUS를 Mysql에서 구현해보자  (0) 2009.06.16
posted by ssuk1010
DataBase 2009.06.17 16:20
1. ORSER BY : 정렬
ORDER BY COLUMN DESC (내림차순)
ORDER BY COLUMN ASC (오름차순)

2. SUM(COLUMN): 합
SELECT SUM(COLUMN) FROM Table_Name;

3. MAX(COLUMN): 최대 값
SELECT MAX(COLUMN) FROM Table_Name;

4. MIN(COLUMN): 최소 값
SELECT MIN(COLUMN) FROM Table_Name;

5. COUNT(COLUMN): 갯수
SELECT SUM(COLUMN) FROM Table_Name;

6. AVG(COLUMN): 평균
SELECT AVG(COLUMN) FROM Table_Name;

7. DISTINCT: 중복제거
SELECT DISTINCT COLUMN FROM Table_Name;

8. LIMIT(시작할 결과 번호, 반환할 결과 갯수): 결과 갯수 제한
SELECT * FROM Table_Name LIMIT 0, 2; -> 첫번째 결과부터 2개로 제한
SELECT * FROM Table_Name LIMIT 2; ->결과를 2개로 제한

'DataBase' 카테고리의 다른 글

JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
[Mysql] Oracle에 MINUS를 Mysql에서 구현해보자  (0) 2009.06.16
[MySql] Alter Table 문법  (0) 2009.06.15
posted by ssuk1010
DataBase 2009.06.17 15:02

1. RIGHT()
=> 열의 오른쪽부터 문자열을 추출
Ex) SELECT RIGHT(last_name, 2) FROM Person; => last_name필드에서 오른쪽에서 2글자를 반환


2. LEFT()
=> 열의 왼쪽부터 문자열을 추출
Ex) SELECT LFT(last_name, 2) FROM Person; => last_name필드에서 왼쪽에서 2글자를 반환


3. SUBSTRING_INDEX()
=> 특정 문자나 문자열 앞의 모든 문자열을 반환
Ex) SELECT SUBSTRING_INDEX(last_name, ',', 1) FROM Person; => 첫번째(1) 콤마(,)앞의 모든 문자열을 반환

4. SUBSTRING(your_string, start_position, length)
=> your_string 문자열에서 start_position부터 시작해서 length만큼 문자열을 반환
Ex) SELECT SUBSTRING('San Antonio, TX', 5, 3); => 결과 (Ant)


5. UPPER(your_string)
=> your_string 문자열을 대문자로 변환
Ex) SELECT UPPER('San Antonio, TX'); => 결과 (SAN ANTONIO, TX )

6. LOWER(your_string)
=> your_string 문자열을 소문자로 변환
Ex) SELECT LOWER('San Antonio, TX'); => 결과 (san antonio, tx)

7. REVERSE(your_string)
=> your_string 문자열을 역순으로 변환
Ex) SELECT REVERSE('San Antonio, TX'); => 결과 (XT ,oinotnA naS )

8. LTRIM(your_string)
=> your_string 문자열 앞의 공백 문자들을 제거한 문자열을 반환
Ex) SELECT LTRIM('      San Antonio, TX'); => 결과 (San Antonio, TX)

9. RTRIM(your_string)
=> your_string 문자열 뒤의 공백 문자들을 제거한 문자열을 반환
Ex) SELECT RTRIM('San Antonio, TX        '); => 결과 (San Antonio, TX)

10. LENGTH(your_string)
=> your_string 문자열의 길이를 반환
Ex) SELECT LENGTH('San Antonio, TX'); => 결과 (15)

'DataBase' 카테고리의 다른 글

JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
[Mysql] Oracle에 MINUS를 Mysql에서 구현해보자  (0) 2009.06.16
[MySql] Alter Table 문법  (0) 2009.06.15
posted by ssuk1010
DataBase 2009.06.16 20:21

SELECT * FROM (
  SELECT 'A' A, 'B' B FROM DUAL
  UNION ALL
  SELECT 'A1' A, 'B1' B FROM DUAL
  UNION ALL
  SELECT 'A3' A, 'B3' B FROM DUAL
  ) Z
  LEFT OUTER JOIN (
     SELECT 'A' A, 'B' B FROM DUAL
     UNION ALL
     SELECT 'A11' A, 'B11' B FROM DUAL
     UNION ALL
     SELECT 'A33' A, 'B33' B FROM DUAL
     ) ZZ
   ON Z.A = ZZ.A
WHERE ZZ.A IS NULL

< Z - ZZ >
Table Z에서 Table Z와 ZZ가 동시에 가지고 있는 데이터 A열을  뺀 나머지를 구하는 Query

 

'DataBase' 카테고리의 다른 글

JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
[Mysql] Oracle에 MINUS를 Mysql에서 구현해보자  (0) 2009.06.16
[MySql] Alter Table 문법  (0) 2009.06.15
posted by ssuk1010
DataBase 2009.06.15 18:03

1. ADD new field with Foreign Key : 테이블에 열 추가
ALTER table Table_Name ADD COLUMN  Field_Name Field_Type AFTER COLUMN;
Ex) ALTER table customer ADD COLUMN Gender char(1)
;
Ex)
ALTER table my_contacts ADD COLUMN contact_id INT NOT NULL AUTO _INCREMENT FIRST 
ADD PRIMARY KEY (contact_id) ;

AUTO _INCREMENT : 데이터를 순서대로 증가 시키게 하는 키워드, NOT NULL을 무시하고 알아서 값을 넣는다.
FIRST : 새열을 열리스트의 첫번째로 하라는 키워드
AFTER : 새로 추가되는 열이 명시된 열 다음에 생성되로록 하는 키워드

2. CHANGE field : 기존 열의 이름과 데이터 타입을 변경 (데이터 타입을 변경할 경우 데이터를 손실할 수 있음)
ALTER table Table_Name CHANGE COLUMN Prev_Field_Name Prev_Field_Name Field_Type ;
Ex) ALTER table customer CHANGE COLUMN Address Addr char(50) ;

Ex) ALTER table customer 
      CHANGE Address Addr char(50),
      CHANGE Phone_Num Phone char(50);

3. MODIFY field : 기존 열의 데이터 타입이나 위치 변경 (데이터 타입을 변경할 경우 데이터를 손실할 수 있음)
ALTER table Table_Name MODIFY COLUMN Field_Name Field_Type;
Ex) ALTER table customer MODIFY COLUMN Addr char(30) ;


4. DROP field : 기존 열 삭제
ALTER table Table_Name DROP Gender
Ex) ALTER table customer DROP Gender


5. ADD new FOREIGN KEY : foreign key 추가
ALTER table Table_Name ADD (FOREIGN KEY (`Field_Name`) REFERENCES `Reference_Table_Name` (`Actual_Field_Name`));
Ex) ALTER table MCN ADD (FOREIGN KEY (`USER_GRP_IDX`) REFERENCES `USER_GRP_VIEW` (`IDX`));


6. DROP FOREIGN KEY : foreign key 삭제
ALTER table Table_Name DROP FOREIGN KEY Foreign_Key_Name;
Ex) ALTER table MCN DROP FOREIGN KEY MCN_ibfk_1;

7. DROP PRIMARY KEY : primary key 삭제
ALTER table Table_Name DROP PRIMARY KEY ;
Ex) ALTER table MCN DROP PRIMARY KEY;

8. RENAME Table_Name : 테이블 이름 변경
ALTER TABLE Table_Name RENAME TO New_Table_Name;

Ex) ALTER TABLE project RENAME TO project_list;

9. AUTO_INCREMENT 추가 
ALTER TABLE Table_Name CHANGE Field_Name Field_Name Field_Type NOT NULL AUTO_INCREMENT;
Ex) ALTER TABLE Table_Name CHANGE your_id your_id INT(11) NOT NULL AUTO_INCREMENT;

9. AUTO_INCREMENT 삭제
ALTER TABLE Table_Name CHANGE Field_Name Field_Name Field_Type NOT NULL;
Ex) ALTER TABLE Table_Name CHANGE your_id your_id INT(11) NOT NULL;

'DataBase' 카테고리의 다른 글

JOIN  (0) 2009.09.17
[Mysql/Psql] 데이터 암호화  (0) 2009.09.14
[Mysql] 기초 키워드 및 함수  (0) 2009.06.17
[Mysql] 문자 함수  (0) 2009.06.17
[Mysql] Oracle에 MINUS를 Mysql에서 구현해보자  (0) 2009.06.16
[MySql] Alter Table 문법  (0) 2009.06.15
posted by ssuk1010