반응형
-- 테이블에 존재하던 기존 PK 삭제
ALTER TABLE dbo.myTableName DROP CONSTRAINT dbo.myTableName.pkName

-- 테이블에 새로운 PK추가
ALTER TABLE dbo.myTableName ADD CONSTRAINT dbo.myTableName.pkNewName PRIMARY KEY CLUSTERED (
    [col1] ASC,
    [col2] ASC,
    [col3] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 
ON [PRIMARY]
 
반응형
반응형
-- column add
ALTER TABLE 테이블명 ADD 추가할컬럼명 데이터타입(데이터크기) 컬럼속성 

EX)
ALTER TABLE EMP ADD DT_ENTER NVARCHAR(8) (NOT)NULL (DEFAULT (VALUE))

-- column modify
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 데이터타입(데이터크기) 컬럼속성

EX)
ALTER TABLE EMP ALTER COLUMN DT_ENTER NVARCHAR(8) NOT NULL DEFAULT('20210101')

-- column delete
ALTER TABLE 테이블명 DROP COLUMN 컬럼명

EX)
ALTER TABLE EMP DROP DT_ENTER
반응형
반응형

MS-SQL에서 임시 테이블을 사용하여 쿼리를 짜고, 실행할 때..

 

'데이터베이스에 '#TEMP'(이)라는 개체가 이미 있습니다.' 에러가 뜨는 경우가 빈번하게 발생한다.

다시 실행시키면 에러없이 수행되지만 에러 메시지를 보기 싫은 경우

 

임시 테이블 생성하기 전에 아래 코드를 작성해주면 에러 없이 실행된다.

IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
BEGIN
       DROP TABLE #Temp
END

 

반응형
반응형

월요일을 주의 시작 요일로 설정을 하고..

 

해당 월 1주 차, 2주 차, 3주 차, 4주 차, 5주 차, 6주 차별 시작일자 종료일자를 구하는 쿼리는 아래와 같다.

(6주 차까지 설정한 이유는 2020년 8월처럼 6주까지 있는 달이 있기 때문에..)

	DECLARE	@V_DT	NVARCHAR(8) = '20201201'	-- 기준년월

	-- 각 주차별 시작일 종료일을 담을 변수
	DECLARE	@V_DT_START_FIRST	NVARCHAR(8),
			@V_DT_END_FIRST		NVARCHAR(8),
			@V_DT_START_SECOND	NVARCHAR(8),
			@V_DT_END_SECOND	NVARCHAR(8),
			@V_DT_START_THIRD	NVARCHAR(8),
			@V_DT_END_THIRD		NVARCHAR(8),
			@V_DT_START_FOURTH	NVARCHAR(8),
			@V_DT_END_FOURTH	NVARCHAR(8),
			@V_DT_START_FIFTH	NVARCHAR(8),
			@V_DT_END_FIFTH		NVARCHAR(8),
			@V_DT_START_SIXTH	NVARCHAR(8),
			@V_DT_END_SIXTH		NVARCHAR(8)

	-- 해당월 1일의 요일을 구한다.
	DECLARE	@V_DT_WEEK	NVARCHAR(10) = DATENAME(WEEKDAY, @V_DT)

	-- 월요일 기준일자 셋팅
	-- 기준요일이 월요일이 아니라면 마지막 숫자를 바꿔주기
	-- 일요일은:-1 / 월요일:0 / 화요일:1 / 수요일:2 / 목요일:3 / 금요일:4 / 토요일:5
	DECLARE	@V_STD_DATE	DATE = DATEADD(WK, DATEDIFF(WK,0, DATEADD(DD,7 -DATEPART(DAY,@V_DT),@V_DT)), 0)

	-- 1주차 시작일, 종료일
	SET @V_DT_START_FIRST = @V_DT							
	SET @V_DT_END_FIRST = CONVERT(NVARCHAR(8), DATEADD(DAY, -1, @V_STD_DATE), 112)	-- 월요일 기준일자 -1일
	
	-- 2주차 시작일, 종료일
	SET @V_DT_START_SECOND = CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_FIRST), 112)	-- 월요일 기준일자
	SET @V_DT_END_SECOND = CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_SECOND), 112)	-- 2주차 시작일의 6일 더하기
	
	-- 3주차 시작일, 종료일
	SET @V_DT_START_THIRD = CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_SECOND), 112)	-- 2주차 종료일의 하루 더하기
	SET @V_DT_END_THIRD = CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_THIRD), 112)		-- 3주차 시작일의 6일 더하기
	
	-- 2월도 셋팅해줘야함..
	-- 4주차 시작일 종료일
	SET @V_DT_START_FOURTH = CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_THIRD), 112)	-- 3주차 종료일의 하루 더하기
	SET @V_DT_END_FOURTH = CASE WHEN SUBSTRING(@V_DT,5,2) <> SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_FOURTH), 112),5,2) THEN CONVERT(NVARCHAR(8), (DATEADD(MONTH, 1, @V_DT) - DAY(@V_DT)), 112)
								ELSE CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_FOURTH), 112)	
							END		-- 4주차 시작일의 6일 더하기
	
	-- 5주차 시작일 종료일
	-- 5주차 시작일 종료일이 다음달로 넘어가면 해당월 마지막일자로 셋팅
	SELECT @V_DT_START_FIFTH = CASE WHEN SUBSTRING(@V_DT,5,2) <> SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_FOURTH), 112), 5, 2) THEN CONVERT(NVARCHAR(8), (DATEADD(MONTH, 1, @V_DT) - DAY(@V_DT)), 112)
									ELSE CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_FOURTH), 112)
								END	-- 4주차 종료일의 하루 더하기
	SELECT @V_DT_END_FIFTH = CASE WHEN SUBSTRING(@V_DT,5,2) <> SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_FIFTH), 112), 5, 2) THEN CONVERT(NVARCHAR(8), (DATEADD(MONTH, 1, @V_DT) - DAY(@V_DT)), 112)
									ELSE CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_FIFTH), 112)
								END	-- 5주차 시작일의 6일 더하기
	-- 5주차 시작일이 4주차 종료일과 같으면 빈값으로 셋팅..(어짜피 5주차는 없으니까)
	SELECT @V_DT_START_FIFTH = CASE WHEN @V_DT_END_FOURTH = @V_DT_START_FIFTH THEN '' ELSE @V_DT_START_FIFTH END
	SELECT @V_DT_END_FIFTH = CASE WHEN @V_DT_END_FOURTH = @V_DT_END_FIFTH THEN '' ELSE @V_DT_END_FIFTH END

	-- 6주차.. 진짜 간혹가다가 한번 있음(예를 들면 2020년8월)	
	SELECT @V_DT_START_SIXTH = CASE WHEN SUBSTRING(@V_DT,5,2) <> SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_FIFTH), 112), 5, 2) THEN CONVERT(NVARCHAR(8), (DATEADD(MONTH, 1, @V_DT) - DAY(@V_DT)), 112)
									ELSE CONVERT(NVARCHAR(8), DATEADD(DAY, 1, @V_DT_END_FIFTH), 112)
								END	-- 5주차 종료일의 하루 더하기
	SELECT @V_DT_END_SIXTH = CASE WHEN SUBSTRING(@V_DT,5,2) <> SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_SIXTH), 112), 5, 2) THEN CONVERT(NVARCHAR(8), (DATEADD(MONTH, 1, @V_DT) - DAY(@V_DT)), 112)
									ELSE CONVERT(NVARCHAR(8), DATEADD(DAY, 6, @V_DT_START_SIXTH), 112)
								END	-- 6주차 시작일의 6일 더하기
	-- 6주차 시작일이 5주차 종료일과 같으면 빈값으로 셋팅..(어짜피 6주차는 없으니까)
	SELECT @V_DT_START_SIXTH = CASE WHEN @V_DT_END_FIFTH = @V_DT_START_SIXTH THEN '' ELSE @V_DT_START_SIXTH END
	SELECT @V_DT_END_SIXTH = CASE WHEN @V_DT_END_FIFTH = @V_DT_END_SIXTH THEN '' ELSE @V_DT_END_SIXTH END

	-- 결과
	SELECT @V_DT_START_FIRST	AS START_FIRST,	
		   @V_DT_END_FIRST		AS END_FIRST,
		   @V_DT_START_SECOND	AS START_SECOND,
		   @V_DT_END_SECOND		AS END_SECOND,
		   @V_DT_START_THIRD	AS START_THIRD,
		   @V_DT_END_THIRD		AS END_THIRD,
		   @V_DT_START_FOURTH	AS START_FOURTH,
		   @V_DT_END_FOURTH		AS END_FOURTH,
		   @V_DT_START_FIFTH	AS START_FIFTH,
		   @V_DT_END_FIFTH		AS END_FIFTH,
		   @V_DT_START_SIXTH	AS START_SIXTH,
		   @V_DT_END_SIXTH		AS END_SIXTH

 

2020년 12월 결과를 뽑아보면 아래와 같이 나온다.

 

<끝>

반응형
반응형

MyBatis를 추가하고 싶은 프로젝트의 pom.xml을 열자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- http://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency> 
    <!-- http://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
cs


추가!

반응형
반응형

책 실습을 따라하다가 oralce system 계정으로 접속해야 할 일이 생겼는데 도저히 기억나지 않는다..(큰일..)


sys / system 계정 비밀번호 변경 방법은 생각보다 간단했다.

아래와 같이 따라해보자.


윈도우키 + R을 눌러서 실행창을 실행시킨다.

cmd 창 실행시키기!



SQLPlus 입력


user-name에 sys as sysdba 입력하면 password를 입력해야하는데 아무런 입력없이 엔터누르자.


sys / system 계정에 접속되었다.

자, 이제 비밀번호를 변경해보자

필자는 비밀번호를 1234로 변경하겠다.


alter문은 열과 제약조건을 변경, 추가, 삭제하거나 파티션을 재할당, 제약 조건과 트리거를 설정 또는 해제하여 테이블 정의를 수정할 수 있다.

작성한 alter문을 보면 "sys이름의 user 계정을 비밀번호를(identified by) 1234로 변경하겠다." 라는 의미이다.

엔터를 치면 계정 수정이 완료되었다.

변경한 계정으로 접속이 가능한지 접속해보자.


Connected되었다.


oracle sql developer에서 접속 가능한지 확인해보자.

원하는 접속이름을 적어주고..

사용자이름 : system

비밀번호 : 변경한 비밀번호

테스트를 클릭해보면..

상태 : 성공



성공적으로 system 비밀번호를 변경!!

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle] sql user 생성 / 권한부여  (0) 2018.09.10

+ Recent posts