블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Technical Article/펌 2003. 6. 17. 10:13

Order By 를 써보자~

orber by는 검색결과를 올림차순(DESC), 내림차순(ASC)으로 소팅해주는 역할을 한다.

자주 쓰는것이므로 넘긴다 ㅡㅡ;


2개의 필드에 대해 소팅하려면...
SELECT city, au_fname, au_lname FROM authors ORDER BY city ASC, au_fname DESC

(!) 텍스트나 이미지 필드에 대해서는 사용 불가!
,
Technical Article/펌 2003. 6. 16. 22:38

ROAM이란?

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력해주세요.

Technical Article/펌 2003. 6. 16. 20:17

[펌] 수학,그래픽스관련 용어 몇가지 정리

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력해주세요.

Technical Article/펌 2003. 6. 16. 17:34

[팁] 결과 레코드셋에서 중복제거

키워드는 바로 distinct.
  
SELECT au_id FROM titleauthor



SELECT DISTINCT au_id FROM titleauthor

와 같이 변경!!!

초간단하다...

더이상 무슨 설명이 필요할꼬...으흐흐
,
Technical Article/펌 2003. 6. 16. 17:32

where절을 사용해보자!

뭐 검색시 where은 많이 사용해봤을 것이라 생각하여

(내마음대로 ㅡㅡ;;) 그냥 넘어간다...


이러면 열받겠지 ^^v


중요한거 몇개만 집고 넘어간다.

[기본 문법]

WHERE 절에 탐색 조건을 근거하여 어떤 행을 검색할 지를 지정한다.

  SELECT select_list
  FROM table_list
  WHERE search_conditions

주의사항
  - WHERE 절에는 가능하면 NOT은 사용하지 않는 것이 좋다.
  - NOT을 사용하면 색인의 도움을 받을 수 없다.
  - 연산자 앞에는 가능하면 컬럼 이름이 오도록 한다.


탐색 조건에 포함할 수 있는 것들
  - 비교 연산자                 =.  >,  <,  >=,  <=,  <>,  !=,  !,  !>
  - 범위                        BETWEEN, NOT BETWEEN
  - 리스트              IN, NOT IN
  - 일치하는 문자열     LIKE,  NOT LIKE
  - 알 수 없는 값               IS NULL, IS NOT NULL
  - 결합                        AND,  OR
  - 부정                        NOT

 

(!) NULL은 빈문자열이 아니라 값이 지정되지 않았다는 의미!

(!) between연산자는 ~이상 ~초과

(!) 스트링 비교는 = 보다 like를 사용하길 권장!


LIKE 키워드
        SELECT select_list
        FROM table_list
        WHERE expression [NOT] LIKE “string”

- 정규 표현식(regular expression)형식의 와일드카드 사용

와일드 카드(Wildcard)
  % : 임의의 0개 이상의 문자열
  _  :  임의의 한 글자
  [ ] :  지정된 범위 또는 집합 안의 한 문자
  [^] :  지정된 범위 또는 집합에 없는 한 문자


예!
다음으로 첫자는 B로 시작하며 다음에 a자가 없고 아울러 뒷글자가 뭐라도 상관없는

문자열을 검색할 경우는?
SELECT stor_name FROM stores WHERE stor_name LIKE 'B[^a]%'



뭐 이정도면 충분할듯 하다!


여기서 안써본게 와일드 카드쪽이다.

폰번호로 검색할때 016* 로 했더니 안나오더니만 ㅡㅡ;
016%로 했어야 했군...으하하하...

이래서 공부를 해야된다니까~~~
,
Technical Article/펌 2003. 6. 16. 16:59

서버제공 함수

datetime형의 필드를 저장하려고 하드코딩으로 날짜 시간 하나하나 인자로 넘겨서 date에 저장하려면 오버헤드도 발생하고 짜증난다.(GETTIME()을 이용해서 간단히 해결할수 있다)

그래서 우리의 멋쨍이 MSSQL에서는 각종 함수를 미리 다 마련해두고 쓰세욤~ 하고 있다^^

배워 써보자!


기본적인것은 다음과 같다.


[Aggregate Functions]
레코드셋으로부터 어떠한 값을 집합적으로 뽑아내는 함수들이다
그냥 간단한 연산을 하는 놈들로 생각하면 쉽겠다~

쿼리 예제는 일반적으로 함수명(필드미여) FROM 테이블명 으로 구성된다!


AVG 함수
수치형으로 된 컬럼의 로우들에 대해 평균을 리턴 합니다.
SELECT AVG(advance) FROM titles

SUM 함수
수치형으로 된 컬럼의 로우들에 대해 수치데이터의 총합값을 계산합니다.
SELECT SUM(price), SUM(advance) FROM titles


COUNT 함수
컬럼의 로우 갯수를 리턴합니다.
이는 *로 잡으셔도 되며 컬럼 1개를 잡으셔도 같은 결과 입니다.
SELECT COUNT(*) FROM titles
SELECT COUNT(title) FROM titles

경험상으로는 COUNT함수가 제일 많이 사용되는거 같다.
총 사용자수를 뽑아올때나 폰번호가 이전에 저장되어있는지 볼때
SELECT count(*) from UserTable where Phone='0161234566' 해서
결과가 0이상이면 존재하는걸로 판단하기때문에...
이래저래 많이 쓰이드라~~

기타 MAX, MIN. 최대최소를 나타낸다.



[Date and Time Function]
날짜와 시간과 관련된 함수들이다.
별거 없다 ^^

GETDATE 함수
현재 날짜와 시간을 반환
SELECT GETDATE()

사용할때는 insert나 update시에 필드값으로 GETDATE()를 사용해서 서버에 넘김으로써~ 처리하는게 대부분이다.


DATEADD 함수
기존 날짜 데이터에 대해 날짜, 월, 년 등의 날짜 데이터를 더하는 함수.
SELECT DATEADD(day, 21, pubdate) AS timeframe FROM titles

DATEDIFF함수
날짜 데이터부터 지정일까지의 년,월,일 시간을 반환
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles


DATEPART함수
지정년도의 년, 월, 일 등의 특정 부분만을 반환
SELECT DATEPART(month, GETDATE()) AS 'Month Number'


GETDATE빼고는 별로 사용안하드라~~~ ㅋㅋ




[Mathematical Functions]
수학과 관련된 함수들 이다...으윽!!!
나와 무관하다 ( '')



[String Functions]
문자열과 관련된거...
얘들은 어플딴에서 처리해서 보내주는게 다반사기때문에 별로 사용은 안되지만 정리해두면 좋을듯해서 몇개만 적어본다.


LEFT
해당 컬럼의 문자열중 해당하는 문자열 까지만 문자열을 리턴
SELECT LEFT(title, 5) FROM titles

LEN
해당 컬럼의 문자열의 길이를 수치로 리턴
SELECT LEN(title) FROM titles

LOWER
해당 컬럼의 문자열(영문)을 모두 소문자로 변경
SELECT LOWER(title) AS 소문자 FROM titles

LTRIM
문자열 왼쪽의 공백을 제거함
  
--@konan_string 이라는 변수를 VARCHAR(100) 이라는
--100자의 문자열로 선언
DECLARE @konan_string varchar(100)
--@konan_string에 아래의 땀표부터 땀표까지 문자열 지정
SET @konan_string = ' 냐햐~ 코난이는 잘생겼다.'
--STRING에 LTRIM 적용으로 왼쪽의 빈 문자열 잘라냄
SELECT LTRIM(@konan_string)

변수를 생성하고 문자열을 변수에 대입후 처리하는 샘플  

LTRIM은 서버에서 처리해주는게 맞지 ㅡㅡ;; 넘어가고~


REPLACE
문자열중 일정 문자열 또는 문자를 다른 문자열로 변환
SELECT REPLACE('코난이는 잘 생겼다','잘','못')

SUBSTRING
문자열중 원하는 위치부터 원하는 길이만큼 문자열을 가져옴
SELECT au_fname, SUBSTRING(au_fname, 3, 2) as 세번째위치부터두글자 FROM authors


뭐 대충 스트링 클래스는 이정도면 되겠다..으흐흐흐



어플에서 처리해주든 DB에서 해주든...뭐...

자기 편한데로 하면 되지 ^^

나는 왠만한건 어플에서 쇼부보는걸 즐기는 편이다..흐흐

(역시 허접...ㅋㅋ)
,
Technical Article/펌 2003. 6. 16. 16:54

데이터형 뽀개기!

자주 쓰는것만 정리한다.

[정수형]

int
-2^31 (-2,147,483,648) 부터  2^31 - 1 (2,147,483,647)까지의 정수. 20억이라는 말!

smallint
2^15 (-32,768) 부터  2^15 - 1 (32,767)까지의 정수. 16비트 정수형.

tinyint
0 부터 255 까지. 바이트에 해당

나는 주로 int를 사용해왔다... 그냥 ㅡㅡ;



[실수형]

float
부동(정확하지 않은) 소수 데이터 형으로  -1.79E + 308 부터  1.79E + 308 까지의 데이터. 폰에서 실수형이 지원되지 않으므로 거의 사용하지 않는 타입.



[날짜형]

datetime
1월  1일, 1753년, 부터 12월 31일, 9999년, 까지의 데이터를 1000분의 일초 단위로 지정 가능 합니다.

smalldatetime
1월 1일, 1900년, through 6월 6일, 2079년, 까지 1분 단위 정확도로 지정 가능 합니다.

주로사용하는건 datetime. 왠지 small보다 좋아보임..ㅋㅋ
앞으로는 smalldatetime을 사용해야되겠다.


[문자형]

char
8,000바이트(문자)까지 지정 가능한 유니코드가 아닌 고정길이 데이터 형입니다.

varchar
8,000바이트 까지 지정 가능한 유니코드가 아닌 가변길이 데이터 형입니다.

text
2^31 - 1 (2,147,483,647) 유니코드가 아닌 가변길이 데이터형으로 2기가 까지 지정 가능 합니다.

예전에는 char형을 사용했는데 사용하지 않는 크기까지 잡아놓는다고 해서 varchar을 주로 사용한다.
,
Technical Article/펌 2003. 6. 16. 16:45

DB삶아먹어~ Boa요!를 들어가면서...

스노우팡 네떡 버젼 서버를 짜고있는데...

DB에 대한 이해가 너무 없는거 같다.

'단순히 쿼리만 쓰면서 무슨 서버를 짠다고 ㅡㅡ;;'

그래서~!

데이터관리를 좀 효율적으로 해보고자

DB예 대한 체계적인 공부를 하려고 한다...음하하

나도 DB 설계를...ㅋㅋ


[앞으로 2주일 안에 공부해야 될꺼 목록]
1. MsSQL 제공툴을 사용해서 초단기 최적화(급하니까 ㅡㅡ;;)
2. T-SQL에 대한 이해
3. 스토어프로시져를 익혀 서버에 적용
4. 쿼리 최적화

중간중간 이론에 대한부분도 포함될 예정이다.


공부하는 모든 내용은

DBMS는 MSSQL2K

API는 VC++ 6.0 (OLEDB & ATL)

기반이다.

또한 학습자료는 책이 없는관계로 ^^;;

http://sqler.pe.kr

를 통해 공부한다...
,
Technical Article/펌 2003. 6. 16. 16:42

컬럼 리스트를 보고 싶을때

SQL쿼리 분석기를 띄워

적당한 DB를 선택한다.


아래와 같은 방법이 있다.

1. sp_columns 테이블명 <F5>

2. select * from syscolumns where id = object_id('테이블명')

3. select * from INFORMATION_SCHEMA.COLUMNS where table_name = '테이블명'

select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = '테이블명'


하면 주루룩~ 테이블 구성이 나온다.
,
Technical Article/펌 2003. 6. 16. 16:41

DB 카테고리 신설~ 뚜둥

DB에 대한 스킬이 너무 부족하다!

열라 공부해보자...으하하하


모두모두 공부합세~~ 으흐흐
,
TOTAL TODAY