본문 바로가기

Database

DB 커서 개요 행의 집합을 다루는 데 제공해주는 편리한 기능 SQL Server의 성능을 느리게 하는 요인이 될 수 있으므로, 특별한 경우가 아니라면 되도록 사용하지 않을 것을 권장함 파일처리시의 파일 포인터와 비슷한 작동을 함 커서의 선언 DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ] 커서 관련 쿼리문 SELECT * FROM tit.. 더보기
SELECT 문과 함수사용 USE pubs SELECT * FROM titles SELECT COUNT(*) FROM titles-- 카운트의 수를 구하여라 SELECT COUNT(price) FROM titles-- proce 갯수를 셀ㄺ트해 (NULL값은 포함하지 않는다) SELECT AVG(price) FROM titles -- price 의 값을 전부 더하고 NULL 값을 빼고 나누가 16한값 평균을 구하여라 SELECT AVG(ISNULL(price , 0 )) FROM titles-- ISNULL 널값은 0으로 바꾼다 SELECT ISNULL(price, 0) FROM titles -- ISNULL 이 있으면 0으로 바꾼다 SELECT COUNT(ISNULL(price, 0)) FROM titles -- 값의 카운터는 .. 더보기
DB 사용자정의 함수기본 사용자정의함수 예제 오라클도 보자 저장프로시저와 조금비슷해 보이지만 일반적인 프로그래밍언어에서 사용되는 함수와 같이 복잡한 프로그래밍이 가능 함수는 RETURN 문에 의해서 특정값을 되돌려줌 저장프로시저는 EXEC 에 의해서 실행되지만 함수는 주로 SELECT 문에 포함되어 실행됨(예외도있음) 함수의 종류 시스템 함수 사용자 정의 함수 예제 USE pubs IF object_id('dbo.sfn_test') IS NOT NULL DROP FUNCTION dbo.sfn_test1 GO CREATE FUNCTION dbo.sfn_test1 (@myinput varchar(20)) RETURNS VARCHAR(21) -- 함수는 RETURN 이 있다 AS BEGIN IF @myinput IS NULL SET @myinput = .. 더보기
DB 프로시저 묶기 INS(삽입), UPD(수정), DEL(삭제), SEL(전체), SEA(하나) 모듈화~! 실무에서는 어렇게 많이 쓴다 5개의 프로시저를 하나의 프로시저로 묶은것 USE Pubs IF object_id('usp_JobsProcess') IS NOT NULL DROP PROC usp_JobsProcess GO CREATE PROC usp_JobsProcess -- 프로세스 묶었기때문에 이름정했다 -- 아까와다른점 매개변수가 5개가있다 @job_id smallint = 0 , @job_descvarchar(50) = NULL -- NOT NULL & DEFAULT(s) , @min_lvltinyint = NULL-- 디폴트 NULL , @max_lvltinyint = NULL-- 디폴트 NULL , @prc_typechar(3) = 'SEL'-- 임으로 만든것 prc_type 디폴트 '.. 더보기
저장 프로시저 수정문 삭제문 셀렉트문 프로시저 관련 파일 프로시저.zip문을 조금 수정해야함 오타있음 에러관련 함수프로시저 아래는 변수바꾸기 팁 MakeErrMag는 함수프로시져 프로시저 수정 USE Pubs IF object_id('usp_jobsUpdate') IS NOT NULL -- 컨트롤 + H눌러서 이름 한꺼번에 바꾸기 DROP PROC usp_jobsUpdate GO CREATE PROC usp_jobsUpdate ( @job_id smallint --주 키 , @job_desc varchar(50) = NULL-- 디폴트값 NULL , @min_lvl tinyint = NULL-- 디폴트값 NULL , @max_lvl tinyint = NULL-- 디폴트값 NULL ) AS BEGIN TRAN DECLARE @ERR int I.. 더보기
DB 저장프로시저 연습 프로시저 INSERT 문 프로시저 수정후~!!!!!!! 만들어져서 저장되는시간이걸린다 그래서 수정후 바로 적용안되는 경우가 있다 만들고나서 10초정도 딜레이한 시간이 필요하다 USE pubs USE pubs CREATE PROC au_info @lastname varchar(40), @firstname varchar(20) AS SELECT a.au_lname, a.au_fname, t.title, p.pub_name FROM authors AS a INNER JOIN titleauthor AS ta ON a.au_id = ta.au_id INNER JOIN titles AS t ON t.title_id = ta.title_id INNER JOIN publishers AS p ON t.pub_id = p.pub_id WHERE .. 더보기
저장프로시저 예제 USE pubs GO ALTER PROC usp_titleSelectArow ( @title_id VARCHAR(6) = 'MC2222', @result CHAR(12) OUTPUT-- 값을 돌려받기위한 매개변수 값을 출력하기위해쓴다 )AS-- 만약에 OUTPUT 이없으면 대체 -> @pub_id CHAR(4) = '1389' SELECT @result = type FROM titles-- type 이라는글자가 @result에들어간다 WHERE title_id = @title_id -- 만약에 AND pub_id = @pub_id 추가~!! GO SELECT type FROM titles WHERE title_id = 'BU1032' -- ,MC2222 DECLARE @res CHAR(12) -- 변수 .. 더보기
쿼리 교도소 탈출하기 풀어보자 더보기