반응형
반응형

 

-- with(nolock)

MSSQL 은 기본적으로 SELECT 시 공유잠금(S Lock) 이 걸린다.
즉, DML(INSERT, UPDATE, DELETE) 작업중인 ROW 또는 TABLE 에 SELECT 할 경우,
해당 작업이 끝나야 SELECT 할 수 있다는 의미이다.  
이를 방지하기 위해 WITH(NOLOCK) 을 사용할 수 있다.
WITH(NOLOCK) 의 격리수준(Isolation Level)은 Read Uncommitted 와 같다고 보면 된다.
즉, SELECT 할 ROW 또는 TABLE 이 잠겨있어도(작업중이여도) 기다리지 않고 조회 (Dirty Read) 하겠다라는 의미이다.
이를 통해 조회 성능이 올라가고, 데드락(Deadlock) 을 방지할 수 있다.
 

반응형
반응형

MS-SQL에서 내부적으로 지원하는 문서화되지 않은 문자열 함수인 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능을 구현할수 있다.

 

<사용예제>

 

' 테이블을 생성한다, 암호화할 컬럼은 VARBINARY 타입으로 한다. 

CREATE TABLE MEMBER
(
  UserId VARCHAR(25),
  UserPwd VARBINARY(100)
)

' 데이터를 입력한다. 암호화할 컬럼은 PWDENCRYPT메소드를 이용해서 넣는다.

INSERT INTO MEMBER (UserId, UserPwd)

       VALUES ('smith', PWDENCRYPT('1234')) 

 

' 해당아이디를 가진 회원의 암호화된 비밀번호 컬럼과 입력한 문자열 비밀번호를

' PWDCOMPARE(입력문자열, 컬럼명) 메소드를 이용해 비교한다.

' 둘이 같으면 1 (true), 틀리면 0 (false)를 리턴하게 된다.

' 그리고 원문이나 암호문 둘 중 하나가 NULL 이면 NULL을 리턴하게 된다.

SELECT PWDCOMPARE('1234', UserPwd)

       FROM MEMBER WHERE UserId='smith'  ' 결과 : 1

 

결과를 살펴보면 대소문자는 구분하지 않음을 알 수 있다. 암호문의 경우 위에서 살펴본대로 대소문자를 분명 다르게 비교하였으나, PWDCOMPARE 함수에서는 대소문자를 무시하였다.

또한, 실행 결과를 보면 형태는 원문의 길이에 상관없이 30~35자 사이의 거의 일정한 길이의 암호문을 출력하는 것을 볼 수 있다.  테스트 결과 원문의 길이가 varchar 기준으로 128자를 넘었을 경우 에러를 발생 하였다.

반응형
반응형

구문

JSON_MODIFY ( expression , path , newValue )  

기본 쿼리


DECLARE @info NVARCHAR(100)='{"name":"John","skills":["C#","SQL"]}'

PRINT @info

-- Update name  

SET @info=JSON_MODIFY(@info,'$.name','Mike')

PRINT @info

-- Insert surname  

SET @info=JSON_MODIFY(@info,'$.surname','Smith')

PRINT @info

-- Set name NULL 

SET @info=JSON_MODIFY(@info,'strict $.name',NULL)

PRINT @info

-- Delete name  

SET @info=JSON_MODIFY(@info,'$.name',NULL)

PRINT @info

-- Add skill  

SET @info=JSON_MODIFY(@info,'append $.skills','Azure')

PRINT @info

결과

{
    "name": "John",
    "skills": ["C#", "SQL"]
} {
    "name": "Mike",
    "skills": ["C#", "SQL"]
} {
    "name": "Mike",
    "skills": ["C#", "SQL"],
    "surname": "Smith"
} {
    "skills": ["C#", "SQL"],
    "surname": "Smith"
} {
    "skills": ["C#", "SQL", "Azure"],
    "surname": "Smith"
}

 

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/json-modify-transact-sql?view=sql-server-ver15 

 

 

JSON_MODIFY(Transact-SQL) - SQL Server

JSON_MODIFY(Transact-SQL)

docs.microsoft.com

 

반응형
반응형

PIVOT SUM FOR IN PIVOT_TABLE

 

PIVOT을 이용하여 세로를 가로로 변환 방법(행 열 변환) 

SELECT Student  
, isnull(CAST([Mathematics] AS varchar), '' ) [Mathematics]
, isnull(CAST([Science] AS varchar), '' ) [Science]
, isnull(CAST([Geography] AS varchar), '' ) [Geography]
-- , * 
FROM (
  SELECT
    [Student],
    [Subject],
    [Marks]
  FROM #TEMP_TABLE_Grades
) StudentResults
PIVOT (
  SUM([Marks])
  FOR [Subject]
  IN (
    [Mathematics],
    [Science],
    [Geography]
  )
) AS PivotTable;

IF OBJECT_ID('tempdb..#TEMP_TABLE_Grades') --임시 테이블 남아있을시 삭제 
  IS NOT NULL DROP TABLE #TEMP_TABLE_Grades;
 

CREATE TABLE #TEMP_TABLE_Grades(
  [Student] VARCHAR(50),
  [Subject] VARCHAR(50),
  [Marks]   INT
);
 
INSERT INTO #TEMP_TABLE_Grades VALUES 
('Jacob','Mathematics',100),
('Jacob','Science',95),
('Jacob','Geography',90),
('Jacob2','Mathematics',''),
('Jacob2','Science',''),
('Amilee','Mathematics',90),
('Amilee','Science',90),
('Amilee','Geography',100);
 
SELECT * FROM (
  SELECT
    [Student],
    [Subject],
    [Marks]
  FROM #TEMP_TABLE_Grades
) StudentResults
PIVOT (
  SUM([Marks])
  FOR [Subject]
  IN (
    [Mathematics],
    [Science],
    [Geography]
  )
) AS PivotTable
반응형
반응형

데이터 리터러시( Data literacy )는 데이터 를 정보 로 읽고, 이해하고, 생성하고, 전달할 수 있는 능력 입니다. 일반 개념으로서의 문해력 과 마찬가지로 데이터 문해력은 데이터 작업과 관련된 역량 에 중점을 둡니다. 그러나 데이터를 읽고 이해하는 것과 관련된 특정 기술이 필요하기 때문에 텍스트를 읽는 능력과 유사하지 않습니다. 

 

리터러시(literacy)는 글을 읽고 해독하는 능력을 의미한다. 데이터 리터러시는 데이터를 목적에 맞게 활용하는 데이터 해석 능력을 말한다. 여기서의 데이터는 고도의 처리 기술이 필요한 빅데이터에서 단순 수치 등도 포함한다. 수많은 데이터가 쏟아지는 상황에서 데이터에 담겨있는 의미를 파악하여 의미를 파악해 내는 능력은 데이터 활용 과정 전반에 필요한 역량이다. 빅데이터 시대에 데이터 리터러시는 개인에게도 필요한 능력이며, 데이터 수집 역량, 관리 역량, 가공 및 분석 역량, 시각화 역량, 기획 역량 등이 데이터를 활용하는 능력이다.

 

 

데이터 수집  데이터 공유 가 일상화되고 데이터 분석  빅 데이터 가 뉴스, 비즈니스, [2] 정부 [3] 및 사회 에서 일반적인 아이디어가 됨에 따라 [4] 학생, 시민 및 독자에게 점점 더 중요해지고 있습니다. 데이터 활용 능력이 있습니다. 이 개념은 일반적으로 자동화된 수단을 통한 데이터 분석과 결과의 해석 및 적용과 관련된 데이터 과학과 관련이 있습니다. [5]

데이터 리터러시(Data literacy)는 그래프와 차트를 읽고 데이터에서 결론을 도출하는 능력을 포함하여 데이터의 의미를 이해하는 것을 포함하기 때문에 통계 리터러시 와 구별됩니다 . [6] 한편, 통계적 소양은 그래프, 표, 진술, 설문조사, 연구와 같은 "일상적인 매체에서 요약 통계를 읽고 해석하는 능력"을 의미한다. [6]

 

정보를 찾고 사용하기 위한 가이드로서 사서 는 학생과 연구원을 위한 데이터 활용 능력에 대한 워크샵을 이끌고 자신의 데이터 활용 능력을 개발하기 위해 노력합니다. [7]

기관 및 학문 분야에 걸쳐 도서관 교육 프로그램에서 적용 가능한 공통 참조 프레임워크로 사용할 수 있는 일련의 핵심 역량 및 내용이 제안되었습니다. [8]

사서가 만든 리소스에는 MIT 의 데이터 관리 및 출판 자습서, EDINA 연구 데이터 관리 교육(MANTRA), 에딘버러 대학의 데이터 라이브러리 및 미네소타 대학 도서관의 구조 엔지니어를 위한 데이터 관리 과정이 있습니다.

 

반응형
반응형

[MSSQL] 특정 기간에 해당하는 모든 날짜 (MASTER..SPT_VALUES) 

 

 

SELECT CONVERT(VARCHAR, DATEADD(D, NUMBER, '20170213'), 112) AS 'DATE' 
FROM MASTER..SPT_VALUES 
WHERE TYPE = 'P' AND NUMBER <= DATEDIFF(D, '20170213', '20170730')
반응형

+ Recent posts