목록SQL (44)
S_pot
-- deptno컬럼을 not null로 설정 후 기본키로 지정 alter table dept alter column deptno char(3) not null; alter table dept add constraint dept_pk primary key(deptno);
VARCHAR 와 CHAR 차이 비교 CHAR(s) - 고정 길이 문자열 정보 - s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 - s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다. VARCHAR(s) - CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현) - s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트 - s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. CHAR ..
USE sqlDB; CREATE TABLE smartTbl ( num int, -- 사원번호 emp NCHAR(3), manager int, -- 관리자의 사원번호 department NCHAR(3) ); INSERT INTO smartTbl VALUES(1,'나사장',NULL, NULL); INSERT INTO smartTbl VALUES(2,'김재무',1, '재무부'); INSERT INTO smartTbl VALUES(3,'김부장',2, '재무부'); INSERT INTO smartTbl VALUES(4,'이부장',2, '재무부'); INSERT INTO smartTbl VALUES(5,'우대리',4, '재무부'); INSERT INTO smartTbl VALUES(6,'지사원',4, '재무부');..
-- OUTER JOIN -- 외부조인: 조인의 조건에 만족되지 않는 행까지 포함 USE sqlDB; SELECT U.userid, U.name, B.prodName, U.addr, U.mobile1 + U.mobile2 AS [연락처] FROM userTbl U LEFT OUTER JOIN buyTbl B -- LEFT OUTER JOIN: 왼쪽 테이블의 것은 모두 출력 ON U.userid = b.userid ORDER BY u.userid;
-- INNER JOIN 적용 전 SELECT * FROM buyTbl WHERE userid = 'JYP'; SELECT * FROM userTbl WHERE userid = 'JYP'; -- INNER JOIN: 결과 두가지를 합쳐서 출력하는 것 -- INNER JOIN 적용 USE sqlDB SELECT * FROM buyTbl INNER JOIN userTbl ON buyTbl.userid = userTbl.userid -- 이와같이 명칭을 구분해주어야 한다. WHERE buyTbl.userid = 'JYP'; -- INNER JOIN을 명시하지 않고 적용(오라클방식) SELECT U.userID as [아이디], U.name as [이름], B.prodName as [제품], U.addr as ..
-- JSON 데이터: 데이터를 글자형태로 표현 USE sqlDB; SELECT name, height FROM userTbl WHERE height >= 180 FOR JSON AUTO; -- JSON을 테이블로 변환 DECLARE @json VARCHAR(MAX) SET @json=N' { "userTBL" : [ {"name": "임재범", "height":182}, {"name": "이승기", "height":182}, {"name": "성시경", "height":186} ] }' SELECT ISJSON(@json); SELECT JSON_QUERY(@json, '$.userTBL[0]'); SELECT JSON_VALUE(@json, '$.userTBL[0].name'); SELECT * FR..
-- PIVOT/ UNPIVOT 연산자 -- 샘플데이터 생성 USE tempdb CREATE TABLE pivotTest (uName NCHAR(3), season NCHAR(2), amount INT ); -- 데이터 입력 INSERT INTO pivotTest VALUES ('김범수', '겨울', 10), ('윤종신', '여름', 15), ('김범수', '가을', 25), ('김범수', '봄', 3), ('김범수', '봄', 37), ('윤종신', '겨울', 40), ('김범수', '여름', 14), ('김범수', '겨울', 22), ('윤종신', '여름', 64); SELECT * FROM pivotTest; -- PIVOT ( 집계함수(열) --FOR 새로운 열로 변경할 열이름 --IN (열 목록..
-- max 형의 데이터 형식을 이용해서 대량의 데이터를 입력 -- max형의 데이터 정의 use [tempdb]; CREATE TABLE maxTbl ( col1 VARCHAR(MAX), col2 NVARCHAR(MAX), ); -- 기존의 각각 1,000,000(백만)개 문자의 대량 데이터를 입력 INSERT INTO maxTbl VALUES( REPLICATE('A',1000000), REPLICATE('가',1000000)); -- 입력된 값의 크기를 확인 SELECT LEN(col1) AS [VARCHAR(MAX)], LEN(col2)AS [NVARCHAR(MAX)] FROM maxTbl; -- 백만이 입력되지 않고, VARCHAR는 8000, NVCHAR는 4000만 들어간다. -- VARCH..
-- 변수의 사용 -- 변수 선언: DECLARE @변수이름 데이터형식; -- 변수에 값 대입: SET @변수이름 = 변수의 값; -- 변수의 값 출력: SELECT @변수이름; USE sqlDB; DECLARE @myVar1 INT; DECLARE @myVar2 SMALLINT, @myVar3 DECIMAL(5,2); DECLARE @myVar4 NCHAR(20); SET @myVar1 = 5; SET @myVar2 = 3; SET @myVar3 = 4.25; SET @myVar4 = '가수 이름==> ' ; SELECT @myVar1 ; SELECT @myVar2 + @myVar3; SELECT @myVar4, Name FROM userTbl WHERE height >180 ;
-- 날짜와 시간 데이터 형식 SELECT CAST('2020-10-19 12:35:29.123' AS DATETIME) AS 'DATETIME' SELECT CAST('2020-10-19 12:35:29.1234567 +12:15' AS DATETIME2(7)) AS 'DATETIME2' SELECT CAST('2020-10-19 12:35:29.1234567 +12:15' AS DATE) AS 'DATE' SELECT CAST('2020-10-19 12:35:29.1234567 +12:15' AS TIME(7)) AS 'TIME' SELECT CAST('2020-10-19 12:35:29.1234567 +12:15' AS DATETIMEOFFSET(7)) AS 'DATETIMEOFFSET' SELEC..