RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
INSERT                                                                                  

① 하나의 ROW를 한꺼번에 삽입하는 경우 :
     INSERT INTO 테이블명 VALUES('컬럼값1', '컬럼값2'.... )

② 일부 컬럼에만 값을 넣어 삽입하는 경우 :
    INSERT INTO 테이블명(컬럼명1...) VALUES('컬럼값1'.... )


UPDATE                                                                                  

UPDATE 테이블명 SET 컬럼명 = '컬럼값' [...]


DELETE                                                                                  

DELETE FROM 테이블명



LIKE                                                                                          

   패턴을 검색하기 위해 데이터를 비교하는 와일드카드 검색을 수행할 수있다. Like는 데이터를 부분적으로 알려지지 않은 값과 비교하므로 BETWEEN이나 IN의 조건과는 다르다.

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '%'
                                                                                                                                           

예제)
SELECT  title  FROM  titles WHERE title LIKE '%computer%'
      ☞ 제목에 computer가 있는 모든 책이 출력된다. 색인을 사용할수 없어 속도가 느리다.

SELECT  title  FROM  titles WHERE title LIKE '%computer%'
      ☞ computer로 시작하는 제목만 보여준다.

패턴 매칭에 사용되는 와일드 카드 (wild card)

종류 설 명
_ (underscore) 뒤에 반드시 '한 문자(one character)'가 와야 한다. book_
% 문자열 앞 뒤에 가능. 있어도 되고 없어도 된다. book%
[] [] 안에 있는 글자들 [b-f]ing
[^] ^의 다음에 있는 글자는 제외한 다른 것이 와야 한다.
^의 다음에 글자가 없어서도 안된다.
M[^c]



IN                                                                                                

   SELECT WHERE문에서 특정값들만 가져올 때 사용한다. 컬럼 내에서 특정 값을 지정하여 가져올 수도 있고 하위 질의의 형태를 가질수도 있다.

SELECT * FROM 테이블명 WHERE 컬럼명 IN ('특정값1' , '특정값2'....)
   예제)
    SELECT  title_id  FROM  sales  WHERE  title_id  IN ('BU1032', 'BU111', 'MC3021')

SELECT * FROM 테이블명 WHERE 컬럼명 IN ('특정값1' , '특정값2'....)
   예제)
   SELECT title FROM titles WHERE  title_id  IN( SELECT title_id FROM sales )


168~169p


BETWEEN                                                                                  


   SELECT WHERE 에서 데이터를 가져올 때 '범위'를 지정할 수 있다.

SELECT * FROM 테이블명 WHERE 컬럼명 BETWEEN  범위1 AND 범위2
                                                                                                                                           

예제)
SELECT  title_id  FROM  sales WHERE qty BETWEEN 10 AND 20

SELECT  title_id  FROM  sales WHERE qty >= 10 AND qty <= 20
          ☞ BETWEEN은 부등호를 사용하는 것과 동일하다. 성능면에서는 거의 차이가 없다. 


Case ~ when                                                                          


   주어진 조건에 따른 처리를 하는 흐름제어문. (283 ~ 284p)

 단  순 Case :   CASE 컬럼명
                                  WHEN '컬럼값'  THEN '결과값'
                                  [...n]
                                  [ ELSE '그외 처리값' ]
                             END

검색된 Case :   CASE 
                                  WHEN 참 혹은 거짓  THEN '결과값'
                                  [...n]
                                 [ ELSE '그외 처리값' ]
                             END


Convert                                                                                      


   SELECT문장에서 자료를 변형하여 가져올 수 있다.

SELECT  CONVERT( 원하는 자료형 , 컬럼명 ) FROM 테이블명

SELECT title_id AS Title_no CONVERT( char(30), title) AS '줄인 제목'  FROM titles


Date Function                                                                          


날짜에 대한 함수

함수 매개변수 내용
GETDATE () 현재 날짜와 시간
DATEADD ( datepart, number, date ) datepart 부분에 number 값을 더한다
DATEDIFF ( datrpart, date1, date2 ) 두 날짜 사이의 datepart 값
DATENAME ( datepart, date ) date에 대한 datepart를 이름으로 돌려준다
DATEPART ( datepart, date ) date에 대해 지저된 datepart를 돌려준다
DAY ( date ) DATEPART (DAY, date) 과 같다
MONTH ( date ) DATEPART (MONTH, date) 과 같다
YEAR ( date ) DATEPART (YEAR, date) 과 같다


IsNull                                                                                        

  NULL값을 다른 것으로 바꾸는 시스템 함수이다.

ISNULL ( 표현식, NULL일 때의 값)
                                                                                                                                           

예제)
   SELECT AVG( ISNULL ( price, 0 ) ) FROM pubs
          ☞ NULL값은 연산함수에 포함되지 않기때문에
              ISNULL을 사용하지 않는다면 NULL값의 항목은 평균에 포함되지 않는다.





Group by                                                                                    

  결과 데이터를 그룹화 한다. ( Group by로 그룹화된 데이터를 결정하는 것은 Having ) ANSI 표준에서는 Select 리스트에 있는 모든 컬럼들은 반드시 GROUP BY절에 나타나야 한다.

SELECT title_id, sum(qty) AS 'sum of qty'
FROM sales
GROUP BY title_id


Having                                                                                      

  Group by에 대한 WHERE절이라고 할 수 있다.

SELECT title_id, sum(qty) AS 'sum of qty'
FROM sales
GROUP BY title_id
HAVING sum(qty) >= 30


Union                                                                                      

  JOIN이 정규화된 테이블을 연결시키기 위해 사용되는 것이라면, UNION은 비 정규화된 테이블을 연결시키기 위해서 사용된다. 결과에서 중복된 행은 제거하는데 이를 보여주고자 한다면 Union all을 사용해야 한다.

SELECT * FROM table1
UNION
SELECT * FROM table2

참고 1. UNION 의 대상이 되는 테이블들의 컬럼 구조가 일치해야 하며 자료형이 호환되어야 한다.
          (실제로는 같은 컬럼, 표현식이 아니더라도 자료형과 순서만 맞으면 사용이 가능하다)
       2. ORDER BY 절을 포함하고 있으면 전체 결과가 정렬된다.
       3. 컬럼 이름은 첫번째 SELECT 문을 따른다.


Union all                                                                                  

   Union에서 중복되어 제거된 데이터까지도 모두 보이게 할 때 사용한다.

SELECT * FROM table1
UNION ALL
SELECT * FROM table2






Inner Join                                                                                

  두 테이블을 연결 조건에 맞는 행들만 포함하는 세 번째 테이블로 연결한다.

SELECT pub_name, title
FROM titles INNER JOIN publishers
ON titles.pub_id = publishers.pub_id

        - Equijoin
                - 비교되는 컬럼의 값이 같을 경우에 연결이 이루어진다.
                - 중복된 컬럼 정보를 만들게 된다.
        - Natural join
                - Equijoin 이 만들어 내는 결과 집합에서 중복된 컬럼의 데이터를 제거한다.






Outer Join                                                                                


SELECT id-이름.이름, id-이름.ID, id-정보.id, id-정보.나이,id-정보.성별
FROM id-이름 LEFT OUTER JOIN id-정보
ON id-이름.ID = id-정보.ID




Sub Query                                                                             

  SELECT / INSERT / UPDATE / DELETE 문 안에 들어가 있는 SELECT를 하위질의(서브쿼리)라고 부른다.

SELECT * FROM 테이블 1 WHERE 컬럼명
                                                    IN (SELECT 컬럼명 FORM 테이블 2 )


SELECT * FROM titles
WHERE title_id IN (SELECT title_id FROM sales)



참고 1. 괄호로 묶는다.
       2. 하위 질의만 수행해도 수행은 가능하다.
       3. 바깥 질의(outer query)는 안쪽 질의(inner query)의 결과에 의해 수행된다. (안쪽질의 --> 바깥질의)













 

2009/07/17 10:10 2009/07/17 10:10
http://deng-i.net/blog/dream/trackback/443
[로그인][오픈아이디란?]
보댕:하하하
댕이넷☆ (184)
브라보 마이 라이프! (97)
한 뼘 더 자라기 (41)
브랜드메이킹 (38)
공부하는 개발자 (7)