공부/DB 2012. 2. 22. 09:55
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information
WHERE Year(Date) = 1998
 

http://sql.1keydata.com/kr/sql-create-table.php  

'공부 > DB' 카테고리의 다른 글

sql 문자열 정리 홈페이지  (0) 2012.01.31
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/DB 2012. 1. 31. 10:47

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/DB 2012. 1. 25. 11:21


☞ 집합 쿼리(UNION, INTERSECT, MINUS)
 
  집합 연산자를 사용시 집합을 구성할 컬러의 데이터 타입이 동일해야 합니다.
 
◈ UNION : 합집합
◈ UNION ALL : 공통원소 두번씩 다 포함한 합집합
◈ INTERSECT : 교집합
◈ MINUS : 차집합


☞ UNION

 ◈ UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 합니다. 
 
 
SQL>SELECT deptno FROM emp
        UNION
        SELECT deptno FROM dept;
 
    DEPTNO
----------
        10
        20
        30
        40



☞ UNION ALL

◈ UNION과 같으나 두 테이블의 중복되는 값까지 반환 합니다. 
 
SQL>SELECT deptno FROM emp
        UNION ALL
       SELECT deptno FROM dept;
 
   DEPTNO
---------
       20
       30
       30
       20
       30
       30
       10
       20
       10
       30
....



☞ INTERSECT

◈ INTERSECT는 두 행의 집합중 공통된 행을 반환 합니다. 
 
SQL>SELECT deptno FROM emp
        INTERSECT
        SELECT deptno FROM dept;
    
    DEPTNO
----------
        10
        20
        30



☞ MINUS

◈ MINUS는 첫번째 SELECT문에 의해 반환되는 행중에서 두번째 SELECT문에 의해 반환되는 행에 
    존재하지 않는 행들을 반환 합니다. 
 
SQL>SELECT deptno FROM dept
        MINUS
        SELECT deptno FROM emp;
 
    DEPTNO
----------
        40

  ================================================ 
    * 오라클 정보공유 커뮤니티 oracleclub.com 
    * http://www.oracleclub.com 
    * http://www.oramaster.net 
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================


출처 :  http://pmguda.com/347

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
sql 문자열 정리 홈페이지  (0) 2012.01.31
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/DB 2012. 1. 5. 16:05

오라클의 시퀀스와 같은 기능을 MS SQL을 찾으려고 한다면,

Identity를 말할 수 있다.

 

 

 

 

Identity 선언

 

create table test

(

 num int Identity not null primary key, -- num컬럼을 identity로 설정

 corp_nm varchar(30)

)

 

 

 

 

Identity 를 강제로 입력

 

Identity를 설정해 놓은 컬럼은 계속해서 값이 증가된다.

중간값이 있는 행을 삭제하더라고 새로 들어온 값이 중간값으로 들어오지 않는다.

 

예) table :  dbo.test

 

idx nm
1 rara
2 caca
3 asas
4 erer
5 wtwt

<그림 1>

 

<그림 1> 같은 상황에서idx가 3인 asas를 지우고 새로운 값을 인서트 한다면 <그림 2> 같이 된다.

 

idx nm
1 rara
2 caca
4 erer
5 wtwt
6 xdxd

<그림 2>

 

만약 여기에 idx가 3인 행을 넣고 싶다면 강제로 입력을 해 주어야 한다.

 

 

SET IDENTITY_INSERT dbo(스키마명).test(테이블명) on

 

insert into dbo.test(idx, nm) values (3,'papa')

 

SET IDENTITY_INSERT dbo(스키마명).test(테이블명) off

 

 

※ off 한 상태에서 identity 값까지 입력할 경우 에러메시지가 뜬다.

 

IDENTITY_INSERT가 OFF로 설정되면 테이블 'test'의 ID 열에 명시적 값을 삽입할 수 없습니다.

 

 

 

※ 강제 입력후에는 반드시 off 해 주어야 한다.

on인상태에서 일반적인 인서트를 하게 되면 에러메시지가 뜬다.

 

ex) insert into dbo.test(nm) values ('papa')


IDENTITY_INSERT가 ON으로 설정되거나 복제 사용자가 NOT FOR REPLICATION ID 열에 삽입할 때 테이블 'test'의 ID 열에 명시적 값을 지정해야 합니다.

 

 

idx nm
1 rara
2 caca
4 erer
5 wtwt
6 xdxd
3 papa

<그림 3>

 

 

 

 

Identity 초기화

 

DBCC CHECKIDENT (table이름, RESEED, 설정하고자 하는 초기값)

※ table이름에 스키마나 DB명 쓰지 마세요.

 

ex) DBCC CHECKIDENT (test, RESEED, 0)

출처 :  http://blog.naver.com/nkind?Redirect=Log&logNo=110093906926

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
sql 문자열 정리 홈페이지  (0) 2012.01.31
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/DB 2012. 1. 5. 16:03

1. Oracle

생성

CREATE SEQUENCE  "SEQ_FORUM" 

 MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1

START WITH 1 CACHE 20 NOORDER  NOCYCLE

확인

SELECT SEQ_FORUM.NEXTVAL FROM DUAL

 

2. MS-SQL

생성
IF EXISTS
   (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='SEQ_FORUM')
DROP TABLE [dbo].[SEQ_FORUM];

 

CREATE TABLE [dbo].[SEQ_FORUM] (
[ID] decimal(18, 0) IDENTITY(0, 1) NOT NULL)
ON [PRIMARY];


확인

SELECT (IDENT_CURRENT('SEQ_FORUM') + 1) AS NEXTVAL

 

3.MySQL

생성

DROP TABLE IF EXISTS  SEQ_FORUM ;


CREATE TABLE SEQ_FORUM (
  ID bigint(8) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (ID)
) ENGINE=MyISAM AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;


확인

SELECT MAX(SEQ_FORUM)+1 AS NEXTVAL FROM FORUM

출처 : http://blog.naver.com/webdilh?Redirect=Log&logNo=30118690170 

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
sql 문자열 정리 홈페이지  (0) 2012.01.31
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/DB 2012. 1. 4. 13:31

오라클에서 게시판이나 방명록에 쓰이는 자동 증감

 

 

[생성]

CREATE SEQUENCE 시퀀스 이름

   START WITH 1                 // 시작을 1로 설정

   INCREMENT BY 1            // 증가값을 1씩 증가

   NOMAXVALUE                // 최대값이 무한대...

   NOCACHE                      // 캐시상 메모리를 올려 놓지 않는다

   NOCYCLE;                     // 최대값이 지나면 다시 시작 하지 않음

 

[보기]

SELECT * FROM user_sequences;

 

[삭제]

DROP SEQUENCE 시퀀스 이름;

 

[수정]


Alter sequence seq_name

[increment by n]

[maxvalue n | nomaxvaule]

[minvalue n | nominvalue]

[cycle | nocycle];

 

 

 

시퀀스가 안될 경우

ORA-01045, ORA-01031에러시

SQL> GRANT RESOURCE TO 사용자명;

SQL> ALTER USER 사용자명 DEFAULT ROLE ALL;










출처
http://chanyook.egloos.com/2627657

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
sql 문자열 정리 홈페이지  (0) 2012.01.31
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
posted by 나무사이
: