Database/MS-SQL
-
DB 전체 텍스트 검색 서비스Database/MS-SQL 2008. 10. 21. 10:26
전체 텍스트 검색 서비스(Full Text Search Service)는 SQL Server 외부기능임 긴 문장으로 구성된 열의 내용을 검색할 때 외부 인덱스를 사용해서 빠른 시간에 검색하는 것 전체 텍스트 검색 서비스가 작동중이여야한다 SQL2005에서 윈도우 관리도구 - 서비스 에서 보기 개요 신문기사와 같이 , 텍스트로 이루어진 문자열 데이터의 내용을 가지고 생성한 인덱스를 말함 SQL Server의 인덱스와 차이점 전체 텍스트 검색 엔진(MSFTESQL)이 생성하는 특수 토큰 기반 기능의 인덱스 외부 파일로 저장됨 테이블 당 하나만 생성 char, varchar, nvarchar, text, ntext 등의 열에만 생성이 가능 전체 텍스트 인덱스 생성 구문 CREATE FULLTEXT INDEX ..
-
-
DB XML 데이터 형식Database/MS-SQL 2008. 10. 20. 12:33
구문 SELECT * FROM userTbl FOR XML RAW, ELEMENTS, XMLSCHEMA 컨트롤 + T 를 누르고 F5번 누르면 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TEXT 형식으로 나온다 컨트롤 + D 를 누르고 F5번 누르면 ~!!!!!!!!!!! MSSQL로 볼수있다 SELECT * FROM userTbl FOR XML RAW, ELEMENTS, XMLSCHEMA SELECT * FROM userTbl FOR XML RAW, ELEMENTS (가장효율적으로 보는것) SELECT * FROM userTbl FOR XML RAW //////////////////////////////////////////////////////////////////// //////..
-
DB 테이블변경 트리거 롭 테이블고 ARTER 테이블 막기 트리거Database/MS-SQL 2008. 10. 20. 11:52
USE master CREATE DATABASE sqlDB GO USE sqlDB CREATE TABLE userTbl -- 사용자테이블 ( userID nchar(8) NOT NULL PRIMARY KEY, -- 사용자아이디 name nvarchar(10) NOT NULL, -- 이름 birthYear int NOT NULL, -- 출생년도 addr nchar(4) NOT NULL, -- 지역(경기,서울,경남,전북식으로2글자만입력) mobile1nchar(3), -- 휴대폰의국번(011, 016, 017, 018, 019, 010 등) mobile2 nchar(8), -- 휴대폰의나머지전화번호(하이픈제외) height smallint -- 신장 ) GO CREATE TABLE buyTbl -- 사용자구..
-
DB 트리거 문장 삽입하고 롤백 하기(저장안되게)Database/MS-SQL 2008. 10. 20. 11:35
SELECT * FROM userTbl; TRUNCATE TABLE userTbl;-- 다지우자~!! SELECT * FROM backup_userTbl; CREATE TRIGGER trg_insertUserTbl-- 데이터 안들어가는 티리거 ON userTbl AFTER INSERT -- 삽입 후에 작동하도록 지정-- 여기서 데이터가 들어가면 롤빽시키게 만들었다 AS RAISERROR(N'데이터의 입력을 시도했습니다.',10,1) RAISERROR(N'귀하의 정보가 서버에 기록되었습니다.',10,1) RAISERROR(N'그리고, 입력한 데이터는 적용되지 않았습니다.',10,1) ROLLBACK TRAN; INSERT INTO userTbl VALUES(N'ABC', N'에비씨', 1977, N'서울'..
-
DB 트리거 백업트리고 사용법 INSERT INTO SELECT 설명Database/MS-SQL 2008. 10. 20. 11:34
CREATE TRIGGER trg_BackupUserTbl -- 트리거 이름 ON userTbl -- 트리거를 부착할 테이블 AFTER UPDATE,DELETE -- 삭제,수정 후에 작동하도록 지정 AS DECLARE @modType NCHAR(2) -- 변경 타입 IF (COLUMNS_UPDATED() > 0) -- 업데이트 되었다면 BEGIN SET @modType = '수정' END ELSE -- 삭제되었다면, BEGIN SET @modType = '삭제' END -- delete 테이블의 내용(변경전의 내용)을 백업테이블에 삽입 INSERT INTO backup_userTbl SELECT userID, name, birthYear, addr, mobile1, mobile2,-- 데이터 height..
-
DB 트리거 (TRIGGER ) DML트리거와 DDL트리거 DCL트리거Database/MS-SQL 2008. 10. 20. 10:04
관계형 데이터 베이스를 한다면 트리거를 사용할줄 알아야한다 DDL(Data Definition Language) 은 데이터베이스의 스키마 객체를 생성(CREATE), 변경(ALTER), 제거(DROP) 하거나 권한의 부여나 박탈(GRANT, REVOKE), 주석(COMMENT), 자료의 버림(TRUNCATE) 등을 수행하는 문장의 집단을 의미한다. 각 문장은 CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE, COMMENT 등으로 시작한다. 이 밖에도 많은 종류의 DDL이 존재한다. 그러나 PL/SQL 블록에서는 DDL을 사용할 수 없다. DML(Data Manipulation Language)은 스키마 객체의 데이터를 입력(INSERT), 수정(UPDATE), [Manip..
-
DB CASE문 LEFT RIGHT SUBSTRING함수Database/MS-SQL 2008. 10. 17. 11:53
C#의 스위치문과 같은형식 CASE문은 데이터가 세로로가 아니라 가로로 나온다 SELECT sale_ymd, --케이스 시작 CASE WHEN SUBSTRING (sale_ymd, 5,2) = '01' THEN -- SUBSTRING 값이 01 이면 1월달해라 '1월달'-- CASE WHEN [] = THEN [] WHEN SUBSTRING (sale_ymd, 5,2) = '02' THEN '2월달' WHEN SUBSTRING (sale_ymd, 5,2) = '03' THEN '3월달' ELSE '몰라' END --케이스 끝 FROM sale WHERE sale_ymd LIKE '2008%' SELECT CASE WHEN SUBSTRING (sale_ymd, 5,2) = '01' THEN sale_qty..
-
DB 커서Database/MS-SQL 2008. 10. 17. 10:37
개요 행의 집합을 다루는 데 제공해주는 편리한 기능 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 문과 함수사용Database/MS-SQL 2008. 10. 17. 09:54
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 사용자정의 함수기본 사용자정의함수 예제Database/MS-SQL 2008. 10. 16. 11:47
오라클도 보자 저장프로시저와 조금비슷해 보이지만 일반적인 프로그래밍언어에서 사용되는 함수와 같이 복잡한 프로그래밍이 가능 함수는 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(하나)Database/MS-SQL 2008. 10. 16. 11:21
모듈화~! 실무에서는 어렇게 많이 쓴다 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 디폴트 '..
-
저장 프로시저 수정문 삭제문 셀렉트문Database/MS-SQL 2008. 10. 16. 10:34
프로시저 관련 파일 프로시저.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 문Database/MS-SQL 2008. 10. 15. 11:15
프로시저 수정후~!!!!!!! 만들어져서 저장되는시간이걸린다 그래서 수정후 바로 적용안되는 경우가 있다 만들고나서 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 ..
-
저장프로시저 예제Database/MS-SQL 2008. 10. 14. 12:40
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) -- 변수 ..
-
-
저장프로시저와 사용자 지정함수 사용예Database/MS-SQL 2008. 10. 14. 11:13
C#에서 비교 프로시저(Procedure) : 리턴값없으면 ---- 저장프로시저와는 다른말 public void test() { } function : 리런값있으면 평션 public void test() { return; } 개념 저장 프로시저(Stored Procedure)란 SQL Server에서 제공되는 프로그래밍 기능 저장 프로시저는 한마디로 쿼리문의 집합으로 어떠한 동작을 일괄 처리하기 위한 용도로 사용 구문 형식 CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ [ OUT [ PU..
-
데이터 베이스 LOCK(잠금) DEAD LOCK(교착상태)Database/MS-SQL 2008. 10. 14. 10:50
개념 한 사용자가 데이터를 사용하고 있을 경우에, 다른 사용자가 그 데이터를 변경하지 못하도록 하는 것 데이터베이스의 일관성을 위해서 필요함 트랜잭션 격리 수준 (Transaction Isolation Level)의 종류 READ UNCOMMITTED (커밋되지 않은 읽기) READ COMMITTED (커밋된 읽기) SQL Server 2005의 디폴트 값 REPEATABLE READ (반복된 읽기) SNAPSHOT (스냅숏) SERIALIZABLE (직렬화 가능) 여러사용자가 동시에 하나의 데이터에 접근해서 발생하는 문제 Dirty Read (더티 리드, 커밋되지 않은 데이터를 읽기) Unrepeatable Read (반복되지 않은 읽기) Phantom Read (팬텀, 가상읽기) 교착상태(Dead..
-
-
데이터베이스 트렌젝션 TRAN 예제Database/MS-SQL 2008. 10. 14. 10:39
--/////////////////// 트랜젝션 연습 /////////////////////// CREATE TABLE #tranTest-- # 이나 ## 이면 임시 테이블을 말함 ( id INT NOT NULL, msg NVARCHAR(2) NOT NULL ) USE tempdb--임시페이블사용 --EXEC sp_help #tranTest --ALTER TABLE #tranTest --DROP CONSTRAINT PK__#tranTest_________29221CFB DECLARE @i INT --- 데이터 삽입절 SET @i = 1--- 데이터 삽입절 WHILE @i < 120--- 데이터 삽입절 BEGIN--- 데이터 삽입절 INSERT INTO #tranTest (id, msg)--- 데이터 삽입..
-
오픈과제 02.doc 33번~Database/MS-SQL 2008. 10. 13. 11:49
use study_exam2 SELECT * ---- 33번 FROM Student, MAJOR -- student=부모, major= 자식 WHERE student.MajorCode = 1 AND major.majorCode =1 SELECT * FROM --33번 Student AS s, Major AS m WHERE s.MajorCode = m.MajorCode AND -- 네츄럴 조인 m.MajorName='컴퓨터공학과' SELECT * FROM --33번 Student AS s INNER JOIN Major AS m ON s.MajorCode = m.MajorCode AND -- 이너조인 m.MajorName='컴퓨터공학과' SELECT * ----- 34번 FROM student, major ..
-
셀렉트문 팁 SELECT 28번 문제설명 + 서브 쿼리 중요Database/MS-SQL 2008. 10. 13. 11:45
SELECT * FROM 테이블명 WHERE--1 GROUP BY--2 HAVING--3 ORDER BY--4 많이쓴다 USE Study_Exam GO IF (OBJECT_ID('STUDENT') IS NOT NULL) DROP TABLE STUDENT CREATE TABLE STUDENT ( sno NCHAR(3) PRIMARY KEY, --학번 gwaCode NCHAR(2) NOT NULL DEFAULT '', --학과코드 sname NVARNCHAR(20) NOT NULL DEFAULT '', --이름 gender NCHAR(1) NOT NULL DEFAULT 'M', --성별구분 : M은 남성, F는 여성 score TINYINT NOT NULL DEFAULT 0 --점수 ) --테이블에 임의의 ..
-
TABLE에서 행을 삭제하는 세 가지 OPTION의 비교 DELETE TRUNCATE DROP 과 CREATEDatabase/MS-SQL 2008. 10. 10. 09:55
http://ibumi.net/zbxe/2831 [출처] http://tong.nate.com/angelearth/27904298 TABLE에서 행을 삭제하는 세 가지 OPTION의 비교 TABLE에서 모든 행을 삭제하는 방법에는 다음과 같은 세 가지 OPTION이 있다. 1. DELETE 명령어 사용 DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다. 예를 들어 EMP TABLE에서 모든 행을 삭제하는 명령문은 다음과 같다. SQL>DELETE FROM emp; ◈ DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다 많은 SYSTEM 자원이 소모된다. 예를 들어 CPU 시간,REDO LOG 영역, TABLE이나 INDEX에 대한 ROLLBACK S..
-
DB JOIN 서브쿼리 유니온 조인 레프트조인 라이트조인Database/MS-SQL 2008. 10. 8. 12:21
쭝요하고 잘하면 좋단다 ㅋ 관계형 데이터베이스에서 조인모르면 바보 ㅋ 조인 : 두개 이상의 테이블들을 합성한 후 , 여기서 유용한 정보를 추출하는 연산 조인의 종류 : 크로스 조인, 자연 조인, 내부조인, 욉조인, 자체 조인 정규화 과정을 통해 분할된 테이블들로 부터 통합적인 정보를 얻기위해서 조언은 불가피하다 ! 프라이머리키 포린키가지고 조합해서 검색하는것 조인하는방법 조인의 종류 크로스 조인 : 투테이블을 서로 고하는 개념의 연산으로 일명 카티션 곱, 실제 많이 안쓰임 자연 조인 : 네츄럴 조인 조인 테이블에 같은 이름의 열이 둘이상 나타나지 않도록 하는 조인 •구문: •① SELECT column [, ...n ] FROM table1 { CROSS JOIN table2 } [, ...n ] •② ..
-
DB 인덱스 (데량의 데이터에서는 인덱스가 있어야만 데이터를 빠른 시간에 검색될수 있음)Database/MS-SQL 2008. 10. 8. 10:50
데량의 데이터에서는 인덱스가 있어야만 데이터를 빠른 시간에 검색될수 있음 장점 : 검색의 속도가 빨리질수있다 시스템의 부하가 줄어들어서 결국 시스템의 전체의 성능이 향상된다 단점 : 인덱스를 생성하는 데 시간이 많이 소요될수있다 인덱스가 데이터베이스 공간을 차지해서 추가적인 공간이 필요해진다 (대략 데이터베이스의 10% 내외의 공간이 추가로 필요하다) 데이터의 변경작업(INSET UPDATE DETET)이 자주일어날경우 성능이 많이 나빠질수있다 인덱스의 종류 클러스터형 인텍스 -> 영어사전과 비슷한 개념 비클러스터형 인텍스 -> 일반책의 찾아보기와 비슷한 개념 특징 : 클러스터 형 인덱스는 테이블당 1개만 생성 비클러스터형 인덱스는 테이블당 여러개 생성 클러스스터형 인덱스는 행 데이터를 인덱스로 지정한 ..
-
테이블 뷰Database/MS-SQL 2008. 10. 7. 12:03
•뷰의 개념 ▫SELECT문으로 구성된 데이터베이스 개체. ▫가상의 테이블 (생성한 후에는 테이블과 동일하게 취급) ▫뷰 생성과 사용 예제 CREATE VIEW v_userTbl AS SELECT userid, name, addr FROM userTbl GO SELECT * FROM v_userTbl -- 뷰를 테이블이라고 생각해도 무방 •뷰의 작동 방식 •뷰의 장점 ▫보안에 도움이 된다. ▫복잡한 쿼리를 단순화 시킬 수 있다. ▫속도면에서도 SELECT 보다 괜찮다 •뷰의 종류 ▫표준 뷰 : 한 개 또는 그 이상의 테이블을 이용해서 만든 뷰 ▫분할 뷰 : 한대 또는 여러대의 서버에 있는 여러 테이블을 조인해서 하나의 테이블처럼 보이도록 하는 뷰 ▫인덱싱된 뷰 : 인덱스를 구성하기 위한 실제 데이터를 가..