Database
-
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 보다 괜찮다 •뷰의 종류 ▫표준 뷰 : 한 개 또는 그 이상의 테이블을 이용해서 만든 뷰 ▫분할 뷰 : 한대 또는 여러대의 서버에 있는 여러 테이블을 조인해서 하나의 테이블처럼 보이도록 하는 뷰 ▫인덱싱된 뷰 : 인덱스를 구성하기 위한 실제 데이터를 가..
-
임시테이블 테이블삭제수정Database/MS-SQL 2008. 10. 7. 11:50
임시로 잠깐 동안 사용되는 테이블 테이블이름앞에 # 또는 ## 을 붙이면 임시테이블로 생성 임시테이블은 tempdb 에 생성될뿐 , 나머지 사용법등은 일반 테이블과 동일하게 사용 #을 앞에 붙인 테이블은 로컬 임시 테이블 ##을 앞에 붙인 테이블은 전역임시테이블 테이블삭제및 수정 •테이블의 삭제 ▫구문 형식 DROP TABLE 테이블이름 •테이블 수정 ▫열의 추가 ALTER TABLE 테이블이름 ADD 열이름 데이터형식 ▫열의 삭제 ALTER TABLE 테이블이름 DROP COLUMN 열이름 ▫열의 데이터 형식 변경 ALTER TABLE 테이블이름 ALTER COLUMN 열이름 새로운_데이터형식 ▫열의 데이터 형식 변경 ALTER TABLE 테이블이름 ALTER COLUMN 열이름 새로운_데이터..
-
T-SQL 에서 테이블 생성Database/MS-SQL 2008. 10. 7. 10:55
테이블 생성 구문 •테이블 생성 구문 형식 CREATE TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name ( { | } [ ] [ ,...n ] ) [ ON { partition_scheme_name ( partition_column_name ) | filegroup | "default" } ] [ { TEXTIMAGE_ON { filegroup | "default" } ] [ ; ] 제약 조건 (기본키제약조건) 데이터의 무결성을 지키기 위한 제한된 조건 즉 특정데이터를 입력할 때 무조건 입력되는것이 아니라 어떠한 조건을 만 쪽했을때에만 입력되도록 제한하는것 * 기본키 제약 조건 테이블의 각 행들을 구분할 수있는 식별자 중복될 ..
-
-
데이터베이스 물리적 모델링Database/MS-SQL 2008. 10. 6. 12:41
물리적 모델링 ● 특정 DBMS에 의존하는 데이터 형식, 각종 제약 조건, 뷰, 인덱스 등을 설정하는 작업 ● 물리적 모델링의 수행 절차 ① 이름 영문화: 논리적 모델에서는 대부분 한글 이름을 부여하는데, 물리적 모델에서는 이것을 영문 이름으로 바꾸어야 함 ② 데이터 형 지정 ③ NULL, NOT NULL 및 IDENTITY 지정 ④ 제약 기본 값과 개체 기본 값 정의 ⑤ 체크와 규칙 정의 ⑥ 도메인 정의 및 적용 ⑦ 인덱스 설정 ⑧ 테이블별 코멘트 작성 ⑨ 뷰 정의 객체 지향 데이터 모델링 ● UML(UML 데이터 모델링 프로필) ● ORM(개체 역할 모델링, Object Role Modeling)
-
데이터베이스 모델링 - 정규화Database/MS-SQL 2008. 10. 6. 12:16
정규화 - 데이터 중복을 막고 무결성을 강화하기위해 하나의 실체를 둘이상의 셀체로 분리하는 작업 정규형 : 정규화된 모델 제 1 정규형(노말 폼) 제 2 정규형 제 3 정규형 Boyce-codd 정규형 제 4 정규형 제 5 정규형 실무에서는 제 3정규형에서까지만해도 충분하다 정규화 - 함수적 종속성 속성들 사이(실체들 사잉가 아님) 종속관계를 나타내는 것 ex) 주문 번호- > 고객ID 주문 번호 -> 영업사원 ID 고객 ID -> 영업 사원 ID --------------------------- 서로 종속관계있는것들을 종속되는 쪽으로 향하는것예 유의~! 정규화 - 제 1정규형 실체내에서 반복되는 속성이나 속성그룹이 없는 형태 자 그림으로 볼까요??? 제 2정규형 제2 정규형부터 종속성이라는 말이나온다 ..
-
데이터 모델링Database/MS-SQL 2008. 10. 6. 09:31
논리적 모델링과 물리적 모델링 실체-관계도(ERD, Entity-Relationship Diagram) 방법론 실체 (Entity) 속성 (Attribute) 주식별자 하나이상의 속성집합임 인스턴스(instance) 인스턴스 = 테이블에서 row 를 말함 가로줄이지 주식별자(프라이머리 키) -> 프라이머리키를 논리적으로 이야기할때는 주식별자라고부른다 둘이상이 조함되어있으면 복합 주식별자`!! 필자ID 필자 이름 전화 수고 1 빈칸으로구분 홍길동 2 을지매 주식별자와 일반속성 구분은 테이블사잉에 2줄로 구분~!!! 주식별자와 인스턴스들을 완벽하게 식별할수있음 관계(Relationship) 실체들간에 의미가있는 연결 관계에는 이름이 붙어있음 !!! 관켸형 데이터베이스에서 가장중요한 요소 관계를 파악하는 간단..
-