목차

MS SQL Server

SQLServer 2012 Express 설치

2017 Linuix 버전 설치

sudo docker run -e 'ACCEPT_EULA=Y' \
   -e 'MSSQL_SA_PASSWORD=password12!' \
   -e 'TZ=Asia/Seoul' \
   -p 1433:1433 --name sqlserver2017 \
   -d microsoft/mssql-server-linux:2017-latest
 
# TZ=Asia/Seoul 은 운영체제 시간은 그대로인 상태로 sqlserver의 시간대만 Asia/Seoul로 변경한다.
# 완성형 필요하면 추가 옵션
-e 'MSSQL_COLLATION=Korean_Wansung_CI_AS'
docker exec sqlserver2017 /bin/bash -c "apt-get update && apt-get -y install tzdata && ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && echo 'Asia/Seoul' > /etc/timezone"
 
docker restart sqlserver2017
# 한번에
docker exec -it sqlserver2017  /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'password12!'
 
# docker 내부에서 command line 으로 DB접속
docker exec -it sqlserver2017 "bash"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'password12!'

Vagrant로 SQLServer 설치하기

git clone https://github.com/kwon37xi/vagrant-mssql-express.git
cd vagrant-mssql-express
vagrant up

SQL log

현재 DB에서 실행된 실제 SQL 문을 보고 싶다면 Logging all queries executed on MSSQL database | ..:: JOCHEN HEBBRECHT ::..

SELECT        SQLTEXT.text, STATS.last_execution_time
FROM          sys.dm_exec_query_stats STATS
CROSS APPLY   sys.dm_exec_sql_text(STATS.sql_handle) AS SQLTEXT
WHERE         STATS.last_execution_time > GETDATE()-1
ORDER BY      STATS.last_execution_time DESC

Apply

DROP TABLE IF EXISTS

2016 이전 버전 및 SQL 표준 방법

IF EXISTS (SELECT * FROM [CATALOG_NAME].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='[TABLE_NAME]' AND TABLE_SCHEMA='dbo')
DROP TABLE [CATALOG_NAME].dbo.[TABLE_NAME];

2016 이후 버전

DROP TABLE IF EXISTS [CATALOG_NAME].dbo.[TABLE_NAME];

varchar vs nvarchar

datetime / datetime2

INSERT

SET IDENTITY_INSERT books ON;

// books table에 insert

SET IDENTITY_INSERT books OFF;

실습용 데이터베이스

참고