database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Tutorials 210 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 210
Transact-SQL
작성자
정재익(advance)
작성일
2001-12-14 22:56
조회수
20,560

Transact-SQL (T-SQL)

 

Transact-SQL은 DDL, DML, DCL 3가지 종류의 SQL로 구성되어 있으며, MS utility인 isql이나 ISQL/w을 이용하여 수행시킬 수 있다.

Transact-SQL은 IF-THEN-ELSE같은 control-of-flow를 지원한다.

SQL을 잘 구사하려면 물론 SQL Server 구조와 동작에 대한 기본 지식이 필요하다. SQL의 특징을 잘 알고 사용을 하여야 효과적인 data access가 가능하여 지는 것이다.

SQL은 기본적으로 set-oriented processing을 기반으로 하는 언어이다. Set-oriented란 필요한 범위의 데이타를 한꺼번에 처리하는 방식이다. 이것은 파일 처리에서 하나의 레코드씩 순차적으로 처리하였던 방식과 비교가 된다. 그러나 대부분의 프로그래머가 파일 프로세싱 사고방식에 젖어서 SQL을 파일 처리 방식인 순차적 방식으로 코딩하는 사례가 대단히 많다. 결과적으로 액세스 성능이 저하되게 되지만 이것을 하드웨어 용량을 증설하여 해결하는 소위 무식한 처리를 하는 경우가 다반사임은 안타까운 일이다. RDBMS와 SQL을 사용하는 프로그래머는 RDBMS와 SQL의 특성을 파악하고 그에 맞는 사고의 전환으로 비싸게 구입한 내것을 알뜰하게 사용하고 자신의 기술을 축적하는 마음의 자세를 가지는것이 중요할 것이다.

 

DML(Data Manipulation Language)

-------------------------------------------------------

- 데이타를 입력/수정/삭제/검색하는 데이타 액세스용 언어이다.

 

- SELECT

- INSERT

- UPDATE

- DELETE

 

DDL(Data Definition Language)

------------------------------------------------------

- 데이타베이스 구조를 정의하고 데이타베이스 내의 객체를 생성/삭제 유지하는데 사용되는 언어들이다.

 

- ALTER TABLE

- CREATE PROCEDURE

- CREATE TABLE

- CREATE TRIGGER

- CREATE VIEW

- DROP DEFAULT

- DROP PROCEDURE

- DROP TABLE

 

DCL(Data Control Language)

---------------------------------------------------------

- 데이타베이스 객체를 액세스 하는 권한을 통제하는데 사용하는 언어들이다.

 

- GRANT

- REVOKE

 

Control of Flow

 

Control-of-Flow는 SQL의 원래 취지와는 부합하지 않는다. SQL은 비절차적인 언어로써 원하는 것을 요청하면 그 방법은 RDBMS가 결정하여 처리하여주는 방식이다. 그러나 다양한 혀현실세계는 절차적인 수행을 반드시 필요로 하는 부분이 있고, 이를 지원하기 위하여 부가된것이 Control-of-Flow 지원 keyword들이다.

따라서 이 절차적인 언어는 불가피한 경우가 아니면 사용하지 않는것이 RDBMS를 사용하는데 있어서 효과적인 방향이라는것을 명심하여야 한다.

 

Keywords: BEGIN...END 문장 블록을 정의한다.

 

GOTO level          정의한 level로 분기한다.  
IF...ELSE             조건에 따라서 다른 로직 처리  
RETURN              무조건 종료한다.  
WAITFOR             정의한 시간만큼 다음 문장 수행을 지연시킨다.  
WHILE                 정의한 조건이 "정'이면 계속 반복 수행한다.  
...BREAK             WHILE loop에서 빠져 나온다.  
...CONTINUE       WHILE loop의 처음부터 다시 시작한다.  


Samples: 

IF (SELECT AVG(price) FROM titles) < 15
BEGIN
   UPDATE titles
      SET price = price * 2
   SELECT title, price
     FROM titles
    WHERE price > 28
END

	WHILE (SELECT AVG(price) FROM titles) < 30
	BEGIN
          UPDATE titles
     	     SET price = price * 2
	  SELECT MAX(price) FROM titles
	  IF (SELECT MAX(price) FROM titles) > 50
	       BREAK
	  ELSE
	       CONTINUE
	END

 

Cursors

 

- Row-by-row처리를 하고자 할때 CURSOR를 사용한다.

- Cursor를 사용하려면 다음과 같은 5단계를 거쳐야 한다.

 

 문장                  설명 
DECLARE           Cursor 선언  
OPEN                선언된 cursor를 실행 시킨다.  
FETCH              OPEN으로 return된 row를 하나씩 사용자에게 return한다.  
CLOSE             OPEN되었던 cursor를 종료한다.
                       즉 cache에 할당되었던 cursor 정보가 삭제된다.  
DEALLOCATE   Cursor 선언문이 제거 된다.  
 
-  Samples 
DECLARE authors_cursor CURSOR
    FOR SELECT * FROM authors
OPEN authors_cursor
FETCH NEXT FROM authors_cursor

 

SQL Server의 Datatype

 
타입 분류       데이타 타입              기타 
Binary           BINARY(n) 
                    VARBINARY(n)  
문자              CHAR(n)                 1

 

Functions

---------------------------------------------------

Function 분류            종 류 
Aggregate Functions  COUNT(*), COUNT, AVG, MIN, MAX, SUM  
Date Functions          GETDATE, DATEADD, DATENAME, DATEDIFF, DATEPART  
Mathematical Functions  ABS, ACOS, ASIN, ATAN, ATN2, CEILING, COS,
                               COT, DEGREES, EXP, FLOOR, LOG, LOG10, PI, POWER, 
                              RADIANS, RAND, ROUND, SIGN, SIN, SQRT, TAN  
Niladic Functions     CURRENT_TIMESTAMP, CURRENT_USER, SESSION_USER, 
                              SYSTEM_USER, USER  
String Functions      +, ASCII, CHAR, CHARINDEX, DIFFERENCE, LOWER, LTRIM, 
                             PATINDEX, REPLICATE, REVERSE, RIGHT, RTRIM, 
                            SOUNDEX, SPACE, STR, STUFF, SUBSTRING, UPPER  
System Functions   COALESCE, COL_LENGTH, COL_NAME, DATALENGTH, 
                            DB_ID, DB_NAME, GETANSINULL, HOST_NAME, IDENT_INCR, 
                           IDENT_SEED, INDEX_COL, ISNULL, NULLIF, HOST_ID, 
                          OBJECT_NAME, STATS_DATE, SUSER_ID, SUSER_NAME, 
                          USER_ID, USER_NAME, OBJECT_ID  
Text and Image Functions  PATINDEX, TEXTPTR, SET TEXTSIZE, TEXTVALID  
Type-conversion Functions    CONVERT  

 

CONVERSION 함수

 

데이타 타입을 변환할때 사용한다.

날짜 format을 변경하는데 사용된다.

데이타 타입 변환은 두가지 방법이 지원된다.

 

Implicit conversion : CONVERT를 사용 안해도 자동으로 변환시켜주는 데이타 타입들

Explicit conversion : 반드시 CONVERT로 변환지시를 하여야 하는 데이타 타입들

Syntax : CONVERT (datatype[(length)],expression[,style])

 

Style ... 변환된 날짜 format을 지정한다.

Style Number   출력 형태 
0 or 100            mon dd yyyy hh:miAM 
101                  mm/dd/yy 
102                  yy.mm.dd 
103                  dd/mm/yy 
104                  dd.mm.yy 
105                  dd-mm-yy 
106                  dd mom yy 
107                  mon dd, yy 
108                  hh:mm:ss 
9 or 109            mon dd yyyy hh:mi:ss:mmmAM 
110                  mm-dd-yy 
111                  yy/mm/dd 
112                  yymmdd 
13 or 113          dd mon yyyy hh:mm:ss:mmm(24h) 
114                  hh:mi:ss:mmm(24h) 

 

Examples :

 

SELECT titles, CONVERT(char(12), ytd_sales) FROM titles

SELECT CONVERT(char(12), GETDATE(),3)

 

Operators

--------------------------------------------------------------

조작자 분류                  종 류 
Arithmetic Operators     + (더하기), - (빼기), * (곱하기), / (나누기), % (나머지)  
Bitwise Operators         & (AND), | (OR), ^ (Exclusive OR), ~ (NOT)  
Comparison Operators   =, <, >, >=, <=, <>  
Outer Join Operators     *=, =*  
String Operators           + (문자열 결합)  

 

Wildcard

 

Wildcard는 LIKE 를 사용하여 문자열을 search할때 사용하는 기호들을 말한다.

 

Syntax : expression [NOT] LIKE 'string'

*'string' 은 다음과 같은 wildcard를 이용한다. Wildcard 의미

 

%           모든 문자열 포함  
_(밑줄)   문자 한개와 일치되는것  
[ ]         대괄호 안의 어떤 한개 문자만이라도 일치되면 OK  
[^]         대괄호 안의 문자들을 포함하지 않는 문자열  

Samples 
LIKE '5%'           숫자 5 또는 5로 시작하는 문자열  
LIKE '5[%]'        문자 5%  
LIKE '_n'            an, in, on등 n으로 끝나는 두자리 문자  
LIKE '[_]n'         문자 _n  
LIKE '[a-cdf]'     문자 a,b,c,d,f  
LIKE '[-acdf]'     문자 -,a,c,d,f  
[Top]
No.
제목
작성자
작성일
조회
238SQL 서버 CPU 사용 모니터링 방법
정재익
2002-01-08
14651
237SQL 서버 메모리 사용 모니터링 방법
정재익
2002-01-08
15512
236SQL 서버 디스크 동작 모니터링 방법
정재익
2002-01-08
12944
210Transact-SQL
정재익
2001-12-14
20560
194SQL SERVER DTS [4]
정재익
2001-12-07
15589
193SQL SERVER DTS [3]
정재익
2001-12-07
14876
192SQL SERVER DTS [2]
정재익
2001-12-07
12663
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다