'Transact-SQL'에 해당되는 글 9건
- 2008/11/15 Transact-SQL ( OUTTER JOIN )
- 2008/11/15 Transact-SQL ( INNER JOIN )
- 2008/11/15 Transact-SQL ( DELETE ) : 회원값 삭제
- 2008/11/15 Transact-SQL ( UPDATE ) : 회원값 수정
- 2008/11/15 Transact-SQL ( INSERT ) : 회원 테이블 입력
- 2008/11/14 DECLARE 코드 - 해당 테이블의 행 개수를 변수에 담는 방법
- 2008/11/14 Transact-SQL ( Select ) : 회원데이터, 구매데이터 사용예 #2
- 2008/11/14 Transact-SQL ( Select ) : 회원데이터, 구매데이터 사용예
- 2008/11/14 회원테이블 + 구매테이블 샘플
--===============================================================--
-- OUTER JOIN
--===============================================================--
-- OUTER JOIN에는 LEFT, RIGHT, FULL 을 OUTER JOIN에 추가할 수 있다.
-- LEFT OUTER JOIN의 의미를 "왼쪽 테이블의 것은 모두 출력 되어야 한다.
-- 정도로 해석하면 된다.
select U.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 as [연락처]
from userTbl U
left outer join buyTbl B
on U.userid = B.userid
order by U.userid
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
AJH 안정환 책 강원 NULL
CJC 최진철 모니터 제주 0190000000
CJC 최진철 메모리 제주 0190000000
CJC 최진철 운동화 제주 0190000000
CJC 최진철 운동화 제주 0190000000
JJJ 조재진 NULL 충북 0193333333
KNI 김남일 NULL 경북 0166666666
LCS 이천수 모니터 인천 0114444444
LYP 이용표 NULL 전북 NULL
PJS 박지성 NULL 서울 0111111111
PJY 박주영 운동화 경기 0112222222
PJY 박주영 노트북 경기 0112222222
PJY 박주영 청바지 경기 0112222222
SJK 송종국 NULL 경기 0189999999
SKH 설기현 책 서울 0118888888
SKH 설기현 청바지 서울 0118888888
SKH 설기현 책 서울 0118888888
*/
-- 위와 같이 NULL의 정보도 같이 출력되는 것을 볼 수 있다.
-- left outer join 을 left join으로만 기록해도 된다.
--
select U.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 as [연락처]
from buyTbl B
right outer join userTbl U
on U.userid = B.userid
order by U.userid
-- 결과는 위와 같다.
--
--============================================================--
-- INNER JOIN
--============================================================--
use sqlDB
go
-- inner join 사용
-- 구매 테이블 중에 LCS 라는 아이디를 가진 사람이 구매한 물건을
-- 발송하기 위해서 이름/주소/연락처 등을 조인해서
-- 검색하려면 아래와 같이 사용
select *
from buyTbl
inner join userTbl
on buyTbl.userid = userTbl.userid
where buyTbl.userid='LCS'
/* 결과
num userid prodName ... birthYear addr mobile1 mobile2 height
----------- -------- -------- --------- ----------- ------ -------- ---------- ----------- ---- ------- -------- ------
3 LCS 모니터 ... 1983 인천 011 4444444 179
*/
-- 아이디/이름/구매물품/주소/연락처만 추출
select buyTbl.userid, name, prodName, addr, mobile1 + mobile2 as [연락처]
from buyTbl
inner join userTbl
on buyTbl.userid = userTbl.userid
-- select userid << 이렇게 하면 buyTbl, userTbl에 userid가 있기 때문에
-- 오류가 납니다. 정확하게 명시를 해야 합니다.
-- >> buyTbl.userid 로 적어야 합니다.
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
PJY 박주영 운동화 경기 0112222222
PJY 박주영 노트북 경기 0112222222
LCS 이천수 모니터 인천 0114444444
CJC 최진철 모니터 제주 0190000000
PJY 박주영 청바지 경기 0112222222
CJC 최진철 메모리 제주 0190000000
*/
-- WHERE로 JOIN을 처리 할 수 있다.
select buyTbl.userid, name, prodName, addr, mobile1 + mobile2 as [연락처]
from buyTbl, userTbl
where buyTbl.userid = userTbl.userid
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
PJY 박주영 운동화 경기 0112222222
PJY 박주영 노트북 경기 0112222222
LCS 이천수 모니터 인천 0114444444
CJC 최진철 모니터 제주 0190000000
PJY 박주영 청바지 경기 0112222222
CJC 최진철 메모리 제주 0190000000
*/
-- 테이블에 별칭을 붙인다.
select B.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 as [연락처]
from buyTbl B, userTbl U
where B.userid = U.userid
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
PJY 박주영 운동화 경기 0112222222
PJY 박주영 노트북 경기 0112222222
LCS 이천수 모니터 인천 0114444444
CJC 최진철 모니터 제주 0190000000
PJY 박주영 청바지 경기 0112222222
CJC 최진철 메모리 제주 0190000000
*/
-- LCS 아이디의 사용자가 구매한 정보를 보여주는 쿼리
select B.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 as [연락처]
from buyTbl B
inner join userTbl U
on B.userid = U.userid
where B.userid = 'LCS'
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
LCS 이천수 모니터 인천 0114444444
*/
-- 전체 회원들이 구매한 목록을 모두 출력하자.
-- 그리고 결과를 정렬해보자.
select U.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 As [연락처]
from userTbl U
inner join buyTbl B
on U.userid = B.userid
order by U.userid
/* 결과
userid name prodName addr 연락처
-------- ---------- -------- ---- -----------
AJH 안정환 책 강원 NULL
CJC 최진철 메모리 제주 0190000000
CJC 최진철 모니터 제주 0190000000
CJC 최진철 운동화 제주 0190000000
CJC 최진철 운동화 제주 0190000000
LCS 이천수 모니터 인천 0114444444
PJY 박주영 청바지 경기 0112222222
PJY 박주영 운동화 경기 0112222222
PJY 박주영 노트북 경기 0112222222
SKH 설기현 책 서울 0118888888
SKH 설기현 청바지 서울 0118888888
SKH 설기현 책 서울 0118888888
*/
-- 위의 결과에는 구매 테이블에 대한 목록이다.
-- 하지만 구매를 하지 않은 나머지 회원은 나타나지 않는다.
-- 쇼핑몰에서 한번이라도 구매한 기록이 있는 우수회원들에게
-- 감사의 안내문을 발송하도록 하자. 라는 경우에
-- DISTINCT 를 사용한다.
select distinct U.userid, U.name, U.addr
from userTbl U
inner join buyTbl B
on U.userid = B.userid
order by U.userid
/* 결과
userid name addr
-------- ---------- ----
AJH 안정환 강원
CJC 최진철 제주
LCS 이천수 인천
PJY 박주영 경기
SKH 설기현 서울
*/
-- 이 내용은 바로위의 내용에서 중복되는 목록을
-- DISTINCE로 해서 하나로 묶어 주는 역활을 한다.
-- 위의 결과를 EXISTS 문을 사용해서도 동일한 결과를 낼 수 있다.
-- 내부적으로 JOIN보다 복잡하여 성능이 떨어지므로 권장은 하지 않는다.
select U.userid, U.name, U.addr
from userTbl U
where exists(
select *
from buyTbl B
where U.userid = B.userid
)
/* 결과
userid name addr
-------- ---------- ----
AJH 안정환 강원
CJC 최진철 제주
LCS 이천수 인천
PJY 박주영 경기
SKH 설기현 서울
*/
-- ★★"학생 동아리"생성 후에 해야함..
-- 학생 테이블, 동아리 테이블, 학생동아리을 이용해서 학생을 기준으로
-- 학생 이름/지역/가입한 동아리/동아리명으로 출력해 보도록 하자.
select s.stdName, S.addr, C.clubName, C.roomNo
from stdTbl S
inner join stdclubTbl SC
on S.stdName = SC.stdName
inner join clubTbl C
on SC.clubName = C.clubName
order by S.stdName
/* 결과
stdName addr clubName roomNo
---------- ---- ---------- ------
박지성 서울 바둑 102호
박지성 서울 축구 103호
안정환 강원 봉사 104호
이천수 인천 축구 103호
이천수 인천 봉사 104호
조재진 충북 축구 103호
*/
-- 동아리를 기준으로 가입한 학생의 목록을 출력
select C.clubName, C.roomNo, S.stdName, S.addr
from stdTbl S
inner join stdclubTbl SC
on SC.stdName = S.stdName
inner join clubTbl C
on SC.clubName = C.clubName
order by C.clubName
/* 결과
clubName roomNo stdName addr
---------- ------ ---------- ----
바둑 102호 박지성 서울
봉사 104호 이천수 인천
봉사 104호 안정환 강원
축구 103호 박지성 서울
축구 103호 조재진 충북
축구 103호 이천수 인천
*/
-- 외부 조인은 조인의 조건에 만족되지 않는 행까지도 포함시키는 것
--
--============================================================--
-- DELETE
--============================================================--
-- 행 단위 삭제
USE tempDB
DELETE testTbl3 WHERE Fname='Kim'
-- 테이블을 남겨 놓고 모든 내용을 삭제할때
DELETE FROM bigTbl1
TRUNCATE TABLE bitTbl3
-- 테이블을 그대로 삭제할때
DROP table bitTbl2
--============================================================--
-- UPDATE
--============================================================--
-- 기존에 입력된 값을 변경하기 위해서는 UPDATE 문을 사용
UPDATE testTbl3
SET tel = '없음'
WHERE Fname = 'Kim'
-- 구매 테이블에서 현재의 단가에서 모든 단가가 1.5배
-- 인상되었다면 아래와 같이 사용할 수 있다.
USE sqlDB
UPDATE buyTbl SET price = price * 1.5
SELECT * FROM buyTbl
--============================================================--
-- INSERT
--============================================================--
-- INSERT는 데이터를 삽입하는 명령어 이다.
-- Create 테이블 생성
USE tempDB
create table testTbl1 (id int, username nchar(3), age int);
go
insert into testTbl1 values (1, '희동구', 25)
-- id, name을 입력하고 나이를 입력하고 싶지 않다면 아래와 같이
-- 테이블 이름 뒤에 입력할 열의 목록을 나열해준다.
insert into testTbl1(id, username) values( 2, '아드북')
-- 이 경우 age에는 NULL이 들어간다.
-- 열의 순서를 바꿔서 입력하고 싶을 때도 꼭 열 이름을 나열해줘야 한다.
insert into testTbl1(username, age, id) values('홍명보', 31, 3)
-- drop 해서 테이블 없애고, adventureWorks의 테이블 내용을
-- 복사해보자.
drop table testTbl1
use tempDB
create table testTbl3 (id int, Fname nvarchar(50), Lname nvarchar(50), tel nvarchar(25))
go
insert into testTbl3
select ContactID, FirstName, LastName, Phone
from Adventureworks.Person.Contact
use kss25
go
declare @tablecount nvarchar(100) -- 변수 선언
set @tablecount = '' -- 변수 초기화
-- 이 쿼리를 통해서 변수에 담는다.
select @tablecount =
(
select count(*) from tbl_rep_btinfo
)
print @tablecount -- 정보를 출력해 본다.
select * from tbl_kss_kicbo -- 정보를 파악한다.
--============================================================--
-- SELECT + GROUP BY, HAVING 절
--============================================================--
use sqlDB
go
-- 그룹으로 묶어 주는 역활을 한다.
-- 구매 테이블에서 사용자가 구매한 물품의 개수를 보기 위한 쿼리
select userid, amount from buyTbl order by userid
/* 결과
userid amount
-------- ------
AJH 10
CJC 5
CJC 5
CJC 2
CJC 2
LCS 1
PJY 3
PJY 2
PJY 1
SKH 5
SKH 1
SKH 1
*/
-- SUM() 함수를 사용해서 구매 개수를 합치고 사용자를 하나로 묶어 주는 절
select userid, sum(amount) from buyTbl group by userid
/* 결과
userid
-------- -----------
AJH 10
CJC 14
LCS 1
PJY 6
SKH 7
*/
-- 별칭을 붙여서 컬럼 이름을 정하는 쿼리
select userid as [사용자 아이디], sum(amount) as [총 구매 개수]
from buyTbl group by userid
/* 결과
사용자 아이디 총 구매 개수
-------- -----------
AJH 10
CJC 14
LCS 1
PJY 6
SKH 7
*/
-- 구매액의 총합을 출력해 보자. 구매액은 가격 * 개수이므로,
-- 총합은 sum()을 사용하는 쿼리
select userid as [사용자 아이디], sum(price*amount) as [총 구매 액]
from buyTbl group by userid
/* 결과
사용자 아이디 총 구매 액
-------- -----------
AJH 150
CJC 2120
LCS 200
PJY 1210
SKH 140
*/
--============================================================--
-- SELECT + 집계 함수
--============================================================--
/*
-- AVG() : 평균을 구한다.
-- MIN() : 최소값을 구한다
-- MAX() : 최대값을 구한다.
-- COUNT() : 행의 개수를 센다.
-- COUNT_BIG() : 행의 개수를 센다. 단 결과값이 bigint 형이다.
-- STDEV() : 표준편차를 구한다.
*/
-- 전체 구매자가 구매한 물품의 개수(AMOUNT)의 평균을 구해보자.
select avg(amount) as [평균구매개수] from buyTbl
/* 결과
평균구매개수
-----------
3
*/
-- CAST(), CONVERT() 함수 사용해서 실수로 변환
select avg(amount * 1.0) as [평균구매개수] from buyTbl
/* 결과
평균구매개수
---------------------------------------
3.166666
*/
-- 사용자별 평균 구매 개수를 구해보도록 하자.
-- group by 를 사용한다.
select userid, avg(amount * 1.0) as [평균구매개수] from buyTbl
group by userid
/* 결과
userid 평균구매개수
-------- ---------------------------------------
AJH 10.000000
CJC 3.500000
LCS 1.000000
PJY 2.000000
SKH 2.333333
*/
-- 가장 큰 키와 가장 작은 키의 값을 출력하는 쿼리문
select name, max(height), min(height) from userTbl
/* 결과
메시지 8120, 수준 16, 상태 1, 줄 1
열 'userTbl.name'이(가) 집계 함수나 GROUP BY 절에 없으므로
SELECT 목록에서 사용할 수 없습니다.
*/
-- group by 없이는 별도의 열을 집계 함수와 같이 사용할 수 없다는 메시지
select name, max(height), min(height) from userTbl group by name
/* 결과
name
---------- ------ ------
김남일 183 183
박주영 178 178
박지성 181 181
설기현 178 178
송종국 185 185
안정환 182 182
이영표 181 181
이천수 179 179
조재진 179 179
최진철 142 142
*/
-- 마지막 원하는 결과값
select name, height
from userTbl
where height = (select max(height) from userTbl)
or height = (select min(height) from userTbl)
/* 결과
name height
---------- ------
최진철 142
송종국 185
*/
--============================================================--
-- SELECT + HAVING
--============================================================--
-- 우선 이 쿼리 부터..
select userid as [사용자], sum(price * amount) as [총구매액]
from buyTbl
group by userid
/* 결과
사용자 총구매액
-------- -----------
AJH 150
CJC 2120
LCS 200
PJY 1210
SKH 140
*/
-- 이중에서 1000 이상인 사용자만 출력하고 싶을때 조건을 추가
select userid as [사용자], sum(price * amount) as [총구매액]
from buyTbl
where sum(price * amount) > 1000
group by userid
/* 결과
메시지 147, 수준 15, 상태 1, 줄 1
집계가 HAVING 절이나 SELECT 목록에 포함된 하위 쿼리 내에 없으면
WHERE 절에 나타날 수 없습니다. 또한 집계 중인 열은 외부 참조입니다.
>> 오류 메시지를 보면 집계 함수는 where 절에 나타날 수 없다는 예기이다.
이럴때 having를 사용한다.
*/
-- where error -> having 으로 교체
select userid as [사용자], sum(price * amount) as [총구매액]
from buyTbl
group by userid
having sum(price * amount) > 1000
/* 결과
사용자 총구매액
-------- -----------
CJC 2120
PJY 1210
*/
-- 추가로 총구매액이 적은 것부터 나타낸다.
select userid as [사용자], sum(price * amount) as [총구매액]
from buyTbl
group by userid
having sum(price * amount) > 1000
order by sum(price * amount) asc
/* 결과
사용자 총구매액
-------- -----------
PJY 1210
CJC 2120
*/
--============================================================--
-- SELECT
--============================================================--
-- 가장 간단한 select 구문
select * from userTbl
/* 결과
userID name birthYear addr mobile1 mobile2 height
-------- ---------- ----------- ---- ------- -------- ------
AJH 안정환 1979 강원 NULL NULL 182
CJC 최진철 1975 제주 011 0000000 142
JJJ 조재진 1986 충북 019 3333333 179
*/
--============================================================--
-- SELECT + WHERE + 관계 연산자
--============================================================--
-- where 가 포함된 select 구문
select * from userTbl where name = '박지성'
/* 결과
userID name birthYear addr mobile1 mobile2 height
-------- ---------- ----------- ---- ------- -------- ------
PJS 박지성 1983 서울 011 1111111 181
*/
-- 1980년 이후에 출생하고, 신장이 180 이상인 사람의 아이디와 이름을 조회
select userID, Name from userTbl where birthYear >= 1981 and height >= 180
/* 결과
userID Name
-------- ----------
LYP 이영표
PJS 박지성
*/
-- 1980년 이후에 출생했거나, 신장이 180 이상인 사람의 아이디와 이름을 조회
select userID, Name from userTbl where birthYear >= 1981 or height >= 180
/* 결과
userID Name
-------- ----------
AJH 안정환
JJJ 조재진
KNI 김남일
LCS 이천수
LYP 이영표
PJS 박지성
PJY 박주영
SJK 송종국
*/
--============================================================--
-- SELECT + WHERE + BETWEEN... AND 와 IN()
--============================================================--
-- 신장이 180 ~ 183인 사람을 조회
select name, height from userTbl where height >= 180 and height <= 183
/* 결과
name height
---------- ------
안정환 182
김남일 183
이영표 181
박지성 181
*/
-- 신장이 180 ~ 183인 사람을 조회 ( between )
select name, height from userTbl where height between 180 and 183
/* 결과
name height
---------- ------
안정환 182
김남일 183
이영표 181
박지성 181
*/
-- 키가 정확하게 178, 180, 182 인 사람의 정보만을 조회
select name, height from userTbl where height=178 or height=180 or height=182
/* 결과
name height
---------- ------
안정환 182
박주영 178
설기현 178
*/
--============================================================--
-- SELECT + WHERE + ANY, ALL, SOME 그리고 하위쿼리(SubQuery, 서브쿼리)
--============================================================--
-- 박지성의 보다 키가 큰 사람의 이름과 키를 출력하려면 where 조건에 박지성의
-- 키를 적어 줘야 한다.
select name, height from userTbl where height > 181
/* 결과
name height
---------- ------
안정환 182
김남일 183
송종국 185
*/
-- 이를 쿼리를 통해서 사용할 수 있다.
select name, height from userTbl
where height > (select height from userTbl where name='박지성')
/* 결과
name height
---------- ------
안정환 182
김남일 183
송종국 185
*/
-- 구문 011에 포함된, 내용이 두개 이상이기 때문에 오류가 납니다.
select name, height from userTbl
where height >= (select height from userTbl where mobile1='011')
-- >> 두개의 결과값이 한개 이상이라서 오류가 난다.
-- >> 이때 해결할 것은 ANY를 사용하면 된다.
/* 결과
메시지 512, 수준 16, 상태 1, 줄 1
하위 쿼리에서 값을 둘 이상 반환했습니다
*/
-- ANY 011에 포함된 내용을 모두 사용해서 결과값을 뽑는다.
select name, height from userTbl
where height >= ANY (select height from userTbl where mobile1='011')
/* 결과
name height
---------- ------
안정환 182
최진철 142
조재진 179
김남일 183
이천수 179
이영표 181
박지성 181
박주영 178
송종국 185
설기현 178
*/
-- ALL 을 사용해서 처리
select name, height from userTbl
where height >= ALL (select height from userTbl where mobile1='011')
/* 결과
name height
---------- ------
안정환 182
김남일 183
이영표 181
박지성 181
송종국 185
*/
--
select name, height from userTbl
where height = ANY (select height from userTbl where mobile1='011')
/* 결과
name height
---------- ------
최진철 142
조재진 179
이천수 179
이영표 181
박지성 181
박주영 178
설기현 178
*/
-- ANY, IN 두개 동일한 의미이다.
select name, height from userTbl
where height IN (select height from userTbl where mobile1='011')
/* 결과
name height
---------- ------
최진철 142
조재진 179
이천수 179
이영표 181
박지성 181
박주영 178
설기현 178
*/
--============================================================--
-- SELECT + WHERE + ORDER BY 절
--============================================================--
-- ORDER BY
select name, height from userTbl order by height desc
/* 결과
name height
---------- ------
송종국 185
김남일 183
안정환 182
이영표 181
박지성 181
이천수 179
조재진 179
박주영 178
설기현 178
최진철 142
*/
-- order by 를 두개 사용, desc, asc 두개를 혼합
select name, height from userTbl order by height desc, name asc
/* 결과
name height
---------- ------
송종국 185
김남일 183
안정환 182
박지성 181
이영표 181
이천수 179
조재진 179
박주영 178
설기현 178
최진철 142
*/
--============================================================--
-- SELECT + WHERE + DISTANCE, TOP(N), TABLESAMPLE
--============================================================--
-- 거주지역이 몇 군데인지 출력
select addr from userTbl
/* 결과
addr
----
강원
제주
충북
경북
인천
전북
서울
경기
경기
서울
*/
-- 거주지역에 order by 사용
select addr from userTbl order by addr
/* 결과
addr
----
강원
경기
경기
경북
서울
서울
인천
전북
제주
충북
*/
-- DISTINCT 를 사용해서 중복내용을 삭제
select distinct addr from userTbl
/* 결과
addr
----
강원
경기
경북
서울
인천
전북
제주
충북
*/
심플한 쇼핑몰의 회원 테이블과 구매 테이블에 대한 샘플 입니다.
이 코드를 사용해서 일부 쿼리 문을 테스트 할 것입니다.
-- sqlDB 생성하기
use master
create database sqlDB
go
-- 테이블 생성
create table userTbl -- 사용자 테이블
(
userID nchar(8) not null primary key, -- 사용자 아이디
name nvarchar(10) not null, --이름
birthYear int not null, --출생년도
addr nchar(4) not null, --지역(경기, 서울, 경남, 전북 식으로 2자로)
mobile1 nchar(3), -- 휴대폰의 국번
mobile2 nchar(8), -- 휴대폰의 나머지 전화번호
height smallint -- 신장
)
go
create table buyTbl-- 사용자 구매 테이블
(
num int identity not null primary key, -- 순번
userid nchar(8) not null
foreign key references userTbl(userid), -- 아이디
prodName nchar(6) not null, -- 물품명
groupName nchar(4), -- 분류
price int not null, -- 단가
amount smallint not null -- 수량
)
go
insert into userTbl values(N'PJS', N'박지성', 1983, N'서울', N'011', N'1111111', 181)
insert into userTbl values(N'PJY', N'박주영', 1986, N'경기', N'011', N'2222222', 178)
insert into userTbl values(N'JJJ', N'조재진', 1986, N'충북', N'019', N'3333333', 179)
insert into userTbl values(N'LCS', N'이천수', 1983, N'인천', N'011', N'4444444', 179)
insert into userTbl values(N'AJH', N'안정환', 1979, N'강원', NULL, NULL, 182)
insert into userTbl values(N'KNI', N'김남일', 1977, N'경북', N'016', N'6666666', 183)
insert into userTbl values(N'LYP', N'이용표', 1983, N'전북', NULL, NULL, 178)
insert into userTbl values(N'SKH', N'설기현', 1978, N'서울', N'011', N'8888888', 182)
insert into userTbl values(N'SJK', N'송종국', 1979, N'경기', N'018', N'9999999', 178)
insert into userTbl values(N'CJC', N'최진철', 1975, N'제주', N'019', N'0000000', 185)
go
insert into buyTbl values(N'PJY', N'운동화', NULL, 30, 2)
insert into buyTbl values(N'PJY', N'노트북', N'전자', 1000, 1)
insert into buyTbl values(N'LCS', N'모니터', N'전자', 200, 1)
insert into buyTbl values(N'CJC', N'모니터', N'전자', 200, 5)
insert into buyTbl values(N'PJY', N'청바지', N'의류', 50, 3)
insert into buyTbl values(N'CJC', N'메모리', N'전자', 80, 10)
insert into buyTbl values(N'AJH', N'책', N'서적', 15, 5)
insert into buyTbl values(N'SKH', N'책', N'서적', 15, 2)
insert into buyTbl values(N'SKH', N'청바지', N'의류', 50, 1)
insert into buyTbl values(N'CJC', N'운동화', NULL, 30, 2)
insert into buyTbl values(N'SKH', N'책', N'서적', 15, 1)
insert into buyTbl values(N'CJC', N'운동화', NULL, 30, 2)
go
select * from userTbl
select * from buyTbl

Prev