728x90

CONVERT 함수
> 데이터형식을 다른 데이터로 변환한다

CONVERT(데이터타입(사이즈), 변경대상, 변경형태)

VARCHAR 로 변환 -- SELECT CONVERT(VARHAR(20), 컬럼) 
INT로 변환 -- CONVERT(INT, 컬럼)
CHAR로 변환 -- CONVERT (CHAR, 컬럼)

예제
--테이블에서 나이 컬럼을 INT 에서 CHAR로 변환
SELECT CONVERT(VARCHAR(20), AGE) AS 나이 FROM TABLE

 

변환형태 정리

Format # 예제 쿼리 샘플 결과
0 SELECT CONVERT(NVARCHAR, GETDATE(), 0) Aug 23 2019 1:39PM
1 SELECT CONVERT(NVARCHAR, GETDATE(), 1) 08/23/19
2 SELECT CONVERT(NVARCHAR, GETDATE(), 2) 19.08.23
3 SELECT CONVERT(NVARCHAR, GETDATE(), 3) 23/08/19
4 SELECT CONVERT(NVARCHAR, GETDATE(), 4) 23.08.19
5 SELECT CONVERT(NVARCHAR, GETDATE(), 5) 23-08-19
6 SELECT CONVERT(NVARCHAR, GETDATE(), 6) 23 Aug 19
7 SELECT CONVERT(NVARCHAR, GETDATE(), 7) Aug 23, 19
8 or 24 or 108 SELECT CONVERT(NVARCHAR, GETDATE(), 8) 13:39:17
9 또는 109 SELECT CONVERT(NVARCHAR, GETDATE(), 9) Aug 23 2019 1:39:17:090PM
10 SELECT CONVERT(NVARCHAR, GETDATE(), 10) 08-23-19
11 SELECT CONVERT(NVARCHAR, GETDATE(), 11) 19/08/23
12 SELECT CONVERT(NVARCHAR, GETDATE(), 12) 190823
13 또는 113 SELECT CONVERT(NVARCHAR, GETDATE(), 13) 23 Aug 2019 13:39:17:090
14 or 114 SELECT CONVERT(NVARCHAR, GETDATE(), 14) 13:39:17:090
20 또는 120 SELECT CONVERT(NVARCHAR, GETDATE(), 20) 2019-08-23 13:39:17
21 or 25 or 121 SELECT CONVERT(NVARCHAR, GETDATE(), 21) 2019-08-23 13:39:17.090
22 SELECT CONVERT(NVARCHAR, GETDATE(), 22) 08/23/19 1:39:17 PM
23 SELECT CONVERT(NVARCHAR, GETDATE(), 23) 2019-08-23
101 SELECT CONVERT(NVARCHAR, GETDATE(), 101) 08/23/2019
102 SELECT CONVERT(NVARCHAR, GETDATE(), 102) 2019.08.23
103 SELECT CONVERT(NVARCHAR, GETDATE(), 103) 23/08/2019
104 SELECT CONVERT(NVARCHAR, GETDATE(), 104) 23.08.2019
105 SELECT CONVERT(NVARCHAR, GETDATE(), 105) 23-08-2019
106 SELECT CONVERT(NVARCHAR, GETDATE(), 106) 23 Aug 2019
107 SELECT CONVERT(NVARCHAR, GETDATE(), 107) Aug 23, 2019
110 SELECT CONVERT(NVARCHAR, GETDATE(), 110) 08-23-2019
111 SELECT CONVERT(NVARCHAR, GETDATE(), 111) 2019/08/23
112 SELECT CONVERT(NVARCHAR, GETDATE(), 112) 20190823
113 SELECT CONVERT(NVARCHAR, GETDATE(), 113) 23 Aug 2019 13:39:17.090
120 SELECT CONVERT(NVARCHAR, GETDATE(), 120) 2019-08-23 13:39:17
121 SELECT CONVERT(NVARCHAR, GETDATE(), 121) 2019-08-23 13:39:17.090
126 SELECT CONVERT(NVARCHAR, GETDATE(), 126) 2019-08-23T13:39:17.090
127 SELECT CONVERT(NVARCHAR, GETDATE(), 127) 2019-08-23T13:39:17.090
130 SELECT CONVERT(NVARCHAR, GETDATE(), 130) 22 ذو الحجة 1440 1:39:17.090P
131 SELECT CONVERT(NVARCHAR, GETDATE(), 131) 22/12/1440 1:39:17.090PM

출처 : https://docs.microsoft.com/ko-kr/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

728x90
728x90

DECLARE 변수 선언

>형식
DECLARE @변수명 데이터형식;
변수 범위는 선언 시점부터 저장 프로시저가 끝날 때까지 계속됨

>변수 값 설정은 SET 문을 사용
DECLARE @ID VARCHAR(20);

SET @ID = 'IDIDID';

>선언과 동시에 변수 값 대입 가능
DECLARE @ID VARCHAR(20) = 'IDIDID';

>테이블 형식으로 선언 가능
DECLARE @USER AS TABLE

ID VARCHAR(20)
NAME VARCHAR(20)
)

728x90
728x90

update 명령문은 꼭 트랜잭션 안에서 사용해야함 where 절을 사용하지 않는 경우 테이블에 있는 모든 칼럼을 바꿀 수 도 있음

> 트랜잭션 : 하나의 처리를 여러 단계로 나누는 기능
Begin tran --트랜잭션 시작
Rollback tran --트랜잭션 이전상태로 롤백
Commit tran --트랜잭션 완료

> 사용문법
Update [변경될 테이블명] Set  [컬럼1] = '내용' 
Update [변경될 테이블명] Set  [컬럼1] = '내용'  where 조건문

> 다른테이블 join 후 update 하기
Update [변경될 테이블명]
Set  [컬럼1] = A2.[컬럼1],
      [컬럼2] = A2.[컬럼2] 
From 조인 테이블 A2
Where 변경될 테이블. 조건컬럼 = A2.조건컬럼

 

> 일반적인 join처럼 사용하기

Update [변경될 테이블]

Set  [컬럼1] = A2.[컬럼1] , [컬럼2] = A2.[컬럼2] 

From [조인테이블1] A2 

join [조인테이블2] A3 

on  A2.[컬럼] = A3.[컬럼] 

Where [변경될테이블].[조건컬럼] = A2.[조건컬럼]

728x90

'MS SQL' 카테고리의 다른 글

MS SQL - CONVERT 함수로 데이터 변환하기  (0) 2022.04.19
MS SQL - DECLARE 변수 선언  (0) 2022.04.19
ms SQL-엑셀 업로드 방법 (데이터 가져오기)  (0) 2022.04.14
SQLD transaction 관리  (0) 2021.11.10
SQL rollup, cube 함수  (0) 2021.11.10
728x90

테이블 우측클릭 >  태스크> 데이터 가져오기를 클릭하면 > SQL 데이터 마법사 창이 뜬다

 

 

 

불러올 데이터 엑셀 파일을 선택한다

 

가져올 대상을 선택한다

 

728x90

'MS SQL' 카테고리의 다른 글

MS SQL - DECLARE 변수 선언  (0) 2022.04.19
ms sql - update , 다른 테이블과 join 해서 사용하기  (0) 2022.04.18
SQLD transaction 관리  (0) 2021.11.10
SQL rollup, cube 함수  (0) 2021.11.10
SQLD 서브쿼리  (0) 2021.11.09
728x90

트랜잭션이란?

데이터 처리의 한 단위이다

하나의 트랜잭션은 all or noting 방식으로 처리된다.

 

트랜잭션의 특징

1. 원자성 

한 트랜잭션 내의 모든 연산들이 완전히 수행되거나 전혀 수행되지 않음 ( All or Nothing ) 을 의미함

 

2. 일관성 

어떤 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가졌다면 트랜잭션이 수행된 후에 데이터베이스는 또 다른 일관된 상태를 가짐

 

3. 고립성 

한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 함
다수의 트랜잭션들이 동시에 수행되더라도 그 결과는 어떤 순서에 따라 트랜잭션들을 하나씩 차례대로 수행한 결과와 같아야 함

 

4. 지속성

일단 한 트랜잭션이 완료되면 이 트랜잭션이 갱신한 것은 그 후에 시스템에 고장이 발생하더라도 손실되지 않음

 

commit

: transaction (insert, update, delete) 작업내용을 db에 저장

* 자동커밋 : create alter drop renam truncate DDL문

 

rollback

: transaction (insert, update, delete) 작업내용을 취소

이전에 commit 한 곳 까지만 복구됨

 

예약어

savepoint : savepoint 로 저장해 놓은 곳 까지는 rollback시적용되지 않음

 

728x90

'MS SQL' 카테고리의 다른 글

ms sql - update , 다른 테이블과 join 해서 사용하기  (0) 2022.04.18
ms SQL-엑셀 업로드 방법 (데이터 가져오기)  (0) 2022.04.14
SQL rollup, cube 함수  (0) 2021.11.10
SQLD 서브쿼리  (0) 2021.11.09
SQL - 트랜잭션  (0) 2021.11.03
728x90

* roll up 함수 :

묶인 컬럼을 기준으로 합계, 소계를 구할 수 있도록 하는 함수

group by 컬럼에 대한 subtotal을 만들어준다

 

hiredate, job 데이터를 볼 때 hiredate가 앞에 있으므로 hiredate 기준으로 rollup 함수가 사용됨

아래와 같이 그룹핑이 되어 데이터를 볼 수 있다.

 

예제) 

select hiredate, job, count(*) from emp
group by rollup(hiredate,job)
order by hiredate;

 

 

* cube 함수 : 함수에 제시한 컬럼에 대한 가능한 모든 집계를 계산한다.

예를 들어 부서와 직업을 cube로 변환하면, 부서별, 직업별, 부서별 직업별 합계가 조회된다.

 

예제)

select deptno, job, sum(sal)
from emp
group by cube(deptno,job);

 

 

728x90

'MS SQL' 카테고리의 다른 글

ms SQL-엑셀 업로드 방법 (데이터 가져오기)  (0) 2022.04.14
SQLD transaction 관리  (0) 2021.11.10
SQLD 서브쿼리  (0) 2021.11.09
SQL - 트랜잭션  (0) 2021.11.03
SQL 명령어 분류 - DDL, DML, DCL, TCL  (0) 2021.11.03
728x90

서브쿼리란 ? 쿼리 안의 쿼리를 말함/ 조건 2개를 보여줘야할 때 사용

 

단일행 서브쿼리 : 수행결과가 오직 하나의 로우만 반환하는 서브쿼리

 

예제)

show user
//scott의 근무 부서는 어디?
//scott은 emp. 근무부서는 dept에 있을때
select deptno,dname from dept
where deptno=(select deptno from emp
              where ename='SCOTT');

//scott와 같은 부서에서 근무하는 직원이름 부서는?
select ename, deptno from emp
where deptno=(select deptno from emp where ename='SCOTT');

//s와 동일 직급가진 직원이름은?
select ename,job from emp
where job=(select job from emp where ename='JONES');

//s 급여와 동일하거나 더 많이 받는 사원명, 급여는?
select sal from emp where ename='SCOTT';
select ename,sal from emp
where sal>=(select sal from emp where ename='SCOTT');

다중행 서브쿼리 : 서브쿼리에서 반환되는 행이 하나 이상인 경우

다중행 연산자와 함께 사용해야함

-in : 비교조건이 서브쿼리 결과중 하나라도 일치할 때 참

-any, some : 결과와 하나 이상이 일치하면 참

-all : 모두 일치하면 참

-exist : 만족하는 값이 하나라도 존재하면 참

 

예제) 

//월급이 3000이상인 직원이름, 월급, 부서

select ename,sal,deptno from emp
where sal>=(select distinct sal from emp where sal=3000);

//부서별로 급여를 많이 받는사원

select deptno, max(sal) from emp 
group by deptno;

//직급이 매니저인 부서번호, 부서명, 위치
select deptno, dname,loc
from dept
where deptno in (select deptno from emp where job='MANAGER');

//30번 부서 최고 월급자보다 많이 받는 사람
select ename,sal from emp
where sal> (select max(sal) from emp where deptno=30);

728x90

'MS SQL' 카테고리의 다른 글

SQLD transaction 관리  (0) 2021.11.10
SQL rollup, cube 함수  (0) 2021.11.10
SQL - 트랜잭션  (0) 2021.11.03
SQL 명령어 분류 - DDL, DML, DCL, TCL  (0) 2021.11.03
SQL- 그룹함수(group by)  (0) 2021.11.03
728x90

트랜잭션 - 데이터베스의 작업을 처리하는 단위

 

트랜잭션의 특징

1. 원자성  : 데이터 베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다.

트랜잭션의 처리가 완전히 끝나지 않은 경우 실행되지 않은 상태

 

2. 일관성 : 실행결과가 모순되지 않아야 한다. 실행 후에도 일관성이 유지되어야 한다.

 

3. 고립성 : 트랜잭션 실행 중에는 다른 트랜잭션이 접근 불가, 부분적인 실행결과를 다른 트랜잭션이 볼수 없다.

 

4. 영속성 : 트랜잭션 실행은 영구적 보장되어야 한다.

728x90

'MS SQL' 카테고리의 다른 글

SQL rollup, cube 함수  (0) 2021.11.10
SQLD 서브쿼리  (0) 2021.11.09
SQL 명령어 분류 - DDL, DML, DCL, TCL  (0) 2021.11.03
SQL- 그룹함수(group by)  (0) 2021.11.03
SQL join (inner join, outer join, natural join, self join)  (0) 2021.11.02
728x90

DDL(Data Definition Language)
관계형 데이터베이스의 구조를 정의하는 언어

 -- CREATE : 생성(데이터베이스 객체)
create table emp(

empno number(10) primary key,

ename number(2),

sal number(6));


 -- ALTER : 변경(객체의 속성)

 -- RENAME : 이름 변경(데이터베이스 객체)

 -- DROP : 삭제(데이터베이스내 객체)

 -- TRUNCATE : 삭제(테이블 내 테이블)

 



DML(Data Manipulation Language)
테이블에서 데이터를 입력, 수정,삭제, 조회

 -- DELETE

 -- UPDATE

 -- SELECT

 -- INSERT

예시)
​insert into emp(empno, ename) values(1000, 'name');

** values 라고 써야함, 문자열 입력시 '' 작은따옴표

 

 


​DCL(Data Control Language)
데이터 베이스 사용자에게 권한을 부여하거나 회수한다.


 - GRANT

 - REVOKE




TCL(Transaction Control Language)
트랜잭션을 제어하는 명령어 이다.


 - COMMIT

 - ROLLBACK

728x90

'MS SQL' 카테고리의 다른 글

SQLD 서브쿼리  (0) 2021.11.09
SQL - 트랜잭션  (0) 2021.11.03
SQL- 그룹함수(group by)  (0) 2021.11.03
SQL join (inner join, outer join, natural join, self join)  (0) 2021.11.02
SQL 주요함수-숫자함수  (0) 2021.10.27
728x90

group by 함수 :

행을 그룹화하여 합계 평균, 최대 최소값 계산가능

having 조건문 사용 가능

order by로 정렬 가능

별칭사용 불가, 반드시 컬럼명을 사용해야함

 

-sum : 그룹의 합

예시)emp 테이블에서 직업별 인원수 구하기


select job, count(job)
from emp
group by job;

예시)emp 테이블에서 월급별(10000이상) 인원수 구하기

select sum(sal)
from emp
group by deptno
having sum(sal)>10000;

 

-avg : 그룹의 평균

 

-max : 그룹의 최대값

-min : 그룹의 최소값

 

-count :로우 개수를 구함(null은 카운트x)

예시) 10번 부서 소속 사원중에서 커미션을 받는 사원의 수 구하기

select deptno,count(comm)
from emp
group by deptno
having deptno=10;

*중복 값을 제거하는 distinct와 함께 사용 가능

select count(distinct job) 업무수
from emp;

728x90

'MS SQL' 카테고리의 다른 글

SQL - 트랜잭션  (0) 2021.11.03
SQL 명령어 분류 - DDL, DML, DCL, TCL  (0) 2021.11.03
SQL join (inner join, outer join, natural join, self join)  (0) 2021.11.02
SQL 주요함수-숫자함수  (0) 2021.10.27
SQLD select로 데이터 추출하기  (0) 2021.10.27

+ Recent posts