레이블이 DB인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DB인 게시물을 표시합니다. 모든 게시물 표시

12월 12, 2016

SQL DML(Data Manipulation Language) tag:


SELECT

  • Syntax
  • SELECT [table.]attrib1, [table.]attrib2, ...
    FROM table1, table2, ...
    [WHERE search_condition]
    [GROUP BY attrib1, attrib2, ...]
    [HAVING search_condition]
    [ORDER BY order_expression[ASC|DESC]];
  • 조건 연산자
    • 비교연산자 : =, =>, =<, >, <, IN 등

    • 논리연산자 : AND, OR, NOT 등

    • LIKE연산자 : *(%), ?(_), # 등의 기호를 사용해 문자열을 검색

    • BETWEEN : 특정 값의 사이에 있는 튜플을 검색

  • group funtions :  WHERE  SELECT 와 함께 사용되어 표시할 튜플을 선택하는 기준이 된다면,  HAVING  GROUP BY 와 함께 사용되어 그룹을 묶는 기준이 된다. 하나의 그룹을 모집합으로 사용되는 함수로, 일반적으로  HAVING  절과 함께 사용되어 그룹에 대한 조건을 지정한다.
    •  COUNT(attrib 그룹별 튜플의 수를 구한다
    •  MAX(attrib 그룹별 최대값을 구한다
    •  MIN(attrib 그룹별 최소값을 구한다
    •  SUM(attrib 그룹별 합계를 구한다
    •  AVG(attrib 그룹별 평균을 구한다

INSERT

  • Syntax
  • INSERT INTO table_name(attrib1, attrib2, ...)
    VALUES(value1, value2, ...);
  • 테이블의 모든 속성 값을 입력하는 경우에는 table_name 뒤의 속성명을 생략할 수 있다.
  •  SELECT  문을 사용하여 추출한 검색 결과를 삽입할 수도 있다.

DELETE

  • Syntax
  • DELETE FROM table_name
    WHERE condition;
  •  WHERE  절을 생략하는 경우 해당 테이블의 모든 튜플이 삭제된다.

UPDATE

  • Syntax
  • UPDATE table_name
    SET attrib1=value1, attrib2=value2, ...
    WHERE condition;

reference

11월 25, 2016

SQL(Structured Query Language) 종류


SQL이란

RDBMS(Relational DataBase Management System)을 관리하기 위해 설계된 특수한 목적의 프로그래밍 언어로 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화형 프로그래밍 언어. RDBMS에서 데이터베이스 스키마 생성과 수정, 자료 검색과 관리, 데이터베이스 객체 접근 권한 관리나 트랜잭션 관리 등을 위해 고안됨. DDL, DML, DCL 과 같이 세분화할 수 있음.


DDL(Data Definition Language)

SQL에서 RDBMS의 '구조'를 정의하는 언어 요소. 테이블 생성과 삭제, 변경 등을 담당.

  • CREATE
  • DROP
  • ALTER

DML(Data Manipulation Language)

SQL에서 '데이터 조작'을 위한 언어 요소. 데이터 검색, 등록, 삭제, 갱신을 담당.

  • INSERT INTO
  • SELECT .. FROM ..
  • DELETE FROM ..
  • UPDATE .. SET ..

DCL(Data Control Language)

SQL에서 데이터에 대한 액세스를 제어하기 위한 언어 요소. 권한의 부여, 박탈 등을 담당.

  • GRANT
  • REVOKE
  • SET TRANSACTION
  • BEGIN
  • COMMIT
  • ROLLBACK
  • SAVEPOINT
  • LOCK

Cursor

SELECT statment 실행 결과를 하나의 row 씩 처리하기 위해 서버 측의 result set과 row 획득 위치를 나타내는 개념을 의미. 주로 어플리케이션 등에서 SQL 검색을 실행 후 결과를 처리하기 위해 사용.


reference

SQL(Structured Query Language) 종류


SQL이란

RDBMS(Relational DataBase Management System)을 관리하기 위해 설계된 특수한 목적의 프로그래밍 언어로 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화형 프로그래밍 언어. RDBMS에서 데이터베이스 스키마 생성과 수정, 자료 검색과 관리, 데이터베이스 객체 접근 권한 관리나 트랜잭션 관리 등을 위해 고안됨. DDL, DML, DCL 과 같이 세분화할 수 있음.


DDL(Data Definition Language)

SQL에서 RDBMS의 '구조'를 정의하는 언어 요소. 테이블 생성과 삭제, 변경 등을 담당.

  • CREATE
  • DROP
  • ALTER

DML(Data Manipulation Language)

SQL에서 '데이터 조작'을 위한 언어 요소. 데이터 검색, 등록, 삭제, 갱신을 담당.

  • INSERT INTO
  • SELECT .. FROM ..
  • DELETE FROM ..
  • UPDATE .. SET ..

DCL(Data Control Language)

SQL에서 데이터에 대한 액세스를 제어하기 위한 언어 요소. 권한의 부여, 박탈 등을 담당.

  • GRANT
  • REVOKE
  • SET TRANSACTION
  • BEGIN
  • COMMIT
  • ROLLBACK
  • SAVEPOINT
  • LOCK

Cursor

SELECT statment 실행 결과를 하나의 row 씩 처리하기 위해 서버 측의 result set과 row 획득 위치를 나타내는 개념을 의미. 주로 어플리케이션 등에서 SQL 검색을 실행 후 결과를 처리하기 위해 사용.


reference

11월 01, 2016

ODBC data source 설정 시 ODBC driver for SQL server ODBC 항목이 나오지 않는 경우 해결 방법


증상

ODBC data source Administrator 에서 새로운 data source 를 만들 때 드라이버 선택 메뉴에서 ODBC driver for SQL Server 항목이 나타나지 않음.
(SQL Server 등 다른 선택 항목은 존재)


원인

ODBC driver가 설치되지 않았기 때문.


해결 방법

  • Microsoft ODBC driver for SQL Server를 설치
  • SSMS 설치(설치 과정에서 ODBC driver가 함께 설치됨)

reference

  • -

5월 30, 2016

ODBC API


연결 과정

  1. ODBC Data Source 설정 참고)windows 10에서 ODBC data source 설정 방법
  2. DB에 연결
    1. Header 파일 include: sql.h , sqltypes.h , sqlext.h
    2. SQLAllocHandle(..): Environment handle (object) 할당
    3. SQLSetEnvAttr(..): Environment handle 설정
    4. SQLAllocHandle(..): Connection handle (object) 할당
    5. SQLSetConnectAttr(..): Connection handle 설정
    6. SQLConnect(..) (또는 SQLDriverConnect(..)): DB와 연결
    7. SQLDriverConnect(..)는 GetDesktopWindow() 사용해 windows.h 사용.

    8. SQLAllocHandle(..): Statement handle (object) 할당
    9. (SQLSetStmtAttr(..): Statmenet handle 설정)

    ODBC API에 param.로 char string을 전달 시 반드시 wchar 형으로 전달해야 함. 참고) wide character type (wchar_t) 란?

  3. statement 실행
  4. Query 결과 확인
  5. DB와의 연결 해제
    1. SQLFreeHandle(..): Statement handle 해제
    2. SQLDisconnect(..): DB 연결 해제
    3. SQLFreeHandle(..): Connection handle 해제
    4. SQLFreeHandle(..): Environment handle 해제

statement 실행

query 직접 입력

  • SQLExecDirect(..): SQL 문 실행

querying의 반복 실행이 없는 경우 가장 적합한 방식.


prepared procedure

  1. SQLBindParameter(..): SQL statement의 param. marker에 버퍼를 bind.
  2. SQLPrepare(..): query 실행을 위한 SQL string을 준비.
  3. SQLExecute(..): prepared statement를 실행. 만약 param. marker가 statement 에 존재한다면 param. marker 변수의 현재 값을 사용.

query 결과 확인

query 결과로부터 데이터 추출

  1. SQLBindCol(..): 어플리케이션 데이터 버퍼를 result set의 column에 bind
  2. SQLFetch(..): result set의 다음 rowset의 데이터를 가져와서 bound된 모든 column에 대한 데이터를 리턴.
  • SQLFetchScroll(..): result set의 다음 rowset의 데이터를 가져와서 bound된 모든 column에 대한 데이터를 리턴. rowset은 절대/상대/북마크 위치로 설정가능.

column-wise, row-wise 등 다양한 데이터 추출 방법이 존재. 참고) Retrieving Results (Advanced) |MSDN


result set 관련 정보 확인

  • SQLDescribeCol(..): result set metadata를 알아내는데 사용
  • SQLColAttribute(..): result set metadata를 알아내는데 사용
  • SQLDecscribeCol VS SQLColAttribute SQLDecscribeCol 은 항상 정해진 5개의 정보를 리턴. SQLColAttribute 는 사용자가 지정한 정보 하나만을 리턴하는 대신에 더욱 다양한 정보에 대해 알아볼 수 있음. SQLDescribeCol and SQLColAttribute |MSDN

  • SQLNumResultCols(..): result set의 column 개수를 반환
  • SQLRowCount(..): UPDATE, INSERT, DELETE로 영향 받는 row의 개수를 반환.

오류 처리

  • SQLError(..): 오류나 스테이터스 정보를 반환

기타 함수

  • SQLGetInfo(..): connection과 관련된 드라이버와 data source에 관한 전반적인 정보를 반환

code example



reference

5월 27, 2016

ODBC Fundamentals: Descriptor Handles

descriptor란 어플리케이션이나 드라이버에게 보여지는 SQL statment의 param. 나 result set의 칼럼과 같은 메타데이터의 collection을 의미한다. descriptor는 다음 네가지 중 어떠한 역할도 맡을 수 있다.

  • Application Parameter Descriptor (APD).
  • SQL statement의 param.에 bound된 어플리케이션 버퍼에 대한 정보(그 버퍼의 주소, 크기, C data types 등)을 가짐.
  • Implementation Parameter Descriptor (IPD).
  • SQL statement의 파라미터에 관한 정보(SQL data type이나 크기, nullability)를 가짐.
  • Application Row Descriptor (ARD). result set의 칼럼에 bound된 어플리케이션 버퍼데 대한 정보(그 버퍼의 주소나 크기, C data type 등)를 가짐.
  • Implementation Row Descriptor (IRD). result set의 칼럼에 대한 정보(SQL data type이나 크기, nullability 등)를 가짐.

statement가 할당될 때 위 네개의 descriptors도 자동으로 할당되지만, 어플리케이션에서 SQLAllocHandle(..) 을 통해서 직접 할당할 수도 있으며 이를 explicityly allocated descriptors라 한다. 이런 descriptors는 connection에 할당이 되어 마찬가지로 그 connection에 할당된 하나 이상의 statements와 연관되어 APD 나 ARD의 역할을 맡는다.
ODBC에서 수행되는 대부분의 operation은 explicityly allocated descriptors 없이 수행 가능하지만, 때로 이런 descriptors가 몇몇 operation의 편리한 shortcut으로 사용할 수도 있다. (reference 참조)


reference

5월 19, 2016

SQL Server connection error: 26

증상

Microsoft SQL Server Management Studio 실행 후 Server(Database engine) Connection 시 접속 불가 현상.

MS SMS connection window


MS SMS error message



해결책

SQL Server 의 log on 대상을 built-in:local system으로 바꿔줌.

  1. SQL Server Configuration Manager 실행
  2. SQL Server Service items 설정 변경
    1. SQL Server(SQLEXPRESS) > properties
    2. log on tab 선택
    3. Log on as: built-in account > Local System 지정
    4. 필요한 경우 해당 서비스 리부트
  3. SQL SMS connection window에서 Server name을 .\SQLEXPRESS 로 변경 후 접속

reference

5월 18, 2016

windows 10에서 ODBC data source 설정 방법

C++에서 MSSQL DB을 연결하는 data access programming을 하기 위해선 ODBC data source를 설정해야 함.

  1. ODBC data source 찾기
  2. ODBC data source 설정

specifications

  • windows 10
  • ODBC driver 11
  • SQL Server 2014 Express

ODBC data source 찾기

data source 설정에 접근하는 방법은 크게 두가지가 있음.

  • 시작 메뉴에서
  • all aps -> Windows Administrative Tools -> ODBC data sources (32bit/64bit)

  • settings panel에서
  • Find a setting -> ODBC -> Set up ODBC data sources (32bit/64bit)

주의
32bit 또는 64bit 선택은 OS가 아니라 application을 따라감. 즉 자신이 build하고 run하는 application의 bit에 맞춰 선택
ODBC Administrator tool displays both the 32-bit and the 64-bit user DSNs in a 64-bit version of Windows |support.microsoft.com

ODBC data sources 설정

  1. "User DSN" tab 선택
  2. User DSN 외에도 여러 탭이 있는데, 각각 만드려는 ODBC Data source에 접근 범위를 설정하는 것. 시스템에 여러 user가 있고 모두 같은 data source를 쓰려면 System DSN으로 하는게 편함.

    • User DSN: 현재 user만 사용할 수 있으며, 현재 컴퓨터에 local인 data source를 생성.
    • System DSN: 시스템의 모든 user가 사용할 수 있으며, 현재 컴퓨터에 local인 data source를 생성.
    • File DSN: 동일한 드라이버를 설치한 모든 사용자들이 공유할 수 있는 파일 기반 data source를 생성. 현재 컴퓨터에 local 아니어도 가능.
    • Tracing: 이 탭은 ODBC 드라이버 관리자가 ODBC 함수 호출을 추적하는 방법을 지정. 캡쳐된 내용은 로그 파일에 저장됨.
    • Connection Pooling: 응용 프로그램이 연결 풀에서 연결을 다시 사용할 수 있도록 함. 연결 풀링을 사용할 때 연결 재시도 대기 시간 및 시간 제한(초)을 변경 가능.

  3. "Add" -> "ODBC Driver 11 for SQL Server" 선택
  4. Access나 Excel, SQL Server, ODBC Driver 등 data source를 연결할 드라이버를 지정 가능. ODBC를 이용해서 연결하므로 "ODBC Driver 11 for SQL Server" 또는 SQL Server 선택.

    • ODBC Driver 11 for SQL Server
    • SQL Server가 local인 경우 사용 가능.

    • SQL Server
    • SQL Server가 local이거나 remote 인 경우 사용 가능. 이후 설정 과정에서 "Client Configuration"을 named pipe(local), 혹은 TCP/IP(remote)로 설정을 바꿔줘야 함.

    • SQL Server Navtive Client 11.0
    • application이 C 언어로 작성되는 경우. (확인 필요)

  5. Name에 원하는 서버 이름, Server에 연결할 서버 작성
    • Name: 외부에 표시되는 서버 이름
    • Description: 외부에 표시되는 서버 설명
    • Server: 접속할 SQL server. SQL Server Management Studio에서 connection 시의 Server Name을 입력.

  6. Authentication 방법 설정
  7. Default Database 설정
  8. 기본은 master. SQL Server 내에서 미리 작성해놓은 Database 선택.

  9. 기타 설정

ODBC data sources 설정 - remote(TCP/IP)인 경우


reference

5월 12, 2016

MySQL 설치 관련 정보


  • MySQL server (필수)
  • 서버(DB)

  • MySQL for Visual Studio
  • MySQL 서버(DB) 관리 시 커맨드 라인에서 DDL이나 DML을 사용하지 않고도 Visual Studio에서 GUI로 편집할 수 있게 해주는 도구.

    주의
    MySQL for V.S. 와 MySQL connector 설치 시 반드시 MySQL for V.S. 를 먼저 설치한 후 MySQL connector를 나중에 설치해야 함.

  • MySQL connector/C++ (필수)
  • C++에서 MySQL 서버(DB)에 접근할 수있게 연결해주는 라이브러리. 크게 source file 형태, binary 형태로 제공. binary 형태의 제공은 미리 컴파일 되어있어 별도의 컴파일 과정 없이 사용 가능하나, 컴파일러 버전에 따라 호환이 되지 않을 수도 있음. 따라서 MySQL 측은 source file에서 자신이 사용하는 컴파일러를 통해 binary를 직접 생성할 것을 권장.

  • MySQL workbench C/E
  • MySQL 서버(DB)를 GUI로 편집할 수 있게 해주는 도구.

  • MySQL on Windows: MySQL INstaller
  • 위의 MySQL 서버와 tool들을 모두 포함한 all-in-one 버전.

    주의
    다만, 설치 과정에서 Visual studio와 MySQL의 bit 버전(86/64)을 동일하게 맞춰줘야하는데, 개별 설치하는 경우 각각 bit 버전을 맞출 수 있는 반면에서 자동 설치를 선택 시 비트 버전이 제각각이 될 수 있으니 주의.



reference

5월 09, 2016

MSSQL ODBC vs OLEDB vs ADO


  • ODBC
  • OLEDB
  • ADO
  • ADO.NET
  • 기타

ODBC (Open DataBase Connector)

  1. 1992년 소개
  2. SQL data source만 처리 가능
  3. base는 C++ (MFC database classes가 ODBC를 베이스로 하고 있음), Java(JDBC)
  4. platform independent, 윈도우 리눅스 상관 없이 사용가능.

OLEDB (Object Linking and Embedding DataBase

  1. 1996년 소개
  2. ODBC가 SQL data만 처리 가능한데 반해, non-SQL data source도 처리 가능
  3. C++, Java
  4. COM을 이용하기 때문에 윈도우 종속적.
  5. SQL data source 접근할 때는 ODBC를 통해 접근한다는 설명도 있고 ODBC 없이 직접 접근할 수 있다는 설명도 있음. (확인 필요).
  6. OLE DB 는 deprecated 됨.
  7. Microsoft is Aligning with ODBC for Native Relational Data Access |blog.msdn.microsoft

ADO (ActiveX Data Object)

  1. 1996년 소개
  2. OLEDB의 high level interface. 다양한 언어에서 사용 가능.
  3. C++, C#, Java, VB, Script 언어(웹 어플리케이션)
  4. DB 접근 시 OLEDB를 거쳐가기 때문에 윈도우 종속적.
  5. 요즘 잘 안쓰인다는 설명이 있음. 확인 필요. //rev

ADO.NET

  1. 2002년 소개
  2. OLE DB 및 ODBC를 통해 노출되는 데이터 소스, SQL Server 및 XML과 같은 데이터 소스에 대한 일관성 있는 액세스를 제공
  3. C#, Java, VB, Script 언어(웹 어플리케이션)
  4. DB 접근 시 ADO를 거쳐가기 때문에 윈도우 종속적.
  5. 요즘 잘 안쓰인다는 설명이 있음. 확인 필요. //rev

기타

  1. DAO
  2. ODBC와 유사하나 ODBC가 다양한 데이터베이스에 접근할 수 있는데 반해 DAO는 local machine에 존재하는 데이터베이스에 빠르게 접근하기 위한 목적으로 개발됨.

  3. RDO
  4. 서버에 기반을 둔 데이터베이스를 위한 기술로 RDS가 뒤를 이은 후 현재는 잘 사용되지 않음.


그림1


그림2 (MSDN)


reference

5월 03, 2016

MSSQL Server 기초 개념

SQL Server 2014 Express advanced service

SQL db 본체. MSSQL Database와 DB 관리 도구 등의 구성 요소를 포함하고 있는 패키지. 요금제, 제공하는 서비스의 종류나 coverage에 따라 Enterprise, BI, Express(무료) 등 에디션이 구분됨. 또한 연도에 따라 2012, 2014, 2016 등 버전이 구분되며, 같은 버전 안에서 포함된 구성요소에 따라 SQL Server Express 도구, SQL Server Management studio, SQL Server Express with advanced service(모든 구성요소 포함) 등 패키지가 구분됨.


SQL ODBC driver

MySQL connector 와 같이 DB와 C++을 연결해 주는 라이브러리의 일종으로, 어플리케이션 내에서 작성된 쿼리를 DB로 보내고 결과 set을 받아오는 등 C++ 어플리케이션과 MSSQL 서버를 연결해 주는 역할. JDBC(java), .net(C#) 등 여러 종류의 드라이버가 존재.


reference