1. Use Database를 선택할 때 사용합니다. ex: > USE [데이터 베이스 이름];
2. GO 쿼리 문 실행을 끝냄을 의미합니다. 즉 GO가 나오기 전까지는 일종의 {}에 묶여 있는 형태로 보시면 좋을 것 같습니다.
3. Create DB, 테이블, 프로시저, 트리거등을 만드는 문입니다. ex: > CREATE TABLE [테이블 명] (칼럼 명, 데이터 타입 및 제약 조건 ……)
4. Alter DB, 테이블, 프로시저 등을 수정할 때 사용합니다. ex: > ALTER PROC [프로세서 이름]
5. Insert 레코드를 테이블에 넣을 때 사용합니다. ex: > INSERT INTO [테이블 명] (칼럼1, 칼럼2, ……) VALUES(값1, 값2……)
6. Select 테이블 검색에 사용합니다. ex: > SELECT * FROM [테이블] WHERE [조건식] ORDER BY [정렬 방법] ex2: > SELECT TOP 10 FROM [테이블] -- 테이블 항중 10개만 출력 ex3: > SELECT DISTINCT [칼럼A] FROM [테이블] -- 칼럼A의 중복 값 제거한 레코드 출력
7. Update 레코드 수정에 사용합니다. ex: > UPDATE [테이블] SET [칼럼] = [값], …… WHERE [조건식]
8. Delete 레코드를 삭제 합니다. ex: > DELETE [테이블] WHERE [조건식]
9. Truncate 레코드를 비웁니다. Delete와 다른 점은 트렌젝션 로그를 남기지 않습니다. 즉, DELETE [테이블A]; ROLLBACK 하면 롤백이 가능합니다만, TRUNCATE TABLE [테이블A]; ROLLBACK 하면 롤백이 불가능합니다.
10. Drop 테이블, 프로시저, DB를 완전히 삭제 합니다. DELETE, TRUNCATE 는 데이터를 삭제하는데, Drop은 객체 자체를 지웁니다. ex: > DROP TABLE [테이블A] > DROP DB [DB이름] > DROP PROC [프로시저 이름]
11. Join 테이블과 테이블을 어느 조건에 맞춰 합치게 합니다. 예를 들어 아래와 같은 것을 생각할 수 있습니다.
<User Table> userOid name job level money 1 롱스틱 마법사 280 10034 2 사과크림 전사 100 592 3 포도크림 소환사 39 110 … … … … … <Item Table> itemOid name lv userOid 1 절대반지 50 3 2 엑스칼리버 120 2 3 파멸의 손짓 240 1 … … … … 여기서 userOid로 묶을 수 있으니까 아래와 같이 입력하면 > SELECT * FROM UserTable AS A1 INNER JOIN ItemTable AS A2. ON A1.userOid = A2.userOid
userOid name job level money itemOid name lv 1 롱스틱 마법사 280 10034 3 파멸의 손짓 240 2 사과크림 전사 100 592 2 엑스칼리버 120 3 포도크림 소환사 39 110 1 절대반지 50
이런 식으로 조합이 가능합니다. 그리고 눈치채셨겠지만 Oid를 기점으로 데이터를 합칠 수 있으니 Oid가 아닌 것들은 데이터 수정에서 자유로울 수 있는 장점이 있습니다. (캐릭터 이름 변경이라던가……)| 위에서는 교집합인 Inner의 예가 빈번히 사용돼서 설명 드렸고, 그 외의 합집합인 Outer join 문은 물론 Cross Apply도 살펴보시길 바랍니다.
12. Sub Query 일종의 Select 문 안에 Select 를 사용하는 방법입니다. ex: > SELECT * FROM [테이블A] WHERE [칼럼] = (SELECT * FROM [테이블] WHERE [칼럼] = ‘조건’) 조금 변형하면 이런 것들도 가능합니다.
> SELECT [칼럼1], [칼럼2] INTO [테이블B] FROM [테이블A] WHERE [칼럼] = ‘조건’ -> 테이블A의 조건을 만족하는 칼럼1, 칼럼2의 테이블 B를 생성합니다. > UPDATE A SET A.[칼럼] = B.[칼럼] + x FROM [테이블A] AS A JOIN [테이블B] AS B ON A.[칼럼] = B.[칼럼] WHERE [칼럼] = ‘조건 -> 특정 A 테이블 중, A와 B의 join한 테이블의 특정 조건의 레코드의 항목만 갱신
13. Set 변수를 설정하는 명령어 입니다. ex: > DECLARE @tmp1 AS INT SET @tmp1 = 1000
14. Print 메시지를 출력합니다. 굉장히 길고 처리 시간이 오래 걸리는 쿼리 문 작성할 때, 중간에 Print 메시지를 넣어서 어디까지 실행 되었는지 파악할 때 사용합니다. ex: > PRINT ‘쿼리 A까지 완료’
15. PROCEDURE 위의 기본 쿼리 문 (SELECT, INSERT, DELETE, UPDATE) 하나만으로 데이터 넣는 처리를 하는데 어느 정도 한계가 있습니다. 그래서 이 코드들을 하나의 함수처럼 선언 할 수 있는데, 이를 프로시저라고 합니다. 프로시저를 선언하게 되면, 해당 코드들을 MSSQL내부에서 미리 컴파일 해 가지고 있기 때문에 실행 속도가 훨씬 빠릅니다. 그리고 응용단계로 프로시저 안에서 프로시저를 생성해서 실행 할 수 있는데, 이를 동적 프로시저(Dynamic)라고 합니다.
ex: > CREATE PROC [프로시저 명] [@파라 미터], …… AS BEGIN SELECT * FROM … 쿼리 문 END
16. BEGIN TRANSACTION / COMMIT TRANSACTION / ROLLBACK TRANSACTION 트렌젝션은 어느 업무 처리 단계를 두는 행위로, 데이터에 어떤 행위(수정, 삭제)를 했고, 이 결과가 실패할 경우 이전 단계로 복구해 주는 기능을 뜻합니다. 만약 성공했다면, COMMIT, 실패해서 이전 단계로 복구하려면 ROLLBACK을 사용합니다.
17. EXEC 프로시저를 실행합니다. ex: > EXEC [프로시저 명] [값1], [값2] ……
|