Clean Code that Works.

SELECT [가져올 컬럼] FROM [해당 테이블] LIMIT [value], [value];
value 는 시작 숫자와 와 가져올 숫자

예들 들어
SELECT * FROM bbs LIMIT 10, 10;

이렇게 하게 되면
결과중에서 10번째 부터 10개 가져온다.
다음 페이징을 할 경우 LIMIT 20, 10 이렇게 하면 20번째 부터 가지고 오게된다.

이것을 응용해서 티 스토리 페이징 처럼 구현 할것~!

Returning TOP N Records

DataBase2008. 10. 17. 13:49

http://www.petefreitag.com/item/59.cfm
위의 블로그에서 퍼온 글.
최근 게시물 뽑아올 때 유용.

Returning only the first N records in a SQL query differs quite a bit between database platforms. Here's some samples:

Microsoft SQL Server

SELECT TOP 10 column FROM table

PostgreSQL and MySQL

SELECT column FROM table
LIMIT 10

Oracle

SELECT column FROM table
WHERE ROWNUM <= 10

Sybase

SET rowcount 10
SELECT column FROM table

Firebird

SELECT FIRST 10 column 
FROM table

Due to these differences if you want to keep your code database independent you should use the maxrows attribute in the cfquery tag in ColdFusion. The tradeoffs to database independance is performance, I would expect maxrows to be slower than specifying the rows in the SQL.

<cfquery datasource="#ds#" maxrows="10">
SELECT column FROM table
</cfquery>

PostgreSQL and MySQL have a cool feature that will let you return an arbitrary range of rows (eg return rows 10-20). This is very handy for displaying pages of records:

SELECT column FROM table
LIMIT 10 OFFSET 20

The above query will return rows 20-30

트리거

DataBase2008. 7. 24. 13:28
트리거(trigger)는 자기가 종속된 특정 테이블에서
데이터의 변화가 발생했을 때 자동으로 INSERT,UPDATE,DELETE문이
자동으로 실행되는 아주 특별한 종류의 스토어드 프로시저이다.
◈ 트리거는 자기가 종속된 특정 테이블에서 데이터의 변화가 발생했을때
자동으로 생행되는 아주 특별한 종류의 stored procedure이다.

원 래 트리거는 총에서 방아쇠를 의미한다. 하지만 RDBMS에서 트리거는 방아쇠를 당기면 총알이 나가듯이, 어떤 테이블의 데이터가 INSERT, UPDATE 또는 DELETE 문을 만나 변화가 생길때 자동으로 실행되게끔 정의해 놓은 Transact-SQL 문들의 집합이라고 볼수있다.

원본 글 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=101&eid=CFcsBqWRgEkc5pllLpdodkL8g1DqiWxk&qb=taXAzMXNuqPAzL26IMauuK6wxSDBpMDH

음.. 이건 약간 디비 관련..에 좀 깊은 =ㅂ =....
9월달쯤에 mysql책 한권 사서 봐야겠다. =ㅂ =..
이런건 DBA에게 시키라고!!

산소나무님 블로그에서 펌.

http://o2tree.tistory.com/16?srchid=BR1http%3A%2F%2Fo2tree.tistory.com%2F16


이스트소프트 필기시험에 나왔던 것.

이렇게 보고 나니.. 책에서 봤던거 같다 -_-..

젝일 답은 대충 찍어서 분산환경 어쩌구 써놨는데.. 아 창피해 -_ㅠ

클러스터 인덱스(Clustered Index)

테이블에 있는 데이터가 물리적으로 저장되어야 하는 순서를 나타내며, B-Tree구조를 가지고 있다(B-Tree 구조는 리프노드(Leaf Node)에 실제 데이터가 존재한다).

테이블에 PK를 생성할 경우 클러스터 인덱스가 없고 PK를 위한 인덱스가 넌클러스터 인덱스라고 명시적으로 하지 않으면 SQL Server가 알아서 PK에 클러스트 인덱스를 작성한다.

PK는 Null을 가질수 없으며, Unique는 하나의 Null값을 가질 수 있다.
보통 일치하는 값을 찾는데 PK가 사용되고 그 이외의 컬럼에 범위검색이 자주 사용된다면 PK에 넌클러스터 인덱스를 사용한다.



넌클러스터 인덱스(Non-Clustered Index)

B- 트리구조의 리프노드(Leaf Node)에는 인덱스 데이터와 행의 정확한 위치를 가리키는 정보 (row-locator)를 갖는데, 클러스터인덱스가 있는 경우에는 그 클러스터인덱스의 키값이 그렇지 않는 경우에는 RowID(파일ID, 페이지 번호, 페이지 내의 행번호)를 갖는다.



풀텍스트 인덱스 Full-Text Index

카탈로그와 같은 것으로 MS Search Service 의 일부분이며, 주로 웹 색엔진등에 사용이 되고 있다.
char, varchar 컬럼에만 생성 가능 / 테이블에 하나만 생성 가능 / B-트리  인덱스와 달리 자동으로 갱신되지 않는다 / 단어 또는 구(Phrases)검색 / 단일 단어 또는 단어의 그룹에 대한 검색 / 유사한 단어 검색 

http://theeye.pe.kr/archive/20071111 님 블로그 펌글.
아..스트럿츠2 + 아이바티스 개발중..아니 공부중 =ㅁ=

==============================================================================================

iBatis를 사용하다 보니 또하나의 문제에 봉착했다.. LIKE 검색의 %기호를 인식하지 못하는 것이었다.

구글신에게 검색해 보고 다음과 같은 해결책을 얻을 수 있었다.

MySQL :
SELECT * FROM tbl_name WHERE column_name LIKE "%$username$%"


ORACLE :
SELECT * FROM tbl_name WHERE column_name LIKE  '%' || #username# || '%'


SYBASE/SQL SERVER
SELECT * from tbl_name WHERE column_name LIKE  '%' + #username# + '%'


여기서 변수명을 #로 둘러싸는 것과 $로 둘러싸는것의 차이점을 알 필요가 있다.

#의 경우에는 Prepare Statement로 등록이 된다. 디버그를 찍어봐도 ?로 치환된 이후 값이 대입된다.

하지만 $의 경우 바로 값이 치환된다. 특정 변수가 바로 DB에 입력되므로 보안에 좀더 신경을 써야 할것으로 생각된다.

EXEC SP_RENAME '테이블명.[수정할컬럼명]', '수정될 이름', 'COLUMN'

실행 시켰을 시
"주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다."

2-2)컬럼 타입 변경

age 칼럼을 int에서 varchar(3)으로 변경

alter table abc alter column age varchar(3)

b) age칼럼을 varchar(3)에서 int not null로 변경

alter table abc alter column age int not null

2-3)칼럼, 제약 제거

alter table abc drop constraint df_addr

b) alter table abc drop constraint df_addr

b) addr칼럼 varchar(10)에서 nvarchar(10)으로 변경가능

alter talbe abc alter column addr nvarchar(10) not null

c)addr칼럼 제거

alter table abc drop column addr




 

계속 데이터가 쌓인 다는 가정 아래

가장 밑에 있는 데이터를 뽑아오는 방법.

SELECT TOP 1 * FROM 테이블명 ORDER BY 기준이되는컬럼명 DESC

기준이 되는 컬럼이 인덱스를 가지고 있으면(자동증가에 의해 유니크한 값, 데이터가 쌓여 감에 따라 인덱스도 1, 2, 3 이렇게 증가되는) 이걸 정렬해서 여기서 가장 위에 있는 값(인덱스가 가장 큰값)을 뽑아 오는 SQL 구문.