목록PROGRAMMING (318)
MY MEMO
(실무에서는 거의 사용하지 않음)Trigger : 방아쇠라는 뜻으로 테이블에 무슨 일이 일어나면 자동으로 실행 -> 삽입 수정 삭제 등을 실행ex) 테이블에 행을 고의 또는 실수로 삭제한다면 테이블에 행이 삭제되는 순간에 행의 내용/시간/삭제/사용자를 기록 1) AFTER TRIGGER: INSERT, UPDATE, DELETE 등의 작업이 일어났을 때 작동하는 트리거 +) deleted 라는 table이 system에 존재 -> 삭제되는 모든 내용이 있음 & inserted : insert 했을 모든 데이터가 입력되어있음INSERT가 실행 : inserted 테이블에 삽입UPDATE가 실행 : 원래의 데이터 -> inserted / 삭제된 데이터 -> deleted CREATE TRIGGER trg_i..
커서 : 행의 집합을 처리성능에 별로 좋지 않은 영향 처리 순서커서 선언 -> 커서 열기 -> 커서 데이터 가져오기 -> 데이터 처리 -> 커서 닫기 -> 커서 해제 DECLARE userTbl_cursor CURSOR GLOBAL/LOCAL(default) + STATICFOR SELECT height FROM userTbl; OPEN usrTbl_cursor;: 내부적으로 위의 쿼리문을 실행해서 cursor에 데이터를 담아 놓음 DECLARE @id NVARCHAR(10)DECLARE @sum BIGINTDECLARE @userGrade NCHAR(50) FETCH NEXT FROM userCur INTO @id, @sum -- 첫 행 값을 대입 WHILE(@@FECTCH_STATUS=0) -- 행이..
1. 저장 프로시저 : 쿼리문의 집합 -> 어떤 동작을 일괄 처리할때 사용 장점1) SQL Server의 성능을 향상 시킬 수 있다2) 유지 관리가 간편하다3) 모듈식 프로그래밍이 가능하다4) 보안을 강화할 수 있다ex) 사용자에게 테이블 권한을 주지 않고 프로시저에 대한 권한을 준다 5) 네트워크 전송량의 감소: 쿼리문이 네트워크를 통해서 전송되는데 쿼리가 많을 수록 많은 부하를 준다 과정구문 분석 -> 개체 이름 확인 -> 사용 권한 확인 -> 최적화 (대부분 indexing) -> 컴파일 및 실행계획 등록 => 메모리에 저장 -> 실행 같은 과정을 한번 더 실행하면메모리 확인 -> 실행 (단 한글자라도 다르다면 다르게 취급한다.) EXEC usp_ID 5000 WITH RECOMPILE;:저장 프로..
트랜젝션 : 하나의 논리적 작업 단위로 수행되는 일련의 작업 (전부 되거나 전부 안되거나)트랜젝션을 써야 하는 이유: 거래를 할때 구매자가 구매를 진행했는데 오류로 인하여 판매자는 돈이 입금되지 않은 경우 Database는 DB이름을 치지만 실제로는 파일 이름으로 존재한다 (*.mdf : 데이터 파일 / *.ldf : 트랜젝션 로그파일) 원래 데이터베이스는 논리적 데이터베이스 -> 물리적 데이터베이스 논리적 데이터베이스에서 쿼리를 날리면 일단 로그에 기록을 남기고 실제 데이터를 변경한다 트렌젝션을 생성하는 쿼리: BEGIN TRANSACTION (또는 BEGIN TRAN)SQL 문장COMMIT TRANSACTION (또는 COMMIT TRANS or COMMIT WORK) 실제로 쿼리를 실행하면 자동으로..
동영상을 보는게 더 좋음: https://www.youtube.com/watch?v=sSOsWoaTrNk&index=28&list=PLVsNizTWUw7Gw_ubikxbzecfveoxemsAs 데이터베이스는 성능이 아주 중요한 역할을 한다인덱스가 없어도 데이터를 조회하고 변경하는데 아무런 문제가 되지 않지만 - 장점1) SELECT를 빠르게 접근2) 해당 쿼리의 부하가 줄어서 시스템 전체의 성능이 향상 - 단점1) 데이터베이스 크기의 10% 정도의 추가 공간2) 인덱싱을 하는데 시간이 많이 소요3) Insert Update Delete가 자주 일어날때는 성능이 나빠질 수 있음 - 인덱스가 사용되기 좋은 조건1) 인덱스는 열 단위에서 생성2) WHERE 절에서 사용되는 열에 인덱스 생성3) WHERE 절에..
- Primary key 지정시 이름 지정 가능userID char(8) NOT NULL CONSTRAINT PK_userTbl_userID PRIMARY KEY혹은 맨 뒤에CONSTRAINT PK_userTbl_userID PRIMARY KEY (userID) ALTER TABLE userTblADD CONSTRAINT PK_userTbl_userID PRIMARY KEY(userID);: Primary Key로 변경 - Foreign KeyuserID char(8) NOT NULLCONSTRAINT FK_userTbl_buyTblFOREIGN KEY PREFERENCES userTbl(userID) ON DELETE CASCADE;ON UPDATE CASCADE; UNIQUE: 중복되지 않은 유일한 ..
RESTORE DATABASE db FROM DISK = '폴더 주소' WITH REPLACE:: data복원 CAST(amount AS FLOAT)CONVERT (FLOAT, amount): 데이터 타입 변환 PARSE('2017년 09월 09일' AS DATE);: 만약 정상적으로 실행이 되지 않는다면 오류 발생TRY_PARSE('123.45' AS INT);: 정상적으로 실행되지 않는다면 NULL값 RETURN UPDATE table SETcol1 = STUFF((SELECT col1 FROM table),999991,10,REPLICATE('c',10)),col2 = STUFF((SELECT col2 FROM table),999991,10, REPLICATE('다',10)); UPDATE tabl..
동영상 : https://www.youtube.com/watch?v=2PDieWqQtFY&list=PLVsNizTWUw7Gw_ubikxbzecfveoxemsAs&index=16 USE Database_이름;: 데이터 베이스 사용 USE tempdb;GOCREATE DATABASE sqlDB;GO: 데이터베이스 생성 전 tempdb로 일단 옮겨놔야한다 EXECUTE sp_helpdb;: 현재 instance에 있는 데이터베이스와 목록을 보여줌 EXECUTE sp_tables @table_type = " 'TABLE' ";: 현재 Database에 있는 테이블 확인 EXECUTE sp_columns @table_name='table name', @table_owner = 'owner';: table에 있는 ..
1. Visual Studio 새 프로젝트 -> Vlsual Basic -> 웹 -> ASP.NET Web Forms 사이트 2. Default.aspx 에서 소스를 모두 지운 후 -> 아래 탭의 디자인 클릭사이트 바에 도구상자 -> 데이터 -> SqlDataSource 3. Sql DataSource -> 데이터 소스 구성 -> 새연결 -> Microsoft SQL Server 4.이후 연결 추가를 눌러 현재 local에서 작업하고 있기 때문에 서버 이름은 localhost데이터 베이스 선택은 원하는 데이터 베이스 선택 5. 데이터 베이스의 테이블과 데이터 선택 가능! 6. 이후 다음 다음 버튼을 누르다가 쿼리 테스트 진행 가능 -> 현재 쿼리가 어떻게 동작하는지 Test 7. 도구 상자에서 ListV..
1) index USE ShopDB; SELECT productName, cost, makeDate INTO indexTBLFROM ProductTBL;GO=> ProductTBL의 데이터를 indexTBL로 옮긴다indexTBL은 자동으로 생성된다 (이미 생성되어 있다면 중복으로 에러가 난다) SELECT * FROM indexTBL; => 현재는 index가 없는 상태! 즉 색인 목차가 없는 상태! +) '실행 계획' 창을 보는 것이 필요! 1. 인덱스가 없을 때의 실행계획 2. 인덱스를 생성했을 때 CREATE INDEX idx_indexTBL ON indexTBL(productName); 2) Viewex) 아르바이트생에게 일정 데이터를 보여줘야 할때 크리티컬한 데이터가 포함된 테이블에 권한을 주..