목록SQL (44)
S_pot
-- 멤버테이블을 정의하고, 데이터 입력 USE sqlDB; SELECT userID, name, addr INTO memberTBL FROM userTbl; SELECT * FROM memberTBL; -- 변경테이블을 정의하고 데이터 입력 CREATE TABLE changeTBL ( changeType NCHAR(4), -- 변경사유 userID char(8), name nvarchar(10), addr nchar(2)); GO INSERT INTO changeTBL VALUES ('신규가입', 'CHO', '초아', '미국'), ('주소변경', 'LSG', 'null', '제주'), ('주소변경', 'LJB', 'null', '영국'), ('회원탈퇴', 'BBK', 'null', 'null'), (..
USE tempdb; -- Kim을 모두 삭제 DELETE testTbl6 WHERE Fname = 'Kim'; -- 상위 5건만 삭제 DELETE TOP(5) testTbl6 WHERE Fname = 'Kim';
Fname이 Kim인 사람의 Lname을 없음으로 수정한다. UPDATE testTBL7 SET Lname = '없음' WHERE Fname = 'Kim'; SELECT * FROM testTbl7 WHERE Fname = 'Kim'; 전체 테이블의 내용을 변경하고 싶을 때 현재 단가의 1.5배 인상 USE sqlDB; UPDATE buyTbl SET price = price * 1.5;
방법1 USE tempdb; CREATE TABLE testTbl6 ( id int, Fname nvarchar(50), Lname nvarchar(50), ); INSERT INTO testTbl6 SELECT [BusinessEntityID],[FirstName],[LastName] FROM [AdventureWorks].[Person].[Person]; 방법2 USE tempdb; SELECT [BusinessEntityID] AS id,[FirstName] AS Fname,[LastName] AS Lname INTO testTbl7 -- 방법1보다 간단하게 작성가능 FROM [AdventureWorks].[Person].[Person];
USE tempdb; CREATE TABLE testTbl3 (id int, userName nchar(3), age int, nation nchar(4) DEFAULT '대한민국'); GO SELECT * FROM testTbl3; CREATE SEQUENCE idSEQ START WITH 1 -- 시작값 INCREMENT BY 1; -- 증가값 GO INSERT INTO testTbl3 VALUES (NEXT VALUE FOR idSEQ, '지민', 25, DEFAULT); SELECT * FROM testTbl3; INSERT INTO testTbl3 VALUES (11, '쯔위', 25, '대만'); ALTER SEQUENCE idSEQ RESTART WITH 12; -- 시작값을 다시 설정 IN..
강제로 IDENTITY(ID)값을 입력하고 싶을 때 SET IDENTITY_INSERT testTbl2 ON; -- 강제로 ID값 입력 GO INSERT INTO testTbl2(id, userName, age, nation) VALUES (11,'쯔위', 18, '대만'); SELECT * FROM testTbl2; 자동으로 IDENTITY(ID)값이 증가 SET IDENTITY_INSERT testTbl2 OFF; --자동으로 ID값 증가 INSERT INTO testTbl2 VALUES ('도우너', 25, DEFAULT); SELECT * FROM testTbl2; INSERT INTO testTbl2 VALUES ('또치', 25, DEFAULT);
SELECT [groupName] FROM buyTbl; -- GROUP BY: 그룹별로 지정해줌, DISTINCT와 결과는 비슷하지만 -- 개념은 다르다. SELECT [groupName] FROM buyTbl GROUP BY [groupName]; SELECT [groupName], price, amount FROM buyTbl; -- GROUP BY: 그룹별로 지정해줌, DISTINCT와 결과는 비슷하지만 -- 개념은 다르다. SELECT groupName, SUM(price*amount) AS 합 FROM buyTbl GROUP BY [groupName]; ROLLUP 총합계를 표시 SELECT groupName, SUM(price*amount) AS 합 FROM buyTbl GROUP BY RO..
-- 사용자별 총 구매액 SELECT userID AS [사용자], SUM(price*amount) AS [총구매액] FROM buyTbl GROUP BY userID; -- 총 구매액이 1000이상인 사용자에게만 사은품 증정(오답) SELECT userID AS [사용자], SUM(price*amount) AS [총구매액] FROM buyTbl -- WHERE SUM(price*amount) > 1000 -- 집계함수는 WHERE절에 쓰일 수없다. GROUP BY userID; HAVING절을 사용 -- 총 구매액이 1000이상인 사용자에게만 사은품 증정 SELECT userID AS [사용자], SUM(price*amount) AS [총구매액] FROM buyTbl GROUP BY userID HAV..
SELECT * INTO buyTbl2 FROM buyTbl; --buyTbl을 buyTbl2로 복사 SELECT * FROM buyTbl2; SELECT * FROM buyTbl; SELECT userID, prodName INTO buyTbl3 FROM buyTbl; --지정한열만 일부복사 SELECT * FROM buyTbl3; 그러나 기본키(PK)나 외래키(FK)는 복사되지 않는다.
SELECT userID,name, birthYear FROM userTBL ORDER BY birthYear SELECT userID,name, birthYear FROM userTBL ORDER BY birthYear OFFSET 4 ROWS; -- 4줄을 뛰어넘음, OFFSET은 반드시 ORDER BY절을 사용후 적용해야한다. SELECT userID,name, birthYear FROM userTBL ORDER BY birthYear OFFSET 4 ROWS FETCH NEXT 3 ROWS ONLY; -- 출력될 행의 수를 지정