SlideShare una empresa de Scribd logo
1 de 26
SELECT(1)
&
R-DBMS
Microsoft SQLServer 2000 전문가로 가는 지름길 1편
3장 / 4장
Sql Study . florist.sk@gmail.com
SELECT(1)
&
R-DBMS
SELECT [내용] FROM [테이블]
WHERE [조건] ORDER BY [순서]
SELECT 쿼리문의 기본적인 형태.
보다 상세한 내용은 5장에서 다룬다.
SELECT [내용] FROM [테이블] WHERE [조건]
• 테이블에서 얻어오고 싶은 데이터가 있는 필드의 리스트를 기술.
• 테이블 전체를 얻어올 때는 select * from …
• 성능상의 이슈가 있고, 컴파일 최적화의 이슈도 있다.
• SELECT COUNT(*) FROM dbo.Users(NOLOCK) – 가입자수
• 불필요하게 모든 컬럼을 다 가져오는 비효율적인 쿼리
• 최신 버전의 MSSQL은 모든 컬럼을 다 가져오지 않는다.
• 추후 이 부분에 대한 추가적인 학습 필요.
SELECT [내용] FROM [테이블] WHERE [조건]
테이블의 필드명을 보고 싶을 땐 sp_help / sp_columns
SELECT [내용] FROM [테이블] WHERE [조건]
MSSQL 2008에서는 자동완성 기능이 아주 훌륭해졌다.
SELECT [내용] FROM [테이블] WHERE [조건]
주요 시스템 변수 (시스템 함수)
@@ERROR
@@IDENTITY
@@ROWCOUNT
@@TRANCOUNT
SELECT [내용] FROM [테이블] WHERE [조건]
마지막 sql문의 수행시 발생한 에러
해당 세션에서 마지막으로 입력된 ID값.
수행된 sql문에 의해 영향받은 행의 수.
트랜잭션의 중첩 정도.
SELECT [내용] FROM [테이블] WHERE [조건]
Year >= 2000 AND Year <= 2010
-> Year BETWEEN 2000 AND 2010
title_id = ‘BU1032’ OR ‘BU1111’ OR ‘MC3021’
-> title_id IN ( ‘BU1032’, ‘BU1111’, ‘MC3021’ )
조건 : c/c++ 스타일 기술 외 다른 문법 지원.
SELECT [내용] FROM [테이블] WHERE [조건]
_ : any one character. 어떤 것이든 한 문자를 허용.
% : any zero or more. 아무것도 없는 경우를 포함, 뭐든지 허용.
[(text)] : [] 안에 적힌 글자만 허용.
[^(text)] : ^뒤에 적힌 글자를 제외한 글자들을 허용.
패턴 : 문자열 검색시 이용.
SELECT [내용] FROM [테이블] WHERE [조건]
WHERE price * 1.1 < 20.0
-> WHERE price < 20.0 / 1.1
WHERE DATEPART(yy, pubdate) = 1991
-> WHERE pubdate BETWEEN ‘1991.1.1’
AND ‘1991.12.31 23:59:59.999’
튜닝 팁 : 연산자 앞에는 column만 오도록 한다.
자료형 (Data Type)에 대한 자세한 언급은 생략.
성능 향상을 위해 가능한 작은 자료형을 써야하는 점과,
var..로 시작하는 가변길이 타입에 대한 성능 관련 이슈가 있는 점을
알아두기만 하고 넘어가자.
사용자 정의 자료형 (User Defined Data Type)
여러 개발자가 공동 개발하는 경우
혼동을 줄일 수 있다.
exec sp_addtype <새로운 타입 이름>, ‘<sql 데이터 타입>’
형 변환 : CONVERT() / CAST()
CAST ( expression AS datatype )
CONVERT( datatype, expression [, style] )
두 함수 모두 형 변환용 함수.
CAST는 ansi 표준 함수 : 다른 DBMS에서도 지원하고
CONVERT는 T-SQL : 날짜 변환에 관한 추가기능 지원.
DECLARE @data INT
SET @data = NULL -- 변수를 NULL로 만든다.
IF @data = NULL -- 문법 오류 없이 오동작(?)한다.
…
IF @data IS NULL -- 올바른 NULL 체크 방식.
…
실수하기 쉬운 NULL 체크
SET ANSI_NULLS OFF 을 해주면 = NULL도 동작한다.
SELECT(1)
&
R-DBMS
관계형 데이터베이스 : Relational-Data Base
관계 : Entity (테이블)간의 논리적 관계를 지정해준다.
관계로 표현된 논리에 어긋나는 조작은 처리 불가능. 데이터 이상의 의미.
-> 예 : 계정 - 캐릭터 - 스킬
ER-diagram : Entity-Relation diagram. 엔티티간의 관계를 기술.
계정 캐릭터 스킬
1:n 관계 1:n 관계
1:1 관계 - 테이블을 합치는 것을 고려해보자.
1:n 관계 - 가장 흔한 경우. 자식 테이블에 부모를 참조하는 컬럼 선언.
m:n 관계 - R-DB에서 인정되지 않는 관계. 제 4 정규화 필요.
( 예 : 친구리스트. 여러 캐릭터와 여러 캐릭터가 관계 지어진다. )
Entity A Entity B
Entity A Entity BA와 B의 관계
두 엔티티가 m:n 관계이고, 이를 모델링 해야 한다면
각각의 엔티티를 테이블로 만들고,
A와 B의 관계를 기술하는 별도의 테이블을 만들어 표현한다.
m:n
1:n n:1
m:n 관계 모델링의 예시
-> 캐릭터 기반의 친구리스트
Entity A : 캐릭터
Entity B : 캐릭터
A와 B의 관계를 FriendList로 표현.
관계의 부모가 지워질(변경될) 때, 연결된 자식 데이터도 함께 적용.
-> 계정을 지우면, 해당 계정의 캐릭터 삭제 및 캐릭터의 스킬도 삭제되도록 설정 가능.
• 정규화 (Normalization ) :
• 중복된 데이터를 제거해서 성능을 향상 시키는 것.
• 중복 데이터가 포함된 테이블을 분리하는 작업.
• 1정규화(1NF)부터 4정규화(4NF)로 구분한다.
• 나뉘어진 테이블을 필요에 따라 JOIN해서 사용한다.
• 비정규화 (Denormalization) :
• 나누어 놓은 테이블을 성능 향상의 목적으로 다시 합치는 것.
• 데이터가 중복되지만, 지나치게 빈번한 JOIN을 피할 수 있다.
- 캐릭터와 캐릭터의 보유 스킬은 1:n 관계를 가진다.
- 왼쪽은 한 테이블에 모두 표시. 오른쪽은 별도 테이블로 정규화.
캐릭터 스킬을 개별구매하는 부분유료화 게임이라고 치자.
해당 스킬을 어느 유저(계정)가 구매했는지에 대한 정보가 빈번히 필요하다.
위의 구조라면 테이블 세 개를 JOIN해야 관련 정보를 얻을 수 있다.
이 런 경우 스킬 테이블에 소유자 유저의 UID값을 중복해 넣는다.
데이터는 중복되지만, JOIN을 줄이거나 없앨 수 있다.
Fin.
Q & A

Más contenido relacionado

Destacado

데이터베이스 시스템 chapter2_STG박하은
데이터베이스 시스템 chapter2_STG박하은데이터베이스 시스템 chapter2_STG박하은
데이터베이스 시스템 chapter2_STG박하은ETRIBE_STG
 
Sql study 20101113 유혜원
Sql study 20101113 유혜원Sql study 20101113 유혜원
Sql study 20101113 유혜원혜원 유
 
Sql developer 2nd
Sql developer 2ndSql developer 2nd
Sql developer 2ndMinwoo Choi
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화Lee Seongje
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHENHoyoung Jung
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해Byung Kook Ha
 
하루에 1시간을 벌 수 있는 10가지 방법
하루에 1시간을 벌 수 있는 10가지 방법하루에 1시간을 벌 수 있는 10가지 방법
하루에 1시간을 벌 수 있는 10가지 방법Devgear
 
분석과 설계
분석과 설계분석과 설계
분석과 설계Haeil Yi
 
효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차희동 강
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화Hoyoung Jung
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지JungGeun Lee
 
데이터베이스 모델링
데이터베이스 모델링데이터베이스 모델링
데이터베이스 모델링Hoyoung Jung
 
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스토리텔링 운명의나무 성민우_일반인_20111028
스토리텔링 운명의나무 성민우_일반인_20111028스토리텔링 운명의나무 성민우_일반인_20111028
스토리텔링 운명의나무 성민우_일반인_20111028Minwoo Sung
 

Destacado (17)

데이터베이스 시스템 chapter2_STG박하은
데이터베이스 시스템 chapter2_STG박하은데이터베이스 시스템 chapter2_STG박하은
데이터베이스 시스템 chapter2_STG박하은
 
Sql study 20101113 유혜원
Sql study 20101113 유혜원Sql study 20101113 유혜원
Sql study 20101113 유혜원
 
한호정
한호정한호정
한호정
 
Sql developer 2nd
Sql developer 2ndSql developer 2nd
Sql developer 2nd
 
PL/SQL - 10g Release1
PL/SQL - 10g Release1PL/SQL - 10g Release1
PL/SQL - 10g Release1
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHEN
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해
 
하루에 1시간을 벌 수 있는 10가지 방법
하루에 1시간을 벌 수 있는 10가지 방법하루에 1시간을 벌 수 있는 10가지 방법
하루에 1시간을 벌 수 있는 10가지 방법
 
분석과 설계
분석과 설계분석과 설계
분석과 설계
 
효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차효율적인 SQL 작성방법 1주차
효율적인 SQL 작성방법 1주차
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화
 
Mymysql basic sql
Mymysql basic sqlMymysql basic sql
Mymysql basic sql
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지
 
데이터베이스 모델링
데이터베이스 모델링데이터베이스 모델링
데이터베이스 모델링
 
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
 
스토리텔링 운명의나무 성민우_일반인_20111028
스토리텔링 운명의나무 성민우_일반인_20111028스토리텔링 운명의나무 성민우_일반인_20111028
스토리텔링 운명의나무 성민우_일반인_20111028
 

Similar a 101102 endofdb select.1_rdbms

데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은ETRIBE_STG
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
Database Entity, 정규화에 대해 알아보자.pdf
Database Entity, 정규화에 대해 알아보자.pdfDatabase Entity, 정규화에 대해 알아보자.pdf
Database Entity, 정규화에 대해 알아보자.pdfHo Jeong Im
 
데이터분석과저널리즘 정제에서 분석까지
데이터분석과저널리즘 정제에서 분석까지데이터분석과저널리즘 정제에서 분석까지
데이터분석과저널리즘 정제에서 분석까지Gee Yeon Hyun
 
최신기출문제(액세스)
최신기출문제(액세스)최신기출문제(액세스)
최신기출문제(액세스)Jong Suk Jang
 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스KWANGIL KIM
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7Chris Ohk
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
파이썬 sqlite 이해하기
파이썬 sqlite 이해하기파이썬 sqlite 이해하기
파이썬 sqlite 이해하기Yong Joon Moon
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약Sung Yub Kim
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)JiandSon
 
제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기sang doc Lee
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 

Similar a 101102 endofdb select.1_rdbms (20)

데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은데이터베이스 시스템 chapter4_STG박하은
데이터베이스 시스템 chapter4_STG박하은
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
6.테이블만들기
6.테이블만들기6.테이블만들기
6.테이블만들기
 
Database Entity, 정규화에 대해 알아보자.pdf
Database Entity, 정규화에 대해 알아보자.pdfDatabase Entity, 정규화에 대해 알아보자.pdf
Database Entity, 정규화에 대해 알아보자.pdf
 
데이터분석과저널리즘 정제에서 분석까지
데이터분석과저널리즘 정제에서 분석까지데이터분석과저널리즘 정제에서 분석까지
데이터분석과저널리즘 정제에서 분석까지
 
최신기출문제(액세스)
최신기출문제(액세스)최신기출문제(액세스)
최신기출문제(액세스)
 
Programming java day2
Programming java day2Programming java day2
Programming java day2
 
181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
Database design
Database designDatabase design
Database design
 
파이썬 sqlite 이해하기
파이썬 sqlite 이해하기파이썬 sqlite 이해하기
파이썬 sqlite 이해하기
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
 
Power bi
Power biPower bi
Power bi
 
제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기제8장 테이블 생성 수정 제거하기
제8장 테이블 생성 수정 제거하기
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
Haskell study 6
Haskell study 6Haskell study 6
Haskell study 6
 
Haskell study 7
Haskell study 7Haskell study 7
Haskell study 7
 

Más de sung ki choi

[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장sung ki choi
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화sung ki choi
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.sung ki choi
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장sung ki choi
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장sung ki choi
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표sung ki choi
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자sung ki choi
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7sung ki choi
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열sung ki choi
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용sung ki choi
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기sung ki choi
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32sung ki choi
 

Más de sung ki choi (16)

[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
 

101102 endofdb select.1_rdbms

  • 1. SELECT(1) & R-DBMS Microsoft SQLServer 2000 전문가로 가는 지름길 1편 3장 / 4장 Sql Study . florist.sk@gmail.com
  • 3. SELECT [내용] FROM [테이블] WHERE [조건] ORDER BY [순서] SELECT 쿼리문의 기본적인 형태. 보다 상세한 내용은 5장에서 다룬다.
  • 4. SELECT [내용] FROM [테이블] WHERE [조건] • 테이블에서 얻어오고 싶은 데이터가 있는 필드의 리스트를 기술. • 테이블 전체를 얻어올 때는 select * from … • 성능상의 이슈가 있고, 컴파일 최적화의 이슈도 있다.
  • 5. • SELECT COUNT(*) FROM dbo.Users(NOLOCK) – 가입자수 • 불필요하게 모든 컬럼을 다 가져오는 비효율적인 쿼리 • 최신 버전의 MSSQL은 모든 컬럼을 다 가져오지 않는다. • 추후 이 부분에 대한 추가적인 학습 필요. SELECT [내용] FROM [테이블] WHERE [조건]
  • 6. 테이블의 필드명을 보고 싶을 땐 sp_help / sp_columns SELECT [내용] FROM [테이블] WHERE [조건]
  • 7. MSSQL 2008에서는 자동완성 기능이 아주 훌륭해졌다. SELECT [내용] FROM [테이블] WHERE [조건]
  • 8. 주요 시스템 변수 (시스템 함수) @@ERROR @@IDENTITY @@ROWCOUNT @@TRANCOUNT SELECT [내용] FROM [테이블] WHERE [조건] 마지막 sql문의 수행시 발생한 에러 해당 세션에서 마지막으로 입력된 ID값. 수행된 sql문에 의해 영향받은 행의 수. 트랜잭션의 중첩 정도.
  • 9. SELECT [내용] FROM [테이블] WHERE [조건] Year >= 2000 AND Year <= 2010 -> Year BETWEEN 2000 AND 2010 title_id = ‘BU1032’ OR ‘BU1111’ OR ‘MC3021’ -> title_id IN ( ‘BU1032’, ‘BU1111’, ‘MC3021’ ) 조건 : c/c++ 스타일 기술 외 다른 문법 지원.
  • 10. SELECT [내용] FROM [테이블] WHERE [조건] _ : any one character. 어떤 것이든 한 문자를 허용. % : any zero or more. 아무것도 없는 경우를 포함, 뭐든지 허용. [(text)] : [] 안에 적힌 글자만 허용. [^(text)] : ^뒤에 적힌 글자를 제외한 글자들을 허용. 패턴 : 문자열 검색시 이용.
  • 11. SELECT [내용] FROM [테이블] WHERE [조건] WHERE price * 1.1 < 20.0 -> WHERE price < 20.0 / 1.1 WHERE DATEPART(yy, pubdate) = 1991 -> WHERE pubdate BETWEEN ‘1991.1.1’ AND ‘1991.12.31 23:59:59.999’ 튜닝 팁 : 연산자 앞에는 column만 오도록 한다.
  • 12. 자료형 (Data Type)에 대한 자세한 언급은 생략. 성능 향상을 위해 가능한 작은 자료형을 써야하는 점과, var..로 시작하는 가변길이 타입에 대한 성능 관련 이슈가 있는 점을 알아두기만 하고 넘어가자.
  • 13. 사용자 정의 자료형 (User Defined Data Type) 여러 개발자가 공동 개발하는 경우 혼동을 줄일 수 있다. exec sp_addtype <새로운 타입 이름>, ‘<sql 데이터 타입>’
  • 14. 형 변환 : CONVERT() / CAST() CAST ( expression AS datatype ) CONVERT( datatype, expression [, style] ) 두 함수 모두 형 변환용 함수. CAST는 ansi 표준 함수 : 다른 DBMS에서도 지원하고 CONVERT는 T-SQL : 날짜 변환에 관한 추가기능 지원.
  • 15. DECLARE @data INT SET @data = NULL -- 변수를 NULL로 만든다. IF @data = NULL -- 문법 오류 없이 오동작(?)한다. … IF @data IS NULL -- 올바른 NULL 체크 방식. … 실수하기 쉬운 NULL 체크 SET ANSI_NULLS OFF 을 해주면 = NULL도 동작한다.
  • 17. 관계형 데이터베이스 : Relational-Data Base 관계 : Entity (테이블)간의 논리적 관계를 지정해준다. 관계로 표현된 논리에 어긋나는 조작은 처리 불가능. 데이터 이상의 의미. -> 예 : 계정 - 캐릭터 - 스킬 ER-diagram : Entity-Relation diagram. 엔티티간의 관계를 기술.
  • 18. 계정 캐릭터 스킬 1:n 관계 1:n 관계 1:1 관계 - 테이블을 합치는 것을 고려해보자. 1:n 관계 - 가장 흔한 경우. 자식 테이블에 부모를 참조하는 컬럼 선언. m:n 관계 - R-DB에서 인정되지 않는 관계. 제 4 정규화 필요. ( 예 : 친구리스트. 여러 캐릭터와 여러 캐릭터가 관계 지어진다. )
  • 19. Entity A Entity B Entity A Entity BA와 B의 관계 두 엔티티가 m:n 관계이고, 이를 모델링 해야 한다면 각각의 엔티티를 테이블로 만들고, A와 B의 관계를 기술하는 별도의 테이블을 만들어 표현한다. m:n 1:n n:1
  • 20. m:n 관계 모델링의 예시 -> 캐릭터 기반의 친구리스트 Entity A : 캐릭터 Entity B : 캐릭터 A와 B의 관계를 FriendList로 표현.
  • 21. 관계의 부모가 지워질(변경될) 때, 연결된 자식 데이터도 함께 적용. -> 계정을 지우면, 해당 계정의 캐릭터 삭제 및 캐릭터의 스킬도 삭제되도록 설정 가능.
  • 22. • 정규화 (Normalization ) : • 중복된 데이터를 제거해서 성능을 향상 시키는 것. • 중복 데이터가 포함된 테이블을 분리하는 작업. • 1정규화(1NF)부터 4정규화(4NF)로 구분한다. • 나뉘어진 테이블을 필요에 따라 JOIN해서 사용한다. • 비정규화 (Denormalization) : • 나누어 놓은 테이블을 성능 향상의 목적으로 다시 합치는 것. • 데이터가 중복되지만, 지나치게 빈번한 JOIN을 피할 수 있다.
  • 23. - 캐릭터와 캐릭터의 보유 스킬은 1:n 관계를 가진다. - 왼쪽은 한 테이블에 모두 표시. 오른쪽은 별도 테이블로 정규화.
  • 24. 캐릭터 스킬을 개별구매하는 부분유료화 게임이라고 치자. 해당 스킬을 어느 유저(계정)가 구매했는지에 대한 정보가 빈번히 필요하다. 위의 구조라면 테이블 세 개를 JOIN해야 관련 정보를 얻을 수 있다.
  • 25. 이 런 경우 스킬 테이블에 소유자 유저의 UID값을 중복해 넣는다. 데이터는 중복되지만, JOIN을 줄이거나 없앨 수 있다.