## 트랜잭션: 하나 이상의 작업이 모여 이루어진 하나의 논리적인 작업 단위로서 한번에 수행되어지는 작업.
+ 트랜잭션의 조건
원자성 - 트랜잭션은 더 이상 나눌 수 없는 단위로 구성되어야 한다.
일관성 - 트랜잭션이 수행된 후 모든 데이터는 무결성을 유지해야 한다.
격리성 - 현재 변경 작업이 진행중인 트랜잭션의 대상 데이터는 잠금 상태(LOCK)가 되어 다른 트랜잭션에 의해 접근이 허용되어서는 안된다.
@ 자동커밋 트랜잭션 - SQL-SERVER는 기본 트랜잭션 모드가 자동 커밋으로 동작한다.
@ 명시적 트랜잭션 - 트랜잭션의 시작과 끝을 모두 명시하는 방법으로 BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN 문 등을 이용한다.
명시적 트랜잭션은 ROLLBAKC 이나 COMMIT 으로 끝나지 않으면 트랜잭션이 계속 잠금상태로 남아 있으므로 주의해야 한다.
BEGIN TRAN - 명시적 트랜잭션의 시작 위치
COMMIT TRAN - 데이터 변경작업의 결과를 실제 데이터베이스에 적용하도록 하는 구문. COMMIT 된 후의 데이터베이스는 변경전으로 되돌릴 수 없다.
ROLLBACK TRAN - 데이터 변경작업 취소하고, 데이터베이스의 내용은 트랜잭션 작업 이전의 상태로 되돌린다. 여기서 전체 트랜잭션의 내용을 취소하지 않기 위해 특정 지점에 저장점(SAVE POINT)을 지정하면 저장점이 있는 부분까지만 트랜잭션을 취소할 수 있다.
SAVE TRAN - 저장점을 지정하기 위한 구문으로 지정된 저장점까지 ROLLBACK으로 트랜잭션을 취소할 수 있다.
어떤 테이블의 데이터가 변경될때 자동으로 지정된 어플리케이션이 동작한다던지 다른 테이블의 데이터를 변경하도록 설계된 저장프로시저의 특별한 형태.
저장프로시저와 달리 직접 호출되어 동작하지 않고 자동으로 호출되어 실행되며 매개변수도 사용할 수 없다.
생성 : CREATE TRIGGER
삭제 : ALTER TRIGGER
수정 : DROP TRIGGER
CREATE TRIGGER 트리거이름
ON 테이블[뷰]
FOR { INSERT | DELETE | UPDATE }
AS
[BEGIN]
SQL문
[END]
create
alter trigger trg_tbl_member
on tbl_member
for update
as
declare @nickname varchar(32),@userid varchar(32)
begin
select @nickname = nickname, @userid= userid from tbl_member d where userid = d.userid
update tbl_blog set userNick = @nickname where userid = @userid
select @nickname, @userid
end
- SQL문의 기능을 더욱 보강하여 데이터베이스 사용을 효과적으로 할 수 있도록 하는 것이 저장프로시저.
생성 : CREATE PROCEDURE
수정 : ALTER PROCEDURE
삭제 : DROP PROCEDURE
변수선언 : DECLARE @mem_id varchar(32)
SET @mem_id = '홍길동'
- 조건 처리
IF ~ELSE 문 : 각종 변수위 정위와 조건처리를 지원
WHILE 문 : 반복처리
BREAK,CONTINUE 문 : LOOP 문에서 벗어나기.
OUTPUT : 결과값을 응용프로그램에 반환해야 할때, 매개변수 선언시 사용.
- 시스템 저장프로시저
sp_helpdb : 모든 데이터베이스의 정보를 제공.
sp_help : 특정 데이터베이스의 모든 객체, 또는 지정한 하나의 객체에 대한 자세한 정보를 제공.
sp_helptext : 지정한 저장프로시저의 소스를 보여준다.
sp_helplogins : 현재 접속중인 사용자에 대한 정보 제공.
sp_fkeys : 지정된 테이블의 외래키를 보여준다.
sp_pkeys : 기본키 정보를 보여준다.
1. select * from 상품 where ( 색상코드 = ( select 색상코드 from 색상분류 where 색상 = '그린' ) )
2. select * from 소분류코드 where ( 업체코드 IN ( select 업체코드 from 납품업체 where 업체명 IN ('우주','세현','동방') ) )
3. select 상품코드, 사이즈, 재고수량 from 상품 where ( 소코드 = ( select 소코드 from 소분류코드 where 소분류명 = '가죽쟈켓' ) ) and ( 색상코드 = ( select 색상코드 from 색상분류 where 색상 = '블랙' ) )
4. select 상품코드, 사이즈, 재고수량 from 상품 where 재고수량 < ( select AVG(재고수량) from 상품 )
5. select 소코드, AVG(재고수량) AS 소코드별평균 from 상품 group by 소코드 having ( AVG(재고수량) < ( select AVG(재고수량) from 상품 where 소코드 = 'S7' ) )
병원에 나붙은 '조용히!'는
신체와 신경조직을 신비스러울 만큼
차분하게 가라앉히는 구실을 한다.
방송국에서 '조용히!'는
무한한 공간으로 퍼져 나가는 전파가
최고의 상태를 유지하게 해준다.
도서관에서 '조용히!'는
마음과 마음이 깊은 친교를 맺고
생각이 고요히 피어나게 해준다.
- 프랭크 미할릭의《느낌이 있는 이야기》중에서 -
* 일상에서도 '조용히!'는 필요합니다.
조용히 걷고, 조용히 말하고, 조용히 생각하고...
조용해야 소음이 가라앉고 마음의 평화가 옵니다.
화, 흥분, 불안, 두려움, 우울, 후회, 죄의식...
조용히 내려놓아야 할 마음의 소음들입니다.
인생은 결국 자기와의 싸움입니다.
마음의 평화가 자기를 이겨내는
가장 큰 힘입니다.
asp 에서는 다른 언어와는 달리 대소문자의 구분이 없다. 그냥 단지 알아보기 쉽게 하기 위해서 대소문자를 사용하는 것이다.
예) dim strname 는 Dim strName 과 같은 구문이다.
2. 변수 선언
- 변수나 배열의 변수 선언에는 dim 을 사용한다.
- Option Explicit 를 asp 맨 앞에 사용하여 변수를 꼭 선언하도록 하였으면 모든 변수는
dim 으로 선언하여 사용하여야한다.
예) 변수 선언 : dim strName, strEmail
배열 선언 : dim monthArry(11)
- Redim : 배열 크기의 재선언에 사용한다.
redim 의 사용은 처음 배열 선언시에 배열의 크기를 정해 주지 않았을 때에만 가능하다.
- Preserve : 데이터를 저장한 채로 배열의 크기를 늘려준다. 즉, 기존의 들어가 있는 데이터는 그대로 아직 존재한다.
3. 구분자
- 구분자로는 :(콜론) 이 쓰인다.
- 구분자는 실행할 문장을 한줄단위로 구분짓는 역할을 한다.
예) dim strName : strName = "mshout77" : response.write " strName = " & strName
4. 연결연산자
- &
- &가 문자열에 쓰이면 문장과 문장을 연결해서 한 문장으로 만들어준다.
- &가 변수에 쓰이면 변수의 값을 & 다음의 값과 이어준다.
- 예) dim strName, strFName, all
strName = "77"
strFName = "mshout"
all = strName&strFName
response.write all
결과값은 mshout77 이라고 출력된다.
5. 주석
- ASP에서 주석처리에는 '(작은 따옴표) 가 쓰인다.
- 행에서 ' 다음의 내용은 주석처리되어 해석이 되지 않는다.
6. 함수
1) cdbl(문자열) - 문자열을 소수점이하까지도 출력(큰 숫자에 사용한다)
2) round(숫자,반올림할 위치) - 지정한 소수점 자리에서 반올림한 값을 리턴
3) asc(문자열) - 문자열에서 첫번째 문자에 대한 ansi 코드 번호를 리턴
4) chr(아스키코드번호) - 지정된 번호와 일치하는 ansi 문자로 구성된 문자열을 리턴
5) hex(숫자) - 숫자의 16진수값을 나탸내는 문자열을 리턴
6) fix(숫자) - 숫자의 정수(전체)부분을 리턴 / 음수일때 숫자보다 크거나 같은 첫번째 음의 정수 리턴
7) int(숫자) - 숫자의 정수(전체)부분을 리턴 / 음수일때 숫자보다 작거나 같은 첫번째 음의 정수 리턴
8) sgn(숫자) - 숫자의 부호를 나타내는 정수를 리턴
9) cdate(숫자) - 날짜 형식의 인자값 리턴( 예:cdate(36890) , cdate("2001년 12월 10일") )
10) Clng(숫자) - Long 형식의 문자열 리턴
11) Cstr(숫자) - String 형식의 문자열 리턴
12) Csng(숫자) - Single 형식의 문자열 리턴
13) formatcurrency(숫자) - 숫자를 화폐형식으로 전환
14) formatdatetime(date,1) - date 함수의 표시형태를 바꿈
- formatdatetime(date,2)
- formatdatetime(date,3)
15) formatpercent(숫자) - 숫자를 백분율로 표시
16) strConv - 지정한대로 문자를 변환, strConv(문자열,conversion [,LCID])
conversion 에 가능한 값
- vbUpperCase 1 문자열을 대문자로 변환
- vbLowerCase 2 문자열을 소문자로 변환
- vbPropercase 3 문자열 단어의 첫글자를 대문자로 변환
- vbWide 4 1바이트문자를 2바이트 문자로 변환
- vbNarrow 5 2바이트문자를 1바이트문자로 변환
- vbUnicode 6 시스템의 기본 코드 페이지를 사용하여 문자열을 unicode 로 변환
- vbFromUnicode 128 unicode 문자열을 시스템의 기본 코드 페이지로 변환
25) InStrRev("문자열","찾을 문자") - 문자열의 위치를 뒤에서 부터 검색해서 반환
26) Lcase("문자열") - 문자열을 소문자로
27) Ucase("문자열") - 문자열을 대문자로
28) Len("문자열") -문자열의 길이 반환
29) Left("문자열",잘라낼 갯수) - 문자열을 왼쪽에서 지정한 갯수만큼 잘라냄
30) Right("문자열",잘라낼 갯수) - 문자열을 오른쪽에서 지정한 갯수만큼 잘라냄
31) Mid("문자열",시작위치,뽑아낼 갯수) - 문자열의 어느 부위를 뽑아냄
32) Yrim("문자열") - 문자열의 양쪽 공백을 제거
33) Ltrim("문자열") - 문자열의 왼쪽 공백을 제거
34) Rtrim("문자열") - 문자열의 오른쪽 공백을 제거
35) Split("문자열","분리자") - 분리자를 기준으로 문자열을 나눔
36) StrReverse("문자열") - 문자열을 뒤집음
37) IsArray() - 변수가 배열인지의 여부를 나타내는 Boolean 값을 리턴
38) IsDate() - 날짜로 변환될 수 있는지의 여부를 나타내는 Boolean 값을 리턴
39) IsEmpty() - 변수가 초기화 될 수 있는지의 여부를 나타내는 Boolean 값을 리턴
40) IsNull() - 유효한 데이터를 포함하고 있는지의 여부를 리턴
41) IsNumeric() - 숫자로 평가될 수 있는지의 여부를 리턴
42) IsObject() - 유효한 ActiveX혹은 OLE 자동화 개체를 참조하는지의 여부를 리턴
43) Vartype() - 변수의 하위 형식을 나타내는 숫자를 리턴한다.
44) now - 시스템의 시간과 날짜
45) date - 시스템의 날짜
46) time - 시스템의 시간
47) year(now) - 현재의 년도
48) month(now) - 현재의 월
49) day(now) - 현재의 일
50) weekday(now) - 현재의 요일
51) hour(now) - 현재의 시
52) minute(now) - 현재의 분
53) second(now) - 현재의 초
54) DateAdd - 지정된 날짜에 시간을 추가하거나 뺀 새로운 날짜를 반환
사용법) DateAdd(interval, number, date)
- interval : 필수적인 인수로 interval을 추가한 날짜를 나타내는 문자식
yyyy 년, q 분기, m 월, y 일(일년 기준), d 일, w 요일, ww 주(일년 기준), h 시, n 분, s 초
- number : 필수적인 인수로 추가할 간격 수의 수식
수식에서 양수는 미래의 날짜, 음수는 과거의 날짜이다.
- date : 필수적인 인수로 interval을 추가한 날짜를 나타내는 Variant 또는 리터럴
예) DateAdd("m",3,Date) <-- 현재의 날짜에서 3개월을 더함
DateAdd("m",-3,Date) <-- 현재의 날짜에서 3개월을 뺌
55) DateDiff - 주어지는 두 날짜의 간격을 반환
사용법) DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
- interval : 필수적인 인수로 날짜1과 날짜2 사이의 차이를 계산하는 데 사용할 interval의 문자식
yyyy 년, q 분기, m 월, y 일(일년 기준), d 일, w 요일, ww 주(일년 기준), h 시, n 분, s 초
vbUseSystem 0 NLS(National Language Support) API 설정 사용
vbSunday 1 일요일(기본값)
vbMonday 2 월요일
vbTuesday 3 화요일
vbWednesday 4 수요일
vbThursday 5 목요일
vbFriday 6 금요일
vbSaturday 7 토요일
- firstweekofyear : 선택적인 인수로 연도를 기준으로 한 첫째 주를 지정하는 상수
지정하지 않으면 1월 1일을 포함하는 주를 첫째 주로 간주한다.
vbUseSystem 0 NLS(National Language Support) API 설정 사용
vbFirstJan1 1 1월 1일을 포함하는 주에서 시작(기본값)
vbFirstFourDays 2 새해의 처음 4일을 포함하는 주에서 시작
vbFirstFullWeek 3 새해의 처음 한 주일(7일)을 포함하는 주에서 시작
예) DateDiff("h", "2001년 12월 30일", Date)
DateDiff("n", "2001년 12월 30일 09:30:00", now)
DateDiff("s", "2001년 12월 30일 09:30:00", now)
56) DatePart - 주어진 날짜의 지정된 부분을 반환한다.
사용법) DatePart(interval, date[, firstdayofweek[, firstweekofyear]])
- interval : 필수적인 인수로 반환할 시간 간격의 문자식이다.
yyyy 년, q 분기, m 월, y 일(일년 기준), d 일, w 요일, ww 주(일년 기준), h 시, n 분, s 초
vbUseSystem 0 NLS(National Language Support) API 설정 사용
vbSunday 1 일요일(기본값)
vbMonday 2 월요일
vbTuesday 3 화요일
vbWednesday 4 수요일
vbThursday 5 목요일
vbFriday 6 금요일
vbSaturday 7 토요일
- firstweekofyear : 선택적인 인수로 연도를 기준으로 한 첫째 주를 지정하는 상수
지정하지 않으면 1월 1일을 포함하는 주를 첫째 주로 간주한다.
vbUseSystem 0 NLS(National Language Support) API 설정 사용
vbFirstJan1 1 1월 1일을 포함하는 주에서 시작(기본값)
vbFirstFourDays 2 새해의 처음 4일을 포함하는 주에서 시작
vbFirstFullWeek 3 새해의 처음 한 주일(7일)을 포함하는 주에서 시작
예) DatePart("q", now)
57) DateSerial - 지정된 년, 월, 일의 Date 하위 형식인 Variant를 반환한다.
즉, 임의의 숫자를 입력받아 날짜 형식으로 반환하는 함수이다.
사용법) DateSerial(year, month, day)
year : 100에서 9999까지의 수 또는 수식
month : 모든 수식
day : 모든 수식
예) DateSerial(2001, 12, 25)
58) DateValue - Date 하위 형식의 Variant를 반환한다.
사용법) DateValue(date)