INSERT INTO 테이블명 VALUES('컬럼값1', '컬럼값2'.... )
② 일부 컬럼에만 값을 넣어 삽입하는 경우 :
INSERT INTO 테이블명(컬럼명1...) VALUES('컬럼값1'.... )
UPDATE
DELETE
LIKE
패턴을 검색하기 위해 데이터를 비교하는 와일드카드 검색을 수행할 수있다. Like는 데이터를 부분적으로 알려지지 않은 값과 비교하므로 BETWEEN이나 IN의 조건과는 다르다.
예제)
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 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 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)
WHEN '컬럼값' THEN '결과값'
[...n]
[ ELSE '그외 처리값' ]
END
② 검색된 Case : CASE
WHEN 참 혹은 거짓 THEN '결과값'
[...n]
[ ELSE '그외 처리값' ]
END
Convert
SELECT문장에서 자료를 변형하여 가져올 수 있다.
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값을 다른 것으로 바꾸는 시스템 함수이다.
예제)
SELECT AVG( ISNULL ( price, 0 ) ) FROM pubs
☞ NULL값은 연산함수에 포함되지 않기때문에
ISNULL을 사용하지 않는다면 NULL값의 항목은 평균에 포함되지 않는다.
Group by
결과 데이터를 그룹화 한다. ( Group by로 그룹화된 데이터를 결정하는 것은 Having ) ANSI 표준에서는 Select 리스트에 있는 모든 컬럼들은 반드시 GROUP BY절에 나타나야 한다.
FROM sales
GROUP BY title_id
Having
Group by에 대한 WHERE절이라고 할 수 있다.
FROM sales
GROUP BY title_id
HAVING sum(qty) >= 30
Union
JOIN이 정규화된 테이블을 연결시키기 위해 사용되는 것이라면, UNION은 비 정규화된 테이블을 연결시키기 위해서 사용된다. 결과에서 중복된 행은 제거하는데 이를 보여주고자 한다면 Union all을 사용해야 한다.
UNION
SELECT * FROM table2
참고 1. UNION 의 대상이 되는 테이블들의 컬럼 구조가 일치해야 하며 자료형이 호환되어야 한다.
(실제로는 같은 컬럼, 표현식이 아니더라도 자료형과 순서만 맞으면 사용이 가능하다)
2. ORDER BY 절을 포함하고 있으면 전체 결과가 정렬된다.
3. 컬럼 이름은 첫번째 SELECT 문을 따른다.
Union all
Union에서 중복되어 제거된 데이터까지도 모두 보이게 할 때 사용한다.
UNION ALL
SELECT * FROM table2
Inner Join
두 테이블을 연결 조건에 맞는 행들만 포함하는 세 번째 테이블로 연결한다.
FROM titles INNER JOIN publishers
ON titles.pub_id = publishers.pub_id
- Equijoin
- 비교되는 컬럼의 값이 같을 경우에 연결이 이루어진다.
- 중복된 컬럼 정보를 만들게 된다.
- Natural join
- Equijoin 이 만들어 내는 결과 집합에서 중복된 컬럼의 데이터를 제거한다.
Outer Join
FROM id-이름 LEFT OUTER JOIN id-정보
ON id-이름.ID = id-정보.ID
Sub Query
SELECT / INSERT / UPDATE / DELETE 문 안에 들어가 있는 SELECT를 하위질의(서브쿼리)라고 부른다.
IN (SELECT 컬럼명 FORM 테이블 2 )
SELECT * FROM titles
WHERE title_id IN (SELECT title_id FROM sales)
참고 1. 괄호로 묶는다.
2. 하위 질의만 수행해도 수행은 가능하다.
3. 바깥 질의(outer query)는 안쪽 질의(inner query)의 결과에 의해 수행된다. (안쪽질의 --> 바깥질의)


0