마이크로소프트(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
'Code > Database (DB)' 카테고리의 다른 글
MySql Unique index 사용시 soft Delete 설정 (0) | 2021.03.31 |
---|---|
MySql 여러 행을 한번에 update (한방쿼리) (0) | 2021.02.27 |
[SQL] 여러 행 추가 (테스트용 DB 생성) 프로시저 (0) | 2020.09.20 |
[SQL] 모든 레코드의 문자열 변경 (정규식) (0) | 2020.09.14 |
[sql] 레코드에 특정 값이 없으면 추가하기(중복 방지) (0) | 2020.09.12 |