Note/DB 30

oracle - Rownum

이름이 Table_nm 인 테이블을 조회한다고 하자. DB에 데이터가 많으면 select * from Table_nm 했을 경우 너무오래 걸려서 시스템에 부하가 갈수도 있고 lock을 초래 할 수도 있다. 데이터확인을 위한 단순 select 를 할때는 rownum 을 사용하는 습관을 들이도록 하자. rownum 은 쿼리가 실행될 때 결과 레코드에 번호를 나타내어 주는 필드이다. 사용방법 select * from Table_nm where rownum > 10 and rownum

Note/DB 2011.09.20

mysql 기본 - Limit

이름이 Table_nm 인 테이블을 조회한다고 하자. DB에 데이터가 많으면 select * from Table_nm 했을 경우 너무오래 걸려서 시스템에 부하가 갈수도 있고 lock을 초래 할 수도 있다. 데이터확인을 위한 단순 select 를 할때는 Limit 를 사용하는 습관을 들이도록 하자. 사용방법 select * from Table_nm limit 100 ; select * from Table_nm 했을때의 결과 중 상단 100개만 보여지게 된다. select * from Table_nm limit 50, 100 ; select * from Table_nm 했을때의 결과 중 50번째 부터 100번째 데이터만 보여지게 된다. * limit 는 oreder by 절 뒤에 그러니까, 쿼리의 맨~~뒤..

Note/DB 2011.09.20

mssql 기본 - TOP

이름이 Table_nm 인 테이블을 조회한다고 하자. DB에 데이터가 많으면 select * from Table_nm 했을 경우 너무오래 걸려서 시스템에 부하가 갈수도 있고 lock을 초래 할 수도 있다. 데이터확인을 위한 단순 select 를 할때는 Top을 사용하는 습관을 들이도록 하자. 사용방법 select TOP 100 * from Table_nm ; select * from Table_nm 했을때의 결과 중 상단 100개만 보여지게 된다. * distinct 구문을 사용할 경우 Top 은 distinct 다음에 와야 하며 그 외에는 select 바로 다음에 와야 한다. 예 ) select distinct Top 100 * from Table_nm ;

Note/DB 2011.09.20

MSSQL 숫자관련함수

ABS ABS함수는 절대값을 나타낸다. 형식: ABS(숫자값) POWER POWER함수는 제곱근을 표현해 준다. 형식: POWER(숫자값, 승수값) SQRT SQRT는 루트값을 표현해준다. 형식: SQRT(숫자값) RAND RAND는 0 에서 1사이의 난수를 발생시킨다. 형식: RAND(초기값) ROUND ROUND는 반올림 함수이다. 형식: ROUND(숫자, 자릿수) CEILING, FLOOR CEILING은 소수점 첫번째 값을 기준으로 올림을 하고 FLOOR는 소수점 첫번째 값을 기준으로 내림을 한다. 형식: CEILING(숫자) ... FLOOR도 동일 CEILING과 FLOOR는 소수 첫번째값이 5 이상이든 이하든간에 무조건 올림, 내림을 수행한다.

Note/DB 2011.09.20

MSSQL 활성중인 트랜잭션, LOCK 조회 쿼리

/* 활성중인 트랜잭션 조회 */ DBCC OPENTRAN /* Lock TimeOut / default : -1(무제한) */ SELECT @@LOCK_TIMEOUT -- 이걸.. Lock이 걸려도 1800밀리초가 지나면 세션이 끊기도록 설정한다. SET LOCK_TIMEOUT 1800 -- (밀리초 이므로 3분) /* Lock 확인과 Lock 죽이기 (sa권한) */ EXEC sp_lock -- 프로시저 실행하여 mode가 x인 것 확인 dbcc inputbuffer(spid) -- mode가 x인 것의 spid를 입력하면 해당 테이블정보가 출력 kill spid -- 문제가 되는 spid를 kill 한다.

Note/DB 2011.07.26

MSSQL Server Version 확인쿼리

-- 서비스팩 확인 select SERVERPROPERTY('productlevel') -- 사용중인 SQL 빌드넘버와 서비스팩 확인 SELECT 'SQL Server ' + CAST(SERVERPROPERTY('productversion') AS VARCHAR) + ' - ' + CAST(SERVERPROPERTY('productlevel') AS VARCHAR) + ' (' + CAST(SERVERPROPERTY('edition') AS VARCHAR) + ')' -- 사용중인 SQL종류와 빌드넘버 select @@version -- 아래의 두개는 똑같은 결과를 보여준다. EXEC sp_server_info EXEC master..xp_msver 위의 쿼리문중 마음에 드는거 실행하면 된다. (모두 결..

Note/DB 2011.07.26

Oracle Index

인덱스란? 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 테이블 내의 원하는 레코드를 빠르게 차아갈 수 있도록 만들어진 데이터 구조 찾으려는 데이터를 찾아보기 쉽게 한다는 의미에서 보통 인덱스를 설명할 때는 책 뒷장의 '색인'에 비유를 많이 한다. 테이블의 값을 빠르게 액세스 하도록 하는 데이터 베이스 객체로써 SQL 구문 실행에 있어 성능(속도)향상을 기대할 수 있다. 그러나 잘못된 인덱스는 오히려 성능저하의 원인이 되므로 인덱스를 생성할 때는 신중히 하도록 하자. 자동 인덱스 : Primary Key 또는 Unique 제한 규칙에 의해 자동적으로 생성되는 인덱스 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스 Index 를 생성하는 것이 좋은 컬럼 1.where 절이나 jo..

Note/DB 2011.07.20

Database기초 : DDL, DML, DCL 초심으로 돌아가자!

분명히 아는건데........아는건데....... 설명하기 힘든 그런거??? 초심을 잊지말자! 기초부터 다시! DDL, DML, DCL 1. DDL(Data Definition Language) 데이터와 그 구조를 정의합니다. 1) CREATE : 데이터베이스 객체를 생성합니다. 2) DROP : 대이터베이스 객체를 삭제합니다. 3) ALTER : 기존에 존재하는 데이터베이스 객체를 다시 정의하는 역할을 합니다. 4) RENAME : 데이터베이스의 컬럼명을 변경합니다. 5) TRUNCATE : 테이블을 최초 생성된 초기상태로 만들며, ROLLBACK이 불가능합니다. 2. DML(Data Manipulation Language) 데이터의 검색, 수정, 삭제 등을 처리합니다. 1) INSERT : 데이터베이..

Note/DB 2011.07.11

DELETE 와 비슷하지만 다른 TRUNCATE

구문 : TRUNCATE TABLE Table_name; 해당테이블의 데이터를 모두 삭제한다. delete from Table_name ; 과 같은 기능이지만 자동증가 컬럼의 경우 그 값이 초기화 된다. create 했던 직후로 돌아간다는 의미이다. 아래는 ms 공식홈에서 가져옴. 개별 행 삭제를 로깅하지 않고 모든 행을 테이블에서 제거합니다. TRUNCATE TABLE은 기능상으로 WHERE 절이 없는 DELETE 문과 동일하지만 더 빠르고 시스템 및 트랜잭션 로그 리소스를 덜 사용합니다. DELETE 문과 비교하여 TRUNCATE TABLE에는 다음과 같은 이점이 있습니다. 트랜잭션 로그 공간을 덜 사용합니다. DELETE 문은 행을 한번에 하나씩 제거하고 삭제된 각 행에 대해 트랜잭션 로그에 항목을..

Note/DB 2011.07.11

mssql2005 DB상태변경

USE master go -- 응급상태로 전환 (ONLINE | OFFLINE | EMERGENCY) ALTER DATABASE db_name SET EMERGENCY GO -- 데이터베이스의 특성을 살펴봅니다. SELECT DATABASEPROPERTYEX( 'db_name','Status') SELECT name, state, state_desc FROM sys.databases -- 응급상태로 전환하게 되면 읽기전용으로 엑세스가 가능하게됨. dbcc checkdb('db_name') go SELECT * FROM sysdatabases use db_name select * from table_name -- 작업 후 다시 온라인상태로 전환 ALTER DATABASE db_name SET ONLINE GO

Note/DB 2011.07.11