파일 다운로드!:: SQL_Lite.zip 


 CppSQLite3DB dbConnection;

 try
 {
      dbConnection.open("UserList.db3");

      int nRows = dbConnection.execDML("insert into userinfo values ('한효주', '한국');");
      cout << nRows << " rows inserted" << endl;


     CppSQLite3Query q = dbConnection.execQuery("select * from userinfo;");

     for (int fld = 0; fld < q.numFields(); fld++)
    {
        cout << q.fieldName(fld) << "(" << q.fieldDataType(fld) << ")|";
    }
    cout << endl;

    while (!q.eof())
    {
       cout << q.fieldValue(0) << "|";
       cout << q.fieldValue(1) << "|" << endl;
       q.nextRow();
    }

   nRows = dbConnection.execDML("delete from userinfo where user_name = '한효주';");
   cout << nRows << " rows deleted" << endl;

 }
 catch (CppSQLite3Exception& e)
 {
      cerr << e.errorCode() << ":" << e.errorMessage() << endl;
 }

'NativeCode > SQLite Cpp' 카테고리의 다른 글

SQL Query  (0) 2010.03.18
SqlConnection  (0) 2010.03.18
SqlCommand  (0) 2010.03.18

1. 새로운 테이블의 생성(CREATE TABLE)


CREATE TABLE 테이블명(

필드명 데이터타입 [NOT NULL]

{, 필드명 데이터타입 [NOT NULL]}*

[, PRIMARY KEY(필드명)]

)


ex) CREATE TABLE userdb (   

      name CHAR(8),                            //CHAR 문자수가 M개인 문자열을 뜻한다.

      id VARCHAR(10) NOT NULL,          //VARCHAR 문자수가 최대 M개인 문자열을  뜻한다.

      email VARCHAR(40),

      sex CHAR(1),

      PRIMARY KEY(id)

      )


2. 생성된 테이블의 변경(ALTER TABLE)

:생성하면서 미처 정의하지 못한 필드를 추가할수 있으며, 데이터 타입도 바꿀수 있다.

ALTER TABLE user add name VARCHAR(30)      
  //필드추가

or

CHANGE [COLUMN] 기존필드명 새필드명 필드타입        //필드속성 변경

or

ALTER TABLE user DROP [COLUMN] 필드명                //필드삭제


ex) ALTER TABLE 테이블명 ADD addr VARCHAR(100)    //주소 필드를 추가


     ARTER TABLE 테이블명 CHANGE addr address VARCHAR(255) 

    // 주소필드(addr)의 이름을 address로 수정. 또한 글자수도 최대 255자로 변경.


3. 생성된 테이블의 삭제(DROP TABLE)

DROP TABLE 테이블명


4. 데이터 검색(SELECT)


SELECT [DISTINCT] 필드명 {, 필드명}*

FROM 테이블명 {, 테이블명}*

[WHERE 조건검색]

[ORDER BY 필드명[ASC or DESC] {, 필드명 [ASC or DESC]}*]

[GRUB BY 필드명 {, 필드명}*]

[HAVING 검색조건]


ex) SELECT name, id FROM userdb WHERE level = 'B'


//테이블 userdb에서 사용자 등급이 'B'인 사용자의 레코드를 찾아서 사용자의 이름과 아이디 필드를 출력한다.


검색 중복 제거

SELECT DISTINCTlevel FROM userdb


조건 검색 (WHERE)

SELECT name, id, email FROM userdb WHERE milage > 3000 AND sex = 'M'

// 마일리지가 3천이하이고, 남자를 검색.

WHERE절에는 비교연산자 >,>=,<,<=,=와 AND,OR,NOT같은 연산자를 사용할수 있다.


검색결과의 정렬 (ORDER ~DESC or ASC)

SELECT name,id,milage FROM userdb WHERE milage >= 3000 ORDER BY milge >= 3000 ORDER BY milage DESC

//마일리지가 3천 이상인 사람의 이름, 아이디, 마일리지를 출력하되 마일리지가 높은 순으로 출력.


SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage ASC

or

SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage


오름차순 정렬 : ASC,  내림차순 정렬 : DESC,  명령어 없을땐 오름차순으로 정렬됨.


산술 계산  문자열 처리

SELECT name, '님의 마일리지는 ', milage, '점 입니다' FROM userdb WHERE milage >= 3000 ORDER BY milage


그룹 함수를 이용한 검색

count (필드명)      //조건을 만족하는 레코드의 개수

sum   (필드명)      //해당 필드값의 합

min    (필드명)      //해당 필드의 값중 최소값

max   (필드명)      //해당 필드의 값중 최대값

avg    (필드명)      //해당 필드의 평균값


ex) SELECT count(*) FROM user WHERE sex = 'F'

//user 테이블에서 여성사용자가 몇 명이나 되는지를 함수로 검색.

     SELECT avg(milage) FROM user WHERE sex = 'F'

//user 테이블에서 여성사용자들의 평균 마일리지 값을 출력한다.


GROUP BY를 이용한 검색

기본구조

SELECT sex, max(milage), min(milage), avg(milage) FROM 테이블명 GROUP BY sex


HAVING을 이용한 검색

: group by로 지정한 필드에 대하여 추가로 검색 조건을 지정할 때 사용한다.

기본구조

SELECT sex, max(milage), min(milage), avg(milage) FROM user GROUP BY sex HAVING sex = 'F'


BETWEEN~AND IN 연산자를 이용한 검색

: 마일리지가 3000이상 4000이하인 여자의 이름과 이메일, 마일리지, 성별을 출력한다.

SELECT name, email, milage, sex FROM user WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000;


LIKE를 이용한 검색

: WHERE 조건절에서 가장 많이 사용하는 검색 조건 연산자이며 보통 LIKE 문을 사용하여 필드값의 문자열을 검색한다.

SELECT name FROM user WHERE name LIKE '%현%'

// '현'이라는 문자를 포함하는 모든 레코드를 검색한다. '현%' 은 시작문자중 검색.


NULL 값을 갖는 데이터 검색

: 특정 필드의 값이 NULL 값인 레코드를 검색하기위해 IS NULL문을 사용한다.

SELECT name, id FROM user WHERE email IS NULL


LIMIT 연산자를 이용한 검색

: 검색된 레코드의 개수를 정하여 가져오는 것.

SELECT name, id, milage FROM user LIMIT 3or 1,3 (1부터 3개의 코드를 가져온다)


5. 생성된 테이블의 변경(ALTER TABLE)

ALTER TABLE의 기본 형식

필드추가 - ADD 필드명 필드타입

필드속성 변경 - CHANGE 기존필드명 새필드명 필드타입

필드삭제 - DROP 필드명


ALTER TABLE user ADD COLUMN addr VARCHAR(100)    //생략가능하며 처음 생성시의 타입과

or                                                                                  동일하게 해야됨.

ALTER TABLE user ADD addr VARCHAR(100)


6. 새로운 데이터의 삽입 (INSERT)

INSERT INTO 테이블명 VALUES(필드값: '이현재' ,'sindee' , 639 , ...);

//문자는 작은따옴표를 사용하되 숫자는 그냥 사용.


7. 데이터의 수정 (UPDATE) : 반드시 WHERE 절로 조건을 명시해야 된다.

UPDATE use SET sex = 'F' WHERE name = '이현재'

WHERE 절로 검색 조건을 명시하지 않으면 테이블(use)내의 모든 레코드의 필드값(sex)이 새로 설정한 필드(sex)값으로 수정된다.


8. 데이터의 삭제 (DELETE) : 조건 명시 않으면 모두 삭제된다.

DELETE FROM lee2 [WHERE 검색조건]

DELETE FROM use WHERE id = '관제';

'NativeCode > SQLite Cpp' 카테고리의 다른 글

CppSQLite 사용법. (라이브러리 포함)  (0) 2010.03.18
SqlConnection  (0) 2010.03.18
SqlCommand  (0) 2010.03.18

Snap2.png


Snap1.png

'NativeCode > SQLite Cpp' 카테고리의 다른 글

CppSQLite 사용법. (라이브러리 포함)  (0) 2010.03.18
SQL Query  (0) 2010.03.18
SqlCommand  (0) 2010.03.18
  • SqlCommand 클래스

    • DB에 필요한 명령을 전달하거나 그 결과를 받아올 때 사용하는 클래스
  • SqlCommand에서 사용할 수 있는 명령들

    • 단일 값 및 레코드 셋을 반환하는 select, create, alert, drop 같은 DDL(Data Definition Language) 명령
    • grant, deny, revoke 같은 DCL(Data Control Language) 명령
    • insert, update, delete 같은 DML(Data Modification Language) 명령
  • SqlCommand 클래스 주요 함수

    • ExecuteNonQuery()

      • SQL 문을 실행하고 처리된 행의 개수를 반환
    • ExecuteReader()

      • 쿼리를 Connection에 보내고 SqlDataReader를 생성
    • ExecuteScalar()

      • 쿼리를 실행하고 쿼리에서 반환된 결과 집합의 첫 번째 행의 첫 번째 열 반환
    • ExecuteXmlReader()

      • 쿼리를 Connection에 보내고 XmlReader 객체를 생성


Snap2.png




Snap2(1).png


Snap4.png

'NativeCode > SQLite Cpp' 카테고리의 다른 글

CppSQLite 사용법. (라이브러리 포함)  (0) 2010.03.18
SQL Query  (0) 2010.03.18
SqlConnection  (0) 2010.03.18

+ Recent posts