ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 잡지식 / 문법 정리(UPDATE, INSERT, SELECT FROM WHERE, SET)
    @ 16. 1 ~ 17. 1/Unity 2016. 11. 30. 14:18

    쿼리란 데이터 베이스에 정보를 요청하는 것.

    저장 프로시져란(스토어 프로시져라고 하는데..)

    쿼리문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.

    저장 프로시저는 복잡한 쿼리들을 모아서 하나의 프로시저로 처리할 수 있고, 그에 따른 처리 결과를 반환하는 형식으로 동작한다.

    또한 저장 프로시저는 서버 측에 프러시저를 저장하므로 모든 클라이언트에서 프러시저를 사용할 수 있다.

    프러지서가 수정 되었을때 모든 클라이언트는 자동으로 새로운 버전을 가지게 되므로 유지, 보수가 쉬운것이 장점..


    일반 SQL 구문의 경우에는 실행할 때마다 파싱, 개체 이름확인, 보안확인, 컴파일 과정을 거치게 되는데..

    저장 프러시저는 처음 생성할때 앞에서 언급한 작업을 수행하고 캐싱하여 그 후에는 같은 작업을 반복하지 않는다.(속도가 빠르다는데..)

    저장 프러시저는 클라이언트의 소스 코드가 유출되어도 단지 프러시저의 이름만 노출되고 실질적인 SQL문이 프러시저 내부에 숨겨져 보안상의 이점도..






    문법정리

    SELECT 열이름(데이터 테이블에서 세로) FROM 테이터 테이블 WHERE 조건문..


    아래의미를 보면..


    CREATE PROCEDURE [dbo].[USP_User_Login]        --USP_User_Login이라는 프러시저를 만든다.

    --아래는변수들이고..뒤에OUTPUT는건 출력 변수들이다.(반대로 없다면 입력매개변수)

    @FacebookID bigint,

    @FacebookName varchar(255),

    @FacebookPhotoURL varchar(255),

    @AccessToken varchar(255) OUTPUT,

    @UserID bigint OUTPUT,

    @ResultCode int OUTPUT,

    @Message varchar(300) OUTPUT


    AS    --이후부터는 처리과정이 나온다는걸 의미

    --AccessToken 출력변수에 NEWID를 대입한다;

    SET @AccessToken = NEWID(); 

    --@UserID = 에 UserID를 대입을 하려는데 먼저 TB_User테이블에서 열이름이 UserID찾아서 비교식인 FacebookID랑 입력변수 @facebookID랑 같으면

    --UserID를 대입해라

    SELECT @UserID = UserID FROM TB_User WHERE FacebookID = @FacebookID


    --단순한 IF문 처리 위에 대입된 출력변수를 통해서 처리

    IF(@UserID IS NOT NULL)

    BEGIN    --시작한다 BEGIN ~ END


    --UPDATE 데이터베이스에 삽입된 데이터를 수정한다.

    UPDATE 테이블명 SET 필드명1='필드값1', 필드명2='필드값2' ... WHERE 필드명3='필드값3' AND 필드명4='필드값'4'; 

    --TB_User의 데이터 베이스에 여러가지 수정을 하고..

    --Message 와 ResultCode에도 대입하고 RETURN 0한다.


    UPDATE TB_User SET FacebookName = @FacebookName, FacebookPhotoURL = @FacebookPhotoURL, AccessToken = @AccessToken WHERE UserID = @UserID;


    SET @Message = 'Login'

    SET @ResultCode = 2

    RETURN 0

    END

    ELSE

    BEGIN

    --INSERT 데이터베이스에 데이터를 삽입한다.

    INSERT INTO 테이블명 (필드명1, 필드명2 ... ) VALUES (필드값1, 필드값2 ... );


    INSERT INTO TB_User (FacebookID, FacebookName, FacebookPhotoURL, Point, AccessToken)

    VALUES(@FacebookID, @FacebookName, @FacebookPhotoURL, 0, @AccessToken)

    SELECT @UserID = UserID FROM TB_User WHERE FacebookID = @FacebookID


    SET @Message = 'Login New User'

    SET @ResultCode = 1

    RETURN 0

    END


    '@ 16. 1 ~ 17. 1 > Unity' 카테고리의 다른 글

    DontDestroyOnLoad  (0) 2016.12.08
    SQL(EXECUTE)  (0) 2016.11.30
    SQL 문법(FROM 과 rank()함수 그리고 별칭, INSERT DECLARE 지역변수)  (0) 2016.11.30
    콜백함수를 활용한 최적화  (0) 2016.11.29
    코루틴  (0) 2016.11.29
Designed by Tistory.