» 프로그래밍+DB » [노트] SQL Server 2012 T-SQL 기본 1일차

[노트] SQL Server 2012 T-SQL 기본 1일차

강의 개요

강의명: [#10774] SQL Server 2012 기본 쿼리(TSQL 기초) – Microsoft SQL Server 2012 기초

장소: 웹타임

일시: 2014-03-24

자세히: 70-461 Querying Microsoft SQL Server 2012(MOC 10774A)

1일차: SSMS(SQL Server Management Studio)와 친해지고 쿼리 실행 순서를 한번씩 보는 것이 목표

먼저 툴 설명

▼ 다른 사용자로 실행 – Shift + 마우스 오른쪽 클릭

clip_image001

☆ AlwaysOn 고가용성 – 스토리지에 대한… 클러스터링은 아님

☆ SMS에서 도구 -> 옵션 -> 텍스트 편집기에서 줄 번호 표시

☆쿼리 결과 창 단축키는 F5

▼ 쿼리 창에서 명령어가 궁금하면 클릭해서 F1을 누르면 됨

clip_image002

  • 인터넷의 도움말을 로컬에 설치하려면 1시간 정도 걸림. 영문은 좀 더 걸릴 것.
  • 도움말 설정 관리에서 MS 개발 제품군 전체의 도움말을 다 설치할 수 있다.

☆ Codeplex.com 에서 sql server sample databases 로 검색해서 AdventureWorks databases – 2012, 2008R2 and 2008을 받을 수 있음

☆ 최고의 쿼리는 속도가 빠른 것!

SQL Management Studio를 외부에서 접속하거나 IP 주소로 접속하려면?

clip_image003

▲ 외부에서 접속할 때는 이 옵션이 중요

냉장고… ㅎㅎ(서버실의 은어)

clip_image004

▲ 보통 CSV로 저장

clip_image005

▲ GUI로 테이블 만들고 수정 가능하게 하려면 체크 해제(그 이전에는 수정만 됨)

clip_image006

▲ 새 프로젝트

clip_image007

▲ 새 쿼리

clip_image008

▲ 단순히 메뉴바의 [새 쿼리]를 누르면 기타 파일 하단으로 들어가고, 특정 폴더(쿼리)에서 단축 메뉴를 통해 쿼리를 만들 수도 있다.

clip_image009

▲ 개체 탐색기에서 서버의 속성을 켜서 값들을 바꾼 뒤 스크립트를 누르면…

EXEC sys.sp_configure N’show advanced options’, N’1′ RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N’min memory per query (KB)’, N’1023′
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N’show advanced options’, N’0′ RECONFIGURE WITH OVERRIDE
GO

위와 같이 마치 파워쉘 스크립트처럼 구문으로 빼준다! wow…

☆ 툴은 자꾸자꾸 써봐야 익숙해진다

clip_image010

▲ 프로젝트 내 쿼리 폴더에 있는 sql파일은 위에 있는 ‘연결’을 통해 접근가능한 데이터베이스에서 쿼리를 날리는 것

기타 파일의 sql 파일은 그런 인증이 없이 어떤 데이터베이스와도 연결 가능

SQL Azure

  • 백업 , 복구, 클러스터링, 미러링 -> MS가 해주겠다는 의미
  • 돈이 많으면 얼마든지 ^^ 대신 돈이 없으면.. ㅠㅠ
  • IP 정보를 주지 않고 DNS 주소를 줌
  • 로컬에 있는 서버: On-Premise (클라우드가 아니라 우리 회사에…)

T-SQL

  • Transact-SQL
    • MS 전용(사투리)
  • IBM에서 1970년대에 개발
    • Oracle도 IBM에서 나온 사람들이 만들었다고 함.(PL/SQL)
    • 우후죽순처럼 생기는 SQL 때문에 ANSI와 ISO에서 쿼리문의 표준을 정함
    • 어떤 DB든 ANSI SQL(표준어)은 거의 다 먹음

오늘 배울 분량은 ‘안녕’ 정도…

DML – Data Manipulation Language

  • 데이터를 조작하는 언어
  • SELECT, INSERT, UPDATE, DELETE

DDL – Data Definition Language

  • 정의하는 언어
  • CREATE, ALTER, DROP

DCL – Data Control Language

  • 제어하는 언어
  • GRANT, REVOKE, DENY

SELECT 안에서…

  • IN, BETWEEN, LIKE
  • 비교
  • AND, OR, NOT (그리고, 또, 반대)
  • +, -, *, /, %
  • + (글씨와 글씨를 붙일 때)

앞으로 배울 것

  • 함수(다양함)
  • 변수(DECLARE 명령으로…)
  • 연산(Expression)
  • 흐름 제어
  • 트랜젝션
  • 주석
  • GO 구문(단위별로 끊을 때)
  • NULL…

데이터를 가지고 오는 구문

  • SELECT 뭘 / 사과
  • FROM 어디서 / 이마트에서
  • WHERE 무엇만 / 아오리사과냐 빨간사과냐 (FROM 안에 있는 조건)
  • GROUP BY 큰거? 작은거!
  • HAVING 그룹핑
  • ORDER BY 그룹핑에 대한 조건

SQL 서버에서 찾는 순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

무조건 FROM이 첫번째. 2~4번이 있으면 5번, 6번 순으로 진행

☆ ORDER BY는 제일 마지막에 실행된다.

쓸 때는 ?

SELECT ____ FROM ____ WHERE ____ GROUP BY _____ HAVING ____ ORDER BY ____

USE

  • 어떤 데이터베이스를 쓸지 정의

실습

10774A_03_PRJ\10774A_03_PRJ\ 폴더의 프로젝트 열기

clip_image011

▲ 특정 데이터베이스를 선택해줘야 거기서 선택이 됨. 또는

–USE TSQL2012; (TSQL2012 데이터베이스를 쓰겠습니다!)
–GO

위 명령의 주석을 풀어주면 됨

SELECT와 FROM이라는 파란색 글씨는 예약어. 키워드.

  • SELECT는 화면에 표시하라는 명령
  • SELECT 다음에 오는 것을 화면에 표시해라.
  • SELECT 10 -> 10 표시.
  • 콤마로 구분
  • 세미콜론을 찍으면 문장의 끝을 표시할 수 있음.
    • DB 엔진은 세미콜론을 만나기 전까지 한줄로 봄
    • 세미콜론을 붙이는 버릇을 들이면 좋다

FROM 스키마명.테이블명

  • 우리는 스키마를 잘 안쓴다.
  • 외국에서는 이렇게 쓴다

SELECT 다음에 컬럼명을 적어주는 것을 권장

  • ‘*’ 는 지양

스칼라

  • Scalar
  • 1등만 기억하는 더러운 세상
  • 맨 첫번째에 오는 녀석, 하나만 값을 리턴
  • MS에서는 Scalar 값을 반환한다고 하지 한 개의 값만… 이라고 설명하지 않는다.
  • 행과 열 중에서 첫번째 행의 첫번째 컬럼만 가져옴

clip_image012

▲ 바로 실행하는 버릇보다는 구문 분석을 클릭한 후 문제가 없으면 실행하는 버릇을 들이자.

clip_image013

▲ 앞뒤 이름 따로따로 출력

clip_image014

▲ 이름을 붙였다!

clip_image015

▲ 다른 구문보다 FROM ~~~ 로 DB를 지정해준 다음에 SELECT 구문을 적으니 intellisense가 동작

clip_image016

▲ 스칼라 연산( empid + 1 )이기 때문에 ‘열 이름 없음’으로 나타난다.

중복 제거

DISTINCT

  • 약간의 주의사항이 있다.

컬럼: 열(세로)

Aliases

컬럼명 AS 별명 (명시적 표현임) 또는 별명 = 컬럼명

이렇게 쓸 수 있음. 테이블에 대한 별칭도 가능. 명시적으로 표현하는 것이 좋다.

주의점

  • 실행 순서에 따라 동작하지 않을 수 있다.

clip_image017

▲ 실습 ^^ 좌측 하단에 NAME 보이시죠?

clip_image018

▲ 하단에 FROM 테이블명 AS e; 라고 적었기 때문에 SELECT 문에서 e. 라고 적으면 intellisense 동작

CASE 연산식

이것도 스칼라값을 줍니다

논리적으로 무엇인가를 구분해서 출력할때!

범위가 아니라 특정한 값을 콕 찝었을 때 CASE를 함

clip_image019

▲ 밑의 텍스트 파일들은 실습의 결과가 이렇게 나와야 한다는 것을 것을 보여줌

clip_image020

▲ 그냥 SELECT *로 데이터를 가져올 때와는 달리 내가 원하는 순서로 정렬해서 볼 수 있다. 그래서 명시적으로 컬럼명을 적어주면 좋다.

clip_image021

▲ 위와 같이 Mexico가 중복되는데…

clip_image022

▲ DISTINCT를 사용하면 중복 제거가 가능

clip_image023

▲ 맨 우측 Company Name 컬럼명을 다 표시하려면

  • ‘ ‘로 묶거나 [ ] 로 묶는다
    • ‘ ‘ 로 묶으면 대소문자를 구분함

clip_image024

▲ SELECT 구문에서 콤마를 찍지 않으니 컬럼명은 Country이지만 실제 데이터는 city에서 가져옴(우리가 원하지 않은 결과)

clip_image025

▲ select city를 하면 위와 동일한 결과

★ 그렇다면?

clip_image026

▲ 콤마로 컬럼명을 구분해주면 위와 같이 제대로 동작.

(컬럼명을 콤마로 구분하지 않으면 자동으로 별칭으로 인식 – 컬럼명이 실제 있는 이름이면)

clip_image027

▲ 마치 프로그래밍 같네. select 구문의 컬럼명을 다 적고 나서 쉼표를 꼭! 붙이자.

CASE 구문 사용법

CASE

WHEN 컬럼명 = X THEN ‘문자열’

END

thanks to 김병진 이사님

이것도 살펴보세요!

Visual Studio Code에서 JAVA Compile

Language Support for Java(TM) by Red Hat File -> Open Folder New File name.java 로 …

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.