본문 바로가기

MSSQL

(4)
[MSSQL] 조인해서 업데이트하고 지우기 CREATE TABLE User ( userNo BIGINT , name NVARCHAR(100) , age INT , email NVARCHAR(256) , inventoryNo BIGINT ) CREATE TABLE Inventory ( inventoryNo BIGINT , amount BIGINT ) 이런 테이블이 있어요 대충 User 라는 테이블에 유저 번호, 이름, 나이, 이메일, 인벤토리 번호가 있고 Inventory 라는 테이블에 인벤토리 번호, 돈! 이 있어요. 누가봐도 User 안의 inventoryNo 는 외래키겠죠? User 테이블과 Inventory 테이블을 조인해서 어떤 유저가 돈을 얼마나 가지고 있는지 알아낼 수 있는 구조라고 해봅시다. 자 이런 상상을 해봅시다. 나는 게임을 만..
[MSSQL] 동적 쿼리쿼리 쿼리 ~~ 동적 쿼리에 대해서 알아보자. 왜 알아야하냐면 이거 아주 신박한 기능이거든. 게시글 검색기능을 구현하고 있을 때 였다. 검색 종류가 여러 가지가 있다. 제목으로 검색, 내용으로 검색, 작성자 이름으로 검색. 그래서 프로시저 내에서 분기처리를 했다. 아래 코드는 검색 프로시저의 일부다. @searchType 는 검색 종류, @searchText 는 검색어다. -- 제목으로 검색 IF (@searchType = 1) BEGIN SELECT postIdx, title, content, author FROM PostTable WHERE title LIKE '%' + @searchText + '%' END -- 내용으로 검색 ELSE IF (@searchType = 2) BEGIN SELECT postIdx, t..
[Database] DB 성능 높이기 백엔드 개발자라면 늘 하는 고민이 있다. 어떻게 하면 웹 서버의 성능을 높일 수 있을까! 성능을 높이는 방법에는 여러 가지가 있는데, DB 성능을 높이는 것도 그중 하나다. 오늘은 DB 성능을 높이는 방법을 고민해보자. 1. TEXT 보다는 VARCHAR를 사용하자 보통 게시판을 구현한다고 하면 내용 부분에는 TEXT 타입을 주로 쓸 것이다. 사용자가 게시글을 얼마나 길게 쓸지 모르니까. 그런데 TEXT 타입은 쓰지 않는게 좋다. TEXT와 VARCHAR는 둘 다 가변길이의 문자형 데이터를 저장한다는 점에서 똑같다. 다른 점이라면 TEXT는 길이의 제한이 항상 65535 제한되어 있고, VARCHAR는 1부터 65535까지 지정해줄 수 있다는 것이다. 여기까지는 VARCHAR를 써야하는 특별한 이유가 없..
[Procedure] Procedure 는 뭘까? 첫 취직을 하고 나서 처음 만나게된 아주 낯선 녀석이 있다. Procedure 라는 것이다. '프로시저' 라고 불리는 이 녀석, 뭐하는 녀석일까? 먼저 네이버 지식백과에서 정의하는 프로시저 에 대해 알아보면, "어떤 일을 수행하기 위해 해야할 일들을 단계적으로 적어놓은 것." 이라고 한다. 그럼 프로그래밍에서의 프로시저란 대충 함수 같은 것일거라고 생각할 수 있다. 틀린 말은 아니다. 여러 명령을 하나의 집합으로 정의해서 사용한다는 점에서 함수라고 할 수 있다. 물론 함수와 프로시저에는 차이가 있다. 그 차이에 대해서는 크게 안중요하니까 다음에 알아보자. 그럼 이 프로시저라는 것은 어디에서 쓰일까? DB 쿼리를 실행하는데 사용된다. DB 쿼리란 흔히들 생각하는 SELECT FROM , INSERT INT..