마이크로소프트(Microsoft) SQL 데이타베이스 서버(SQL Database Server) 관련 팁 정리

 

//-----------------

< 버전 역사 >

https://en.wikipedia.org/wiki/Microsoft_SQL_Server

https://en.wikipedia.org/wiki/History_of_Microsoft_SQL_Server

    IBM Sybase 엔진 기반

 

v6.0 (1995년)

 

v7.0 (1998년)

 

SQL Server 2000 (v8)

 

SQL Server 2005 (v9)

 

SQL Server 2008 (v10)

 

SQL Server 2008 R2 (v10.55) (2010년)

 

//------------------------

    - 2020년 현재 MS사 지원중

SQL Server 2012 (v11)

 

SQL Server 2014 (v12)

 

SQL Server 2016 (v13)

https://www.microsoft.com/ko-kr/download/details.aspx?id=56840

    - x86지원 중단

 

SQL Server 2017 (v14)

https://www.microsoft.com/ko-kr/download/details.aspx?id=55994

    - Linux 지원

    - R언어, Python, Java 사용

 

SQL Server 2019 (v15)

 

 

//--------------------------------------------------------------------

< 콘솔에서 명령 실행>

 

    - sql 스크립트 파일 실행

"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\sqlcmd.exe" -S .\SQLExpress2014 -i t.sql t2.sql





//----------------------------

* 테이블 생성

CREATE TABLE [dbo].[test2](

    [id] [int] IDENTITY(1,1) NOT NULL,

    [num] [int] NULL,

    [str] [varchar](50) NULL

) ON [PRIMARY]

GO

 

자동 증가 옵션(Is Identiry)은 칼럼 자료형을 int로 설정해야 가능

 

alter table 실행 에러

    - 에러 메시지

Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

 

    - 해결 방법

Microsoft SQL Server Management Studio -> Tools -> Option -> Designers

    -> Prevent saving changes the require table re-creation : 체크 해제



//----------------------------

* 데이터 추가

insert into test1 ( num, str) values (1, 'q');

insert into test1 ( num, str) values (2, 'q2');



//----------------------------

* 프로시저 추가

    - 값을 읽어서 증가

 

ALTER PROCEDURE [dbo].[pr_str]

@str VARCHAR(50) = 'q'

AS

DECLARE @num int;

set @num =1;

SELECT  @num = num  FROM test1 WHERE str =  @str ;

set @num = @num + 1;

update test1 set num = @num where str = @str;

SELECT  *  FROM test1 WHERE str =  @str ;

 

    - 프로시저 실행

exec pr_str q; -- 실행



//----------------------------

* 트리거

    - 테이블이 변경되면 다른 자료를 변경

 

    - 트리거 생성

USE [test1]

GO

 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

CREATE TRIGGER [dbo].[tr1]   ON  [dbo].[test1] for update

AS

BEGIN

    DECLARE @id int;

    DECLARE @num int;

    DECLARE @str varchar(50);

 

    if update(num)  begin

        select @id = id, @num = num, @str = str from INSERTED

        update test1 set num= @num where id = @id+1

end

 

END

GO

 

ALTER TABLE [dbo].[test1] ENABLE TRIGGER [tr1]

GO

 

    //--------------------------------

    -- 변경

ALTER TRIGGER [dbo].[tr1]   ON  [dbo].[test1] for update

AS

BEGIN

    DECLARE @id int;

    DECLARE @num int;

    DECLARE @str varchar(50);

 

    if update(num)  begin

        select @id = id, @num = num, @str = str from INSERTED

        update test1 set num= @num where id = @id+1

end

END




반응형
Posted by codens codens

댓글을 달아 주세요