'Database / Sql'에 해당되는 글 90건
- 2010.11.30 [MSSQL] 날짜 함수
- 2010.11.11 [Oracle] 9i 이상에서 컬럼명 변경
- 2010.10.20 [MSSQL] 테이블 복사
- 2010.09.05 [Oracle] 다른 테이블 조인해서 UPDATE 하기
- 2010.08.05 [Oracle] TOAD 기본 단축키
- 2010.06.29 [Oracle] PL/SQL
- 2010.06.28 [Oracle] 함수 정리
- 2010.06.21 SELECT INTO와 INSERT SELECT
- 2010.05.31 [Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시
- 2010.05.11 [Oracle] SYSDATE를 이용한 날짜 및 시간 조정
[MSSQL] 날짜 함수
SELECT DATEADD(MM, +1, '2010-08-08')
, CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23)
, SUBSTRING(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)+'-01'
, GETDATE()
, CONVERT(CHAR(10), GETDATE(), 121)
, DATEDIFF(DD, SUBSTRING(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)
+'-01', CONVERT(CHAR(10), GETDATE(), 121))
, DATEDIFF(DD, CONVERT(CHAR(10), GETDATE(), 121), SUBSTRING
(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)+'-01')
결과 >>>
2010-09-08 00:00:00.000
2010-09-08
2010-09-01
2010-11-30 20:19:45.530
2010-11-30
90
-90
'Database / Sql' 카테고리의 다른 글
[Oracle] JOIN UPDATE (bypass_ujvc 힌트) (0) | 2011.05.25 |
---|---|
[MSSQL] WHERE 절에 CASE문 추가 (0) | 2011.03.21 |
[Oracle] 9i 이상에서 컬럼명 변경 (0) | 2010.11.11 |
[MSSQL] 테이블 복사 (0) | 2010.10.20 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] 9i 이상에서 컬럼명 변경
컬럼명을 변경하게 되면 그 컬럼에 해당 하는 Object(index, constraint, 기타 objects)들이 자동으로 update됩니다.
-- statement --
ALTER TABLE table_name
RENAME COLUMN column_name TO modify_name;
'Database / Sql' 카테고리의 다른 글
[MSSQL] WHERE 절에 CASE문 추가 (0) | 2011.03.21 |
---|---|
[MSSQL] 날짜 함수 (0) | 2010.11.30 |
[MSSQL] 테이블 복사 (0) | 2010.10.20 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[MSSQL] 테이블 복사
select * into [생성될 테이블명] from [원본테이블명]
select * into [생성될 테이블명] from [원본테이블명] where'1'='2' ;
(데이터 없이 테이블 구조만 복사)
select * into [생성될 테이블명] from [원본테이블명] where'1'='1 ;
(데이터까지 복사)
단, 제약조건이나 Identity 정보는 복사되지 않는다.
'Database / Sql' 카테고리의 다른 글
[MSSQL] 날짜 함수 (0) | 2010.11.30 |
---|---|
[Oracle] 9i 이상에서 컬럼명 변경 (0) | 2010.11.11 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[Oracle] PL/SQL (0) | 2010.06.29 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기
UPDATE TABLE_A
SET SDLRAT = ( SELECT B.CUSTID FROM TABLE_B B
WHERE B.CUSTCD = TABLE_A.CUSTCD
AND B.ITMCOD = TABLE_A.ITMCOD )
'Database / Sql' 카테고리의 다른 글
[Oracle] 9i 이상에서 컬럼명 변경 (0) | 2010.11.11 |
---|---|
[MSSQL] 테이블 복사 (0) | 2010.10.20 |
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[Oracle] PL/SQL (0) | 2010.06.29 |
[Oracle] 함수 정리 (0) | 2010.06.28 |
[Oracle] TOAD 기본 단축키
'Database / Sql' 카테고리의 다른 글
[MSSQL] 테이블 복사 (0) | 2010.10.20 |
---|---|
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] PL/SQL (0) | 2010.06.29 |
[Oracle] 함수 정리 (0) | 2010.06.28 |
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] PL/SQL
- PL/SQL 은 Oracle’s Procedural Language extension to SQL. 의 약자 입니다.
- SQL문장에서 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원하며, 오라클 자체에
내장되어 있는 Procedure Language입니다
- PL/SQL 문은 블록 구조로 되어 있고 PL/SQL 자신이 컴파일 엔진을 가지고 있습니다
PL/SQL의 장점
- PL/SQL 문은 BLOCK 구조로 다수의 SQL 문을 한번에 ORACLE DB 로 보내서 처리하므로 수행속도를
향상 시킬수 있습니다.
- PL/SQL 의 모든 요소는 하나 또는 두개이상의 블록으로 구성하여 모듈화가 가능하다.
- 보다 강력한 프로그램을 작성하기 위해서 큰 블록안에 소블럭을 위치시킬 수 있습니다.
- Variable, Constant, Cursor, Exception을 정의하고, SQL문장과 Procedural 문장에서 사용합니다.
- 단순, 복잡한 데이터형태의 변수를 선언합니다.
- 테이블의 데이터 구조와 DataBase의 컬럼럼에 준하여 동적으로 변수를 선언 할 수 있습니다.
- Exception 처리 루틴을 이용하여 Oracle Server Error를 처리합니다.
- 사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리 가능 합니다.
1. 프로시져
- 특정 작업을 수행할수 있고, 이름이 있는 PL/SQL 블록으로서. 매개 변수를 받을수 있고, 반복적으로
사용할수 있습니다. 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을 데이터
베이스에 저장하기 위해 생성합니다.
* CREATE OR REPLACE 구문을 사용하여 생성합니다.
* IS 로 PL/SQL의 블록을 시작합니다.
* LOCAL 변수는 IS 와 BEGIN 사이에 선언합니다.
2. 함수(Function)
- 보통 값을 계산하고 결과값을 반환하기 위해서 함수를 많이 사용 합니다.
- 대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수 있습니다.
- 반드시 반환될 값의 데이터 타입을 RETURN문에 선언해야 합니다.
- 또한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 합니다.
3. package
- 패키지(package)는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로지져와 함수들의
집합 입니다
- 패키지는 선언부와 본문 두 부분으로 나누어 집니다.
4. 트리거
- INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 입니다.
- Trigger는 TABLE과는 별도로 DATABASE에 저장됩니다.
- Trigger는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있습니다.
'Database / Sql' 카테고리의 다른 글
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
---|---|
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[Oracle] 함수 정리 (0) | 2010.06.28 |
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] 함수 정리
:: 소수점 이후의 값은 무조건 올림하는 함수.
MOD
:: 두 수를 나눈 나머지 값을 구하는 함수.
POWER
:: 승수 값을 구하는 함수.
[예] SQL> select POWER(3, 2), POWER(3, -2) from dual;
[결과] 9 .11111111
ROUND
:: 반올림 값을 구하는 함수.
[예] SQL> select ROUND(345.123, 0), ROUND(345.123, 2), round(345.123, -1) from dual;
[결과] 345 345.12 350
TRUNC
:: 버림 값을 구하는 함수.
[예] SQL> select TRUNC(345.123, 2), TRUNC(345.123, 0), trunc(345.123, -1) from dual;
[결과] 345.1 345 340
SIGN
:: 해당 값이 양수면 1, 음수면 -1, 0이면 0을 돌려준다.
[예] SQL> select SIGN(345.123), SIGN(0), SIGN(-345.123) from dual;
[결과] 1 0 -1
CHR, ASCII
:: ASCII은 문자로, 문자는 ASCII 값으로 반환하는 함수.
[예] SQL> select CHR(65), ASCII('A') from dual;
[결과] A 65
LOWER, UPPER
:: 문자열을 소문자와 대문자로 반환하는 함수.
[예] SQL> select LOWER('My'), UPPER('My') from dual;
[결과] my MY
LPAD(char1, n, char2)
:: n 자리 만큼의 공간에서 char1을 오른쪽에 붙이고, 나머지 공간을 char2로 채운다.
RPAD(char1, n, char2)
:: n 자리 만큼의 공간에서 char1을 왼쪽에 붙이고, 나머지 공간을 char2로 채운다.
[예] SQL> select LPAD('LDH', 10, '#'), RPAD('LDH', 10, '#') from dual;
[결과] #######LDH LDH#######
LTRIM, RTRIM
:: 각 각 오른쪽(LTRIM)과 왼쪾(RTRIM)의 공백(Space)을 제거한다.
REPLACE(char1, char2, char3)
:: char1 문자열에서 char2를 char3으로 치환하는 함수.
[예] SQL> select REPLACE('Orange', 'O', 'A') from dual;
[결과] Arange
SUBSTR(char1, n, m)
:: char1 문자열의 n번째부터 시작해서 m번째까지의 문자열을 리턴한다.
[예] SQL> select SUBSTR('오라클 Oracle', 1, 3) from dual;
[결과] '오라클'
[예] SQL> select SUBSTR('오라클 Oracle', 7, 9) from dual;
[결과] 'acl'
[예] SQL> select SUBSTR('오라클 Oracle', 10) from dual;
[결과] 'e'
SUBSTRB
:: 바이트 단위로 계산하여 문자열을 치환하는 함수.
[예] SQL> select SUBSTRB('오라클 Oracle', 1, 3) from dual;
[결과] '오'
[예] SQL> select SUBSTRB('오라클 Oracle', 7, 9) from dual;
[결과] ' Or'
[예] SQL> select SUBSTRB('오라클 Oracle', 10) from dual;
[결과] 'acle'
LENGTH, LENGTHB
:: 문자열의 길이를 나타낸다.
[예] SQL> select LENGTH(운동(축구)), LENGTH(운동(축구)) from dual;
[결과] 6 10
INSTR(char1, char2, n, m)
:: char1에서 char2가 포함된 문자열의 위치가 char1을 기준으로 n번째 위치부터 시작해서 m번째로 char2와 같은 위치를 돌려준다.
INSTRB(char1, char2, n, m)
:: 바이트 단위로 내용은 위와 같다.
[예] SQL> INSTR('간장콩장공장장', '장', 1, 2), INSTRB(간장콩장공장장', '장', 1, 2) from dual;
[결과] 4 7
[예] SQL> INSTR('Corporate Floor', 'or', 3, 2), INSTRB('Corporate Floor', 'or', 3, 2) from dual;
[결과] 11 11
[예] SQL> INSTR('오라클 Oracle', 'r', 1, 1), INSTRB('오라클 Oracle', 'r', 1, 1) from dual;
[결과] 6 9
SYSDATE
:: 현재의 일자와 시간을 의미하고, 기본값으로 오늘일자를 돌려준다.
[예] SQL> select SYSDATE from dual;
[결과] 04/04/19
[예] SQL> select to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') from dual;
[결과] 2004-04-19 00:44:20
LAST_DAY
:: 해당 월의 마지막 날짜를 돌려준다.
[예] SQL> select LAST_DAY(SYSDATE), SYSDATE from dual;
[결과] 04/04/30 04/04/19
MONTH_BETWEEN(date1, date2)
:: date1과 date2를 월 단위로 계산하여 그 값을 리턴한다. 만약, date1이 date2보다 크면, 양수의 결과가 나온다.
[예] SQL> select MONTH_BETWEEN('2004-01-19', '2004-04-19') from dual;
[결과] -3
ADD_MONTHS(date, n)
:: date의 n개월 후의 값을 리턴한다.
[예] SQL> select ADD_MONTHS(SYSDATE, 2), SYSDATE from dual;
[결과] 04/06/19 04/04/19
NEXT_DAY(date, n)
:: date를 기준으로 n요일에 해당하는 다음 날짜를 리턴한다.
[예] SQL> select NEXT_DAY(SYSDATE, 2), NEXT_DAY(SYSDATE, 7), SYSDATE from dual;
[결과] 04/04/20 04/04/25 04/04/19
TO_CHAR(n), TO_CHAR(n, format), TO_CHAR(date, format)
:: n을 format 형식의 문자로 바꾸는 함수.
[예] SQL> select TO_CHAR(123.456) from dual;
[결과] 123
[예] SQL> select TO_CHAR(123456.789, '999,999.9999') from dual;
[결과] 123, 456.7890
[예] SQL> select TO_CHAR(SYSDATE, 'YYYY') from dual;
[결과] 2004
TO_NUMBER(char), TO_NUMBER(char, format)
:: char를 format 형식의 숫자로 바꾸는 함수.
[예] SQL> select TO_NUMBER('123.12') from dual;
[결과] 123.12
[예] SQL> select TO_NUMBER('123.12', '999.999') from dual;
[결과] 123.120
TO_DATE(char), TO_DATE(char, format)
[예] SQL> select TO_DATE('20040419') from dual;
[결과] 2004-04-19 00:00:00
[예] SQL> select TO_DATE('20040419', 'YY/MM/DD') from dual;
[결과] 04/04/19
AVG(column_name)
:: 해당 컬럼의 평균값을 리턴한다.
MAX(column_name)
:: 해당 컬럼에서 제일 큰 값을 리턴한다.
MIN(column_name)
:: 해당 컬럼에서 제일 작은 값을 리턴한다.
SUN(column_name)
:: 해당 컬럼의 합계를 리턴한다.
COUNT(column_name)
:: 조회건수를 리턴한다.
NVL(column_name, 대신할 데이터)
:: 해당 컬럼이 Null일 경우, 대신할 문자나 숫자 등을 대신 사용한다.
DECODE
:: 연속된 조거문이라고 할 수 있는데, 가장 자주 쓰이는 함수 중에 하나이다.
[예] SQL> select DECODE(idx, 10, '가', 20, '나', 30, '다', 40, '라') from dual;
[설명] idx가 10이면 '가'이고, 20이면 '나'이고, 30이면 '다'이고, ...
USERENV
:: 현재 세션의 환경 정보를 반환한다.
ENTRYID : 사용 가능한 Auditing entry Identifier를 반환.
LABEL : 현재 세션의 Label을 반환.
LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환.
SESSIONID : Auditing(감사) Session ID를 반환.
TERMINAL : 현재 세션 터미널의 OS ID를 반환.
GREATEST(n1, n2, n3, ...)
:: 숫자나 문자 아무거나 나열하면 그 중에 가장 큰 값을 반환한다.
LEAST(n1, n2, n3, ...)
:: 숫자나 문자 아무거나 나열하면 그 중에 가장 작은 값을 반환한다.
UID, USER
:: 사용자 ID와 사용자의 OWNER를 돌려준다.
'Database / Sql' 카테고리의 다른 글
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
---|---|
[Oracle] PL/SQL (0) | 2010.06.29 |
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] SYSDATE를 이용한 날짜 및 시간 조정 (0) | 2010.05.11 |
SELECT INTO와 INSERT SELECT
1. SELECT * INTO : 신규테이블 생성하면서 조회한 자료를 넣음
<전체컬럼>
SELECT * INTO 신규테이블명 FROM 조회테이블명 with(nolock)
WHERE SALE_YMD between '20080101' AND '20090731'
<일부컬럼>
SELECT * INTO 신규테이블명 FROM
( SELECT AAA, BBB FROM 조회테이블명 with(nolock)
WHERE SALE_YMD BETWEEN '20080101'
AND '20090731'
) AS STABLE
2.INSERT INTO : 똑같은 스키마를 가진 태이블이 이미 생성된 상태에서 자료를 인서트 함
<전체컬럼>
INSERT INOT 복사될테이블명 SELECT * FROM 복사대상테이블명
<부분컬럼>
INSERT INTO 복사될테이블명 SELECT AAA, BBB FROM 복사대상테이블명
'Database / Sql' 카테고리의 다른 글
[Oracle] PL/SQL (0) | 2010.06.29 |
---|---|
[Oracle] 함수 정리 (0) | 2010.06.28 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] SYSDATE를 이용한 날짜 및 시간 조정 (0) | 2010.05.11 |
[Oracle] sqlnet.ora (0) | 2010.03.22 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시
1.10204_vista_w2k8_x64_production_db\database\install 폴더안에 있는
oraparam.ini 파일을 열어줍니다
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0
를 찾아서 다음과 같이 바꿔줍니다
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=5.0,5.1,5.2,6.0,6.1
2. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db폴더 안에 있는
refhost.xml 파일을 열어줍니다
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS> 를 찾아서
<CERTIFIED_SYSTEMS>
<OPERATING_SYSTEM>
<VERSION VALUE="5.0"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.1"/>
<SERVICE_PACK VALUE="1"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="5.2"/>
</OPERATING_SYSTEM>
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
</CERTIFIED_SYSTEMS>
로 바꿔줍니다
3. 10204_vista_w2k8_x64_production_db\database\stage\prereq\db_prereqs\db 폴더 안에 있는
refhost.xml 파일을 열어줍니다 (주의 : 2번의 폴더 경로와 다릅니다 확인해주세요.)
파일을 열고 2번과 똑같이 작업해 줍니다.
이렇게 작업하시고 다시 설치를 진행해보시면 설치 전 검사를 통과할 수 있습니다.
그런데 설치하려고 일반설치를 누르면 설치경로가 잘못됬다고 하면서 어쩌구저쩌구 됩니다.
이건 드라이브경로나 폴더명을 바꿔도 진행이 안되니 아래쪽의 고급설치로 진행하시면 됩니다.
'Database / Sql' 카테고리의 다른 글
[Oracle] 함수 정리 (0) | 2010.06.28 |
---|---|
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] SYSDATE를 이용한 날짜 및 시간 조정 (0) | 2010.05.11 |
[Oracle] sqlnet.ora (0) | 2010.03.22 |
[Oracle] Windows 서버에서 오라클 Thread 죽이기 (0) | 2010.03.16 |
[Oracle] SYSDATE를 이용한 날짜 및 시간 조정
SQL> select sysdate, to_char(sysdate, 'HH:MI:SS')
from dual
SYSDATE TO_CHAR(SYSDATE,
-------- ----------------
10/04/03 02:13:02
select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') sysdate from dual
from dual
SYSDAT
-------------------
2010-12-13 19:28:54
SYSDATE는 시,분,초도 포함되어 있다. 그런데 그냥 출력하면 나오진 않는다.
이때 to_char을 써서 문자로 출력을 해야 한다. 주목해야 할 점은 문자를 날짜로 출력하고 있다는 것이다.
-- 오늘부터 100달 뒤의 날짜의 요일을 구하시요.
SQL> select to_char(add_months(sysdate,100),'day')
from dual;
TO_CHAR(ADD_MONTHS(SYSDA
------------------------
금요일
-- 오늘부터 100달뒤 돌아오는 월요일의 날짜를 구하시요.
SQL> select next_day(add_months(sysdate,100),'월')
from dual;
NEXT_DAY
--------
18/08/06
-- 기타 날짜 및 시간 조정
SELECT TO_CHAR(SYSDATE - 0.1, 'HH:MI') '1시간 12분 전',
TO_CHAR(SYSDATE + (30/60)/24, 'HH:MI') '30분 후',
TO_CHAR(SYSDATE + 3/24, 'HH:MI') '3시간 후',
TO_CHAR(SYSDATE + 3, 'MM/DD') '3일 후'
FROM DUAL;
'Database / Sql' 카테고리의 다른 글
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
---|---|
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] sqlnet.ora (0) | 2010.03.22 |
[Oracle] Windows 서버에서 오라클 Thread 죽이기 (0) | 2010.03.16 |
[Oracle] TNANAMES.ORA 설정 및 TOAD 연결 (0) | 2010.03.15 |