- 기본적인 INSERT 문

INSERT INTO dbo.Department(DeptID, DeptName, UnitID, StartDate) 
VALUES('PRD', N'상품', 'A', GETDATE()) 
GO

 

- 열 정보 생략 하여 INSERT 하기

IDENTITY 속성의 열을 제외한 모든 열이거나 나열될 열이 테이블에 포함된 모든열 일때

INSERT INTO dbo.Department 
VALUES('DBA', N'DB관리', 'A', GETDATE())

 

- 동시에 여러 행 INSERT

INSERT INTO dbo.Department 
VALUES('OPR', N'운영', 'A', GETDATE()), ('CST', N'고객서비스', NULL, GETDATE()) 
GO

 

- 상위 n개 INSERT

- Vacation과 같은 구조의 SampleVacation 테이블 만들기

SELECT * 
INTO dbo.SampleVacation 
FROM dbo.Vacation 
WHERE 1 = 0 
GO

 

- Vacation테이블의 상위 5 건만 SampleVacation 테이블에 입력

INSERT TOP(5) 
    INTO dbo.SampleVacation 
    SELECT EmpID, BeginDate, EndDate, Reason, Duration 
        FROM dbo.Vacation 
            ORDER BY BeginDate DESC 
GO

 

- 저장 프로시저 결과 INSERT

-- 저장 프로시저 만들기
CREATE PROC dbo.usp_GetVacation
        @EmpID char(5)
AS
        SELECT EmpID, BeginDate, EndDate, Duration
            FROM dbo.Vacation
            WHERE EmpID = @EmpID
GO

-- 임시 테이블 만들기
CREATE TABLE #Vacation (
    EmpID char(5),
    BeginDate datetime,
    EndDate datetime,
    Duration int
)
GO

-- 저장 프로시저 결과 INSERT
INSERT INTO #VACATION EXEC dbo.usp_GetVacation 'S0001'
GO

SELECT * FROM #Vacation
GO

- IDENTITY 속성에 INSERT 하기

IDENTITY가 2번인 행을 지웠다고 가정하자.

IDENTITY가 2번인 행을 INSERT 하기 위해서 해야 할 일을 알아보자.

-- 임의의 IDENTITY값 INSERT 하기
SET IDENTITY_INSERT dbo.Vacation ON
GO

INSERT INTO dbo.Vacation(VacationID, EmpID, BeginDate, EndDate, Reason) -- 모든 열 정보를 다 나열해야 한다
VALUES(2, 'S0003', '2007-01-22', '2007-01-08', N'신년 맞이 기분 내기')
GO

SET IDENTITY_INSERT dbo.Vacation OFF
GO

SELECT * FROM dbo.Vacation
GO

 

 

 

by 짱구를꼭말려 2014. 3. 3. 14:54

 SELECT

- 모든 데이터 가져오기

SELECT * FROM dbo.Employee

 

- 특정 열의 데이터 가져오기

SELECT EmpID, HireDate, Email 
FROM dbo.Employee 
GO

 

-특정 행의 데이터만 가져오기

SELECT * 
FROM dbo.Employee 
WHERE EmpID = 'S0005' 
GO

 

- 특정 열의 특정 행만 가져오기

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE EmpID = 'S0005' 
GO

 

- 비교 연산자 사용

SELECT EmpID, EmpName, HireDate, EMail
FROM dbo.Employee 
WHERE Salary >= 8000

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE HireDate < '2007-01-01'

 

- 문자열 비교

SELECT EmpID, EmpName, HireDate, Email 
FROM dbo.Employee 
WHERE EmpName = '홍길동'

SELECT EmpID, EmpName, HireDate, Email 
FROM dbo.Employee 
WHERE EmpName LIKE '김%'

 

- 논리 연산자 사용

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE HireDate >= '2008-01-01' AND Salary >= 6000

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE HireDate >= '2008-01-01' OR Salary >= 6000

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE HireDate >= '2008-01-01' AND NOT Salary >= 6000

 

- 범위 조건 지정

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE Salary BETWEEN 6000 AND 8000

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE Salary >=6000 AND Salary <= 8000

 

- 리스트 조건 지정

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE DeptID IN ('SYS', 'MKT', 'HRD')

SELECT EmpID, EmpName, HireDate, EMail 
FROM dbo.Employee 
WHERE DeptID = 'SYS' OR DeptID = 'MKT' OR DeptID = 'HRD'

 

 

 

 

'MSSQL 2008 > SQL' 카테고리의 다른 글

UPDATE 기본 문법  (0) 2014.03.03
INSERT 기본 문법  (0) 2014.03.03
DB에서 컬럼 이름 찾기 - MS SQL  (0) 2014.02.26
SQL Server 에서 GO의 의미 (Batch)  (0) 2014.01.20
SET 옵션들  (0) 2014.01.13
by 짱구를꼭말려 2014. 3. 3. 14:42

① SELECT, INSERT, UPDATE, DELETE 한꺼번에 주는 법(1개의 데이터베이스에 해당 스키마)

데이터베이스 - 해당DB - 보안 - 사용자 - 원하는 사용자 더블클릭 - 일반탭에서 소유한 스키마에 원하는 스키마 클릭

이렇게 하면 해당 사용자가 해당 스키마로 만들어진 테이블들에 대한 권한을 가진다.

스키마 소유권 주기(스키마 소유권은 1스키마당 1사용자)

USE 해당DB
GO
ALTER AUTHORIZAION ON SCHEMA::[해당스키마] TO [사용자]
GO

② 한 스키마에 대해서 원하는 권한 선택하여 넣어주기

데이터베이스 - 해당DB - 보안 - 스키마 - 원하는 스키마 더블클릭 - 사용권한탭에서 사용자 검색하여 추가 - 아래에 원하는 권한 선택하여 주기

USE AdventureWorks2008
GO

GRANT SELECT ON SCHEMA::HumanResources TO UserA
GO

③ 추후 업데이트

 


 

'MSSQL 2008 > 보안' 카테고리의 다른 글

SELECT 권한 주는 방법 2가지와 차이점  (0) 2014.02.28
로그인 계정 & (USER)사용자 계정  (0) 2014.02.28
by 짱구를꼭말려 2014. 3. 3. 10:44

 배치작업, 스케쥴, 에이전트 작업 스크립트로 빼서 옮기기

 

① 한개만 옮기기

 

② 여러 개 한꺼번에 옮기기

개체 탐색기 정보는 보기 에서 누르거나 F7을 누르면 된다.

 

 

 

by 짱구를꼭말려 2014. 2. 28. 17:55
 SELECT 권한 주는 방법 2가지와 차이점

 

1. 쿼리로 현재 구성된 모든 테이블에 select 주는 방법

2. db_datareader 권한을 부여하는 방법

 

두가지 권한의 차이... 

1번으로 수행한 경우에는.. 수행 후에 디비에 테이블이 추가가 되면.. 추가된 테이블에 대해서는 권한을 주지 않았기 때문에 select 불가능해집니다.

 

 

1 방법: 현재 있는 모든 테이블 SELECT 권한 주는 방법

exec sp_msforeachtable 'GRANT select on ? to test'

 

 

2 방법:

exec sp_addrolemember 'db_datareader','test'

 

 

2 방법은 추가되는 테이블에도 계속 적용이 되기 때문에 보다 효율적



추가 : SELECT 모든 테이블의 권한을 뺐기

 

exec sp_msforeachtable 'REVOKE select on ? to test'

 

sp_msforeachtable SP 관련된 라이고님의 좋은 http://laigo.kr/307

'MSSQL 2008 > 보안' 카테고리의 다른 글

권한 주는 방법 여러가지  (0) 2014.03.03
로그인 계정 & (USER)사용자 계정  (0) 2014.02.28
by 짱구를꼭말려 2014. 2. 28. 17:22
 로그인 계정 & (USER)사용자 계정

1. 로그인 계정 

보안 - 로그인 을 누르면 나오는 것들이 바로 로그인 계정이다. SQL Server에 로그온 할 때 사용하는 계정을 말한다.

 

down 로그인 계정을 더블클릭 - 사용자 매핑 

down 사용자 계정을 down 데이터 베이스에 매핑된 사용자로 체크를 해 주고,

down 사용자 계정으로 로그인 후, down 데이터베이스에 있는 테이블을 SELECT 해 보았지만 SELECT 권한이 없다고 나왔다.

 그래서 위 그림과 같이 아래에 멤버 자격에 db_datareader의 자격을 주었더니 정상적으로 SELECT가 가능했다.

 

2. USER 계정

로그인 계정과 매핑이 되는 사용자 계정이 데이터베이스에 만들어져 있어야 그 데이터베이스에 접근을 할 수 있다.

위의 경우 사용자 매핑을 한 것이라 할 수 있다.

이렇게 사용자 매핑을 하게 되면 아래 그림과 같이 해당 데이터베이스에 USER가 나타나게 된다. 

Down 데이터베이스 - 보안 - 사용자에 down이라는 USER가 생겼다.

이 down이라는 USER를 더블클릭하여 일반탭을 보면 위에 사용자 매핑 과정에서 했던 대로 저장이 되어 있다.

여기서 db_accessadmin의 역할 멤버 자격을 줘봤더니 로그인 계정이 나타나는 맨아래 있는 보안 - 사용자 - down을 더블클릭하여 속성을 보아도 똑같이 db_accessadmin의 자격이 주어져 있었다.

 

결론적으로 로그인 과 사용자 두가지는 동기화가 되어 지는 것이다.

 

 궁금한 것이 몇가지 생겨서 해본 실험

 

① 실험 1 - 사용자 매핑으로 하지 않고, down 데이터베이스에서 사용자를 직접 만들며 기본스키마를 db_datareader , 권한은 db_ddladmin 으로 주어 테이블을 생성하였다.

결과 : db_datareader.table1 이라는 테이블이 생성되었다. / 하지만 datareader가 기본 스키마라고 해서 select 권한이 있는 건 아니었다. 

 

② 사용자가 소유한 스키마 부여

사용자가 소유한 스키마에 db_reader를 줘봤다(원래는 공백이었다)

결과 : 그래도 SELECT는 불가능

 

③ 사용자 - down - 더블클릭 - 보안개체 - 테이블 T에 대한 선택 권한 부여 

결과 : 이 경우에는 SELECT 가능

 

데이터베이스의 스키마를(을) 소유하며 삭제할수 없습니다.라는 오류가 나올 때

②에서 소유한 스키마를 삭제 해주어야 한다.

방법

해당 데이터베이스 - 보안 - 스키마 에서 소유한 스키마를 더블클릭 - 스키마 소유자를 스키마 이름(기본값)으로 하던지 해서 바꿔준다.

 

 

 

 

 

 

 

'MSSQL 2008 > 보안' 카테고리의 다른 글

권한 주는 방법 여러가지  (0) 2014.03.03
SELECT 권한 주는 방법 2가지와 차이점  (0) 2014.02.28
by 짱구를꼭말려 2014. 2. 28. 15:50

윈도우7은 다중 언어를 지원하고 있습니다. 따라서 굳이 예전처럼 영문판XP, 중국어판 XP를 설치할 필요없이, 윈도우7 하나에서 여러가지의 언어를 사용할 수가 있습니다.

단, 조건이 있는데 윈도우7 Ultimate 나 윈도우7 Enterprise 버전에서만 가능합니다. 윈도우7 언어 변경을 위해서는 반드시  사용중인 윈도우7의 버전이 Ultimate나 Enterprise인지 확인하시기 바랍니다.

이번 포스팅에서는 한글에서 영어로 윈도우7의 언어를 변경해보도록 하겠습니다.

 

1. 제어판 - 시계, 언어 및 국가별 옵션으로 가서 표시 언어 설치 또는 제거를 클릭합니다. 

2. 표시 언어 설치 또는 제거 창이 뜨면 표시 언어 설치를 클릭합니다 

3. 설치 방법 선택에서 Windows Update 실행을 클릭합니다.

4. Windows Update에서 선택적 업데이트를 클릭합니다. 

5. Windows Update의 선택적 업데이트를 보면 Windows 7 Language Packs가 있는데 이중에서 설치를 원하는 언어를 체크하고 확인을 클릭합니다. 여기에서는 영어로 선택해서 진행하도록 하겠습니다. 

6. 다시 Windows Update 메인 화면으로 돌아오게 되고, 선택적 업데이트가 선택된 것이 보이실겁니다. 업데이트 설치를 클릭해서 Language Pack 을 설치합니다. 

7. Windows Update 에서 Language Pack이 설치가 완료되면, 제어판 - 시계, 언어 및 국가별 옵션으로 가서 표시 언어 변경을 클릭합니다. 

8. 이제 아까와는 달리 표시 언어 선택 부분이 생겼는데, 여기에서 Windows Update에서 설치한 언어를 선택하고 적용을 클릭합니다. 

9. 표시 언어 변경 사항을 적용하려면 로그오프해야 한다는 경고창이 뜹니다. 하던 작업이 있으시면 먼저 저장을 하시고, 지금 로그오프를 클릭합니다. 

10. 다시 로그인을 하면, 표시 언어 변경에서 선택한 언어로 윈도우가 변경되어 있음을 확인할 수 있습니다. 

 

 

 

출처 : http://www.nextstep.co.kr/248

 

 

 

 

 

by 짱구를꼭말려 2014. 2. 27. 17:16
 에러 메시지를 원하는 언어로 변경하기

 

해외 서버에서 작업을 하다보면 한글이 아닌 그 나라의 언어를 사용하는 경우가 있다.

특히 중국이나 대만 서버에서 작업을 할 때 한문이 나오면 정신이 혼미해진다.

에러 메시지를 원하는 언어로 변경하여 보자.

 

에러 메시지를 한문으로 보여주고 있다. 

▼다음 명령어를 실행 후 확인해보면 에러메시지가 지정한 언어로 나오는 것을 볼 수 있다.

-- 한국어

 SET LANGUAGE KOREAN

 GO

 

 -- 영어

 SET LANGUAGE ENGLISH

 GO

 

 -- 일본어

 SET LANGUAGE JAPANESE

 GO

 

 -- 설정할 수 있는 언어가 저장된 테이블

 SELECT * FROM MASTER.DBO.SYSLANGUAGES

 GO

 

SET LANGUAGE는 권한에 제약이 없고, 현재의 세션에서만 적용된다.

 

 

참고 : http://msdn.microsoft.com/en-us/library/aa259215(v=sql.80).aspx

원문 : http://lovedb.tistory.com/99

 

 

by 짱구를꼭말려 2014. 2. 27. 15:11

배경

어떤 데이터를 DB에서 직접 고치게 되면, 늘 걱정하는 것 중 하나가 완벽하게 모든 영향받는 테이블들까지

잘 고쳤는가 하고 스스로에게 물어보는 것일게다.

그럴 때면, 해당 컬럼 이름이 포함된 모든 테이블을 뒤지는 게 상책이다.

 

소스

select b.name, a.name 
from sys.all_columns a, sys.all_objects b
where a.object_id = b.object_id and b.type_desc = 'USER_TABLE'
and a.name = 'AccountID' --// 해당 컬럼 이름을 여기에 넣어서 찾으면 된다.


 

잡담

sys.all_objects 는 참 유용한 녀석이다. 테이블 뿐만 다음과 같은 타입을 모두 취급하니,

시간되면 천천히 찾아 볼 일이다. ㅎㅎ

 

 

CLR_STORED_PROCEDURE
SYSTEM_TABLE
VIEW
SQL_TABLE_VALUED_FUNCTION
DEFAULT_CONSTRAINT
SQL_STORED_PROCEDURE
EXTENDED_STORED_PROCEDURE
AGGREGATE_FUNCTION
USER_TABLE
SERVICE_QUEUE
SQL_INLINE_TABLE_VALUED_FUNCTION
INTERNAL_TABLE
CLR_SCALAR_FUNCTION
SQL_SCALAR_FUNCTION
PRIMARY_KEY_CONSTRAINT
 

출처 : http://blog.daum.net/nextkey/122

 

'MSSQL 2008 > SQL' 카테고리의 다른 글

INSERT 기본 문법  (0) 2014.03.03
SELECT 기본 문법  (0) 2014.03.03
SQL Server 에서 GO의 의미 (Batch)  (0) 2014.01.20
SET 옵션들  (0) 2014.01.13
쿼리 처리 과정 / SELECT 실행순서  (0) 2014.01.07
by 짱구를꼭말려 2014. 2. 26. 18:15

PS C:\Users\Administrator> diskpart


Microsoft DiskPart 버전 6.1.7601

Copyright (C) 1999-2008 Microsoft Corporation.

컴퓨터: WIN-191VEBRHN6R


DISKPART>




DISKPART> list disk


  디스크 ###  상태           크기     사용 가능     Dyn  Gpt

  ----------  -------------  -------  ------------  ---  ---

  디스크 0    온라인       3725 GB       1024 KB



DISKPART> select disk 0


0 디스크가 선택한 디스크입니다.


DISKPART>



DISKPART> detail disk


HP LOGICAL VOLUME SCSI Disk Device

디스크 ID: B625F5E1

유형   : RAID

상태 : 온라인

경로   : 0

대상 : 4

LUN ID : 0

위치 경로 : PCIROOT(0)#PCI(0300)#PCI(0000)#RAID(P00T04L00)

현재 읽기 전용 상태 : 아니요

읽기 전용: 아니요

부팅 디스크: 예

페이지 파일 디스크: 예

최대 절전 모드 파일 디스크: 아니요

크래시 덤프 디스크: 예

클러스터된 디스크  : 아니요


  볼륨 ###  Ltr  레이블      Fs    형식       크기     상태          정보

  --------  ---  ----------  ----  ---------  -------  ------------  --------

  볼륨 0         시스템 예약      NTFS  파티션         100 MB  정상            시스템

  볼륨 1     C               NTFS  파티션          99 GB  정상            부팅

  볼륨 2     D   새 볼륨        NTFS  파티션        1947 GB  정상


DISKPART>



DISKPART> list part

  파티션 ###  종류              크기     오프셋
  ----------  ----------------  -------  -------
  파티션 1    주                  100 MB  1024 KB
  파티션 2    주                   99 GB   101 MB
  파티션 3    주                 1947 GB   100 GB


DISKPART> select part 2

2 파티션이 선택한 파티션입니다.


DISKPART> detail part


파티션 2

종류: 07

숨김: 아니요

활성: 아니요

오프셋(바이트): 105906176


  볼륨 ###  Ltr  레이블      Fs    형식       크기     상태          정보

  --------  ---  ----------  ----  ---------  -------  ------------  --------

 

* 볼륨 1     C               NTFS  파티션          99 GB  정상            부팅



DISKPART> detail volume


  디스크 ###  상태                크기     사용 가능       Dyn  Gpt

  ----------  -------------  -------  ------------  ---  ---

* 디스크 0    온라인       3725 GB       1024 KB


읽기 전용               : 아니요

숨김                 : 아니요

기본 드라이브 문자 없음: 아니요

섀도 복사본            : 아니요

분리됨             : 아니요

암호화된 BitLocker    : 아니요

설치 가능            : 예


볼륨 용량        :   99 GB

사용 가능한 볼륨 공간      :   58 GB

 

출처 : http://blog.daum.net/kkyagami/54

by 짱구를꼭말려 2014. 2. 25. 18:53
| 1 2 3 4 5 6 7 8 ··· 12 |