데이터의 조회 : SELECT
데이터의 삭제 : DELETE
데이터의 저장 : INSERT(신규 데이터 입력) / UPDATE(기존 데이터 수정)
데이터의 삭제 : DELETE
데이터의 저장 : INSERT(신규 데이터 입력) / UPDATE(기존 데이터 수정)
[[ SELECT 문 ]]
<구문형식>
SELECT 컬럼1,컬럼2...
FROM 테이블1,테이블2, ...
WHERE 조건들;
FROM 테이블1,테이블2, ...
WHERE 조건들;
예) SELECT last_name,first_name
FROM employees
WHRER hire_date >= '2006-01-01';
->employees테이블에서 hire_date가 2006-01-01이상인 데이터의 last_name과first_name을 조회.
->employees테이블에서 hire_date가 2006-01-01이상인 데이터의 last_name과first_name을 조회.
[[ INSERT 문 ]]
<구문형식 1>
INSERT INTO 테이블명1 (컬럼1_1,컬럼1_2,...)
VALUES (컬럼1_1 값,컬럼1_2 값, ...);
VALUES (컬럼1_1 값,컬럼1_2 값, ...);
<구문형식 2>
INSERT INTO 테이블명1
VALUES (컬럼1_1 값,컬럼1_2값,...);
->컬럼 리스트와 그 컬럼에 들어갈 값의 순서는 정확하게 맞아야한다.INSERT INTO 테이블명1
VALUES (컬럼1_1 값,컬럼1_2값,...);
->두번째 유혈처럼 컬럼 리스트가 생략이 가능한다 이런 경우에는 테이블에 있는 모든 컬럼에 데이터를 넣는 의미
이므로 VALUE절에 컬럼의 값 중 단 하나라도 없으면 류가 발생
<구문형식 2>
INSERT INTO 테이블명1(컬럼1,컬럼2,...)
SELECT 컬럼2_1,컬럼2_2,...
FROM 테이블2
WHERE ...;
->제 3의 테이블에 있는 데이터를 선택해서 새로운 데이터를 넣는 형태INSERT INTO 테이블명1(컬럼1,컬럼2,...)
SELECT 컬럼2_1,컬럼2_2,...
FROM 테이블2
WHERE ...;
[[ UPDATE 문 ]]
<구문형식>
UPDATE 테이블명
SET 변경컬럼1 = 변경하고자 하는 값,
변경컬럼2 = 변경하고자 하는 값.
...
WHERE 조건절 ...;
SET 변경컬럼1 = 변경하고자 하는 값,
변경컬럼2 = 변경하고자 하는 값.
...
WHERE 조건절 ...;
->INSERT문처럼 SELECT문이 와서 제 3의 테이블에 있는 컬럼의 값으로 변경가능하다.
->WHERE절을 명시해서 조건이 일치하는 데이터들만 갱신할 수 있다. 생략할 경우에는 테이블 전체 데이터가 변경된다.
[[ DELETE 문 ]]
<구문형식>
DELETE [FROM] 테이블
WHERE 조건...;
WHERE 조건...;
->WHERE로 특정 조건에 맞는 데이터만 삭제. WHERE절을 생략하면 테이블 전체 데이터가 삭제된다.
[[ COMMIT 문 ]]
만약 WHERE절을 명시하지 않고 DELETE문을 실행하면 테이블에 있는 모든 데이터가 삭제된다.
이러한 실수를 예방하기 위해 INSERT,UPDATE,DELETE문을 실행하더라고 곧바로 데이터가 변경되지 않고
실제 데이터의 변경은 COMMIT문장을 실행하였을때 데이터파일에 적용된다.
->SAVEPOINT는 특정 시점까지 작업한 내용을 반영할 경우 사용.
->COMMIT으로 반영되는 데이터는 이전 COMMIT이나 ROLLBACK을 실행한 시점부터 현재 COMMIT을 실행하는 동안에 이루어진 내용을 반영.
이러한 실수를 예방하기 위해 INSERT,UPDATE,DELETE문을 실행하더라고 곧바로 데이터가 변경되지 않고
실제 데이터의 변경은 COMMIT문장을 실행하였을때 데이터파일에 적용된다.
<구문형식>
COMMIT [WORK] [TO SAVEPOINT savepoint_name];
->[]표시괸 부분은 생략이 가능하다. 즉 위의 구문이나 'COMMIT나 동일한 효과이다.COMMIT [WORK] [TO SAVEPOINT savepoint_name];
->SAVEPOINT는 특정 시점까지 작업한 내용을 반영할 경우 사용.
->COMMIT으로 반영되는 데이터는 이전 COMMIT이나 ROLLBACK을 실행한 시점부터 현재 COMMIT을 실행하는 동안에 이루어진 내용을 반영.
[[ ROLLBACK 문 ]]
COMMIT와는 반대의 개념으로 변경된 데이터들을 변경 전 상태로 되돌리는 역활을 한다.
원하닌 않는 데이터까지 삭제했을 경우 ROLLBACK문을 실행하면 이전 ROLLBACK이나 COMMIT가 실행된 시점
이후에 변경된 사항은 모두 원상태로 되돌아간다. 즉 취소의 개념이다
원하닌 않는 데이터까지 삭제했을 경우 ROLLBACK문을 실행하면 이전 ROLLBACK이나 COMMIT가 실행된 시점
이후에 변경된 사항은 모두 원상태로 되돌아간다. 즉 취소의 개념이다
<구문형식>
ROLLBACK [WORK] [TO SAVEPOINT savepoint_name];
ROLLBACK [WORK] [TO SAVEPOINT savepoint_name];
'Sunmoon_BIT > ORACLE SQL' 카테고리의 다른 글
ORACLE TABLESPACE 확인 (0) | 2012.06.28 |
---|---|
데이터베이스에 XML파일 저장하기 (0) | 2010.04.27 |
DataBase 검색 [ 검색 쿼리문] (0) | 2010.04.26 |
LOGICAL OPERATORS (0) | 2010.02.24 |
"ASYNSELECT_SERVER.h"
#pragma comment (lib,"ws2_32")
#include <winsock2.h>
#include <winsock2.h>
#include "resource.h"
#include <stdio.h>
#include <windows.h>
#define MWM_SOCK (WM_APP +1)
#define C_IP "192.168.34.110"
#define MY_IP "192.168.34.110"
#define USE_PORT 1444
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL DlgCmd(HWND hDlg,WPARAM wParam);
BOOL InitSock(HWND hDlg);
BOOL Onsock(HWND hDlg,SOCKET sock,WORD msg,WORD eid);
void AcceptProc(HWND hDlg,SOCKET sock);
void ReadMSG(HWND hDlg,SOCKET sock);
"ASYNSELECT_SERVER.cpp"
#include "ASYNSELECT_SERVER.h"
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2,2),&wsadata) != 0)
{
return 0;
}
HANDLE hMutex = CreateMutex(NULL,FALSE,"ASYNC_SERVER");
if(GetLastError() != ERROR_ALREADY_EXISTS)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
MessageBox(NULL,"이미 실행 중 입니다","경고",MB_OK);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
case WM_INITDIALOG : return InitSock(hDlg);
case WM_COMMAND : return DlgCmd(hDlg,wParam);
case MWM_SOCK : return Onsock(hDlg,(SOCKET)wParam,LOWORD(lParam),HIWORD(lParam));
}
return FALSE;
}
BOOL DlgCmd(HWND hDlg,WPARAM wParam)
{
switch(LOWORD(wParam))
{
case IDCANCEL : EndDialog(hDlg,IDD_DIALOG1);
}
return TRUE;
}
BOOL InitSock(HWND hDlg)
{
SOCKET sock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN servaddr = {0,};
servaddr.sin_addr.s_addr = inet_addr(MY_IP);
servaddr.sin_port = htons(USE_PORT);
servaddr.sin_family = PF_INET;
bind(sock,(SOCKADDR *)&servaddr,sizeof(servaddr));
listen(sock,3);
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_ACCEPT);
return TRUE;
}
BOOL Onsock(HWND hDlg,SOCKET sock,WORD msg,WORD eid)
{
switch(msg)
{
case FD_ACCEPT : AcceptProc(hDlg,sock); break;
case FD_READ : ReadMSG(hDlg,sock); break;
}
return TRUE;
}
void AcceptProc(HWND hDlg,SOCKET sock)
{
SOCKADDR_IN clientaddr = {0,};
int len = sizeof(clientaddr);
SOCKET dosock = accept(sock,(SOCKADDR *)&clientaddr,&len);
WSAAsyncSelect(dosock,hDlg,MWM_SOCK,FD_READ);
}
void ReadMSG(HWND hDlg,SOCKET sock)
{
int MSGlen;
char msg[256];
memset(msg,0,256);
recv(sock,(char*)&MSGlen,sizeof(MSGlen),0);
recv(sock,msg,MSGlen,0);
//MessageBox(hDlg,"메세지가 도착하였습니다","OK",MB_OK);
SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_ADDSTRING,0,(LPARAM)msg);//list에 추가!
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2,2),&wsadata) != 0)
{
return 0;
}
HANDLE hMutex = CreateMutex(NULL,FALSE,"ASYNC_SERVER");
if(GetLastError() != ERROR_ALREADY_EXISTS)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
MessageBox(NULL,"이미 실행 중 입니다","경고",MB_OK);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
case WM_INITDIALOG : return InitSock(hDlg);
case WM_COMMAND : return DlgCmd(hDlg,wParam);
case MWM_SOCK : return Onsock(hDlg,(SOCKET)wParam,LOWORD(lParam),HIWORD(lParam));
}
return FALSE;
}
BOOL DlgCmd(HWND hDlg,WPARAM wParam)
{
switch(LOWORD(wParam))
{
case IDCANCEL : EndDialog(hDlg,IDD_DIALOG1);
}
return TRUE;
}
BOOL InitSock(HWND hDlg)
{
SOCKET sock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN servaddr = {0,};
servaddr.sin_addr.s_addr = inet_addr(MY_IP);
servaddr.sin_port = htons(USE_PORT);
servaddr.sin_family = PF_INET;
bind(sock,(SOCKADDR *)&servaddr,sizeof(servaddr));
listen(sock,3);
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_ACCEPT);
return TRUE;
}
BOOL Onsock(HWND hDlg,SOCKET sock,WORD msg,WORD eid)
{
switch(msg)
{
case FD_ACCEPT : AcceptProc(hDlg,sock); break;
case FD_READ : ReadMSG(hDlg,sock); break;
}
return TRUE;
}
void AcceptProc(HWND hDlg,SOCKET sock)
{
SOCKADDR_IN clientaddr = {0,};
int len = sizeof(clientaddr);
SOCKET dosock = accept(sock,(SOCKADDR *)&clientaddr,&len);
WSAAsyncSelect(dosock,hDlg,MWM_SOCK,FD_READ);
}
void ReadMSG(HWND hDlg,SOCKET sock)
{
int MSGlen;
char msg[256];
memset(msg,0,256);
recv(sock,(char*)&MSGlen,sizeof(MSGlen),0);
recv(sock,msg,MSGlen,0);
//MessageBox(hDlg,"메세지가 도착하였습니다","OK",MB_OK);
SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_ADDSTRING,0,(LPARAM)msg);//list에 추가!
}
"ASYNCSELECT_CLIENT.h"
#pragma comment (lib,"ws2_32")
#include <winsock2.h>
#include <winsock2.h>
#include "resource.h"
#include <stdio.h>
#include <windows.h>
#include <stdio.h>
#include <windows.h>
#define MWM_SOCK (WM_APP +1)
#define C_IP "192.168.34.110"
#define MY_IP "192.168.34.110"
#define USE_PORT 1444
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL InitSock(HWND hDlg);
BOOL DlgCmd(HWND hDlg,WPARAM wParam);
BOOL OnSock(HWND hDlg,SOCKET sock,WORD msg,WORD eid);
void SendMSG(HWND hDlg);
void WriteProc(HWND hDlg,SOCKET sock);
void ConnectProc(HWND hDlg,SOCKET sock);
BOOL InitSock(HWND hDlg);
BOOL DlgCmd(HWND hDlg,WPARAM wParam);
BOOL OnSock(HWND hDlg,SOCKET sock,WORD msg,WORD eid);
void SendMSG(HWND hDlg);
void WriteProc(HWND hDlg,SOCKET sock);
void ConnectProc(HWND hDlg,SOCKET sock);
"ASYNCSELECT_CLIENT.cpp"
#include "ASYNCSELECT_CLIENT.h"
INT APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstacne,LPSTR lpCmdLine,int nShowCmd)
{
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2,2),&wsadata) != 0)
{
return 0;
}
HANDLE hMutex = CreateMutex(NULL,FALSE,"C_MUTEX");
if(GetLastError() != ERROR_ALREADY_EXISTS)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
MessageBox(NULL,"이미 실행 중 입니다","ERROR",MB_OK);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
{
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2,2),&wsadata) != 0)
{
return 0;
}
HANDLE hMutex = CreateMutex(NULL,FALSE,"C_MUTEX");
if(GetLastError() != ERROR_ALREADY_EXISTS)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
MessageBox(NULL,"이미 실행 중 입니다","ERROR",MB_OK);
CloseHandle(hMutex);
WSACleanup();
return 0;
}
BOOL CALLBACK DlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
case WM_INITDIALOG : return InitSock(hDlg);
case WM_COMMAND : return DlgCmd(hDlg,wParam);;
case MWM_SOCK : return OnSock(hDlg,(SOCKET)wParam,LOWORD(lParam),HIWORD(lParam));
}
return FALSE;
}
{
switch(iMessage)
{
case WM_INITDIALOG : return InitSock(hDlg);
case WM_COMMAND : return DlgCmd(hDlg,wParam);;
case MWM_SOCK : return OnSock(hDlg,(SOCKET)wParam,LOWORD(lParam),HIWORD(lParam));
}
return FALSE;
}
BOOL InitSock(HWND hDlg)
{
return TRUE;
}
{
return TRUE;
}
BOOL DlgCmd(HWND hDlg,WPARAM wParam)
{
switch(LOWORD(wParam))
{
case IDCANCEL : EndDialog(hDlg,IDD_DIALOG1); break;
case IDOK : SendMSG(hDlg); break;
}
return TRUE;
}
{
switch(LOWORD(wParam))
{
case IDCANCEL : EndDialog(hDlg,IDD_DIALOG1); break;
case IDOK : SendMSG(hDlg); break;
}
return TRUE;
}
BOOL OnSock(HWND hDlg,SOCKET sock,WORD msg,WORD eid)
{
switch(msg)
{
case FD_CONNECT : ConnectProc(hDlg,sock); break;
case FD_WRITE : WriteProc(hDlg,sock); break;
}
return TRUE;
}
{
switch(msg)
{
case FD_CONNECT : ConnectProc(hDlg,sock); break;
case FD_WRITE : WriteProc(hDlg,sock); break;
}
return TRUE;
}
void SendMSG(HWND hDlg)
{
SOCKET sock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN clientaddr = {0,};
clientaddr.sin_addr.s_addr=inet_addr(MY_IP);
clientaddr.sin_port = htons(USE_PORT);
clientaddr.sin_family = PF_INET;
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_CONNECT);
connect(sock,(SOCKADDR*)&clientaddr,sizeof(clientaddr));
}
{
SOCKET sock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN clientaddr = {0,};
clientaddr.sin_addr.s_addr=inet_addr(MY_IP);
clientaddr.sin_port = htons(USE_PORT);
clientaddr.sin_family = PF_INET;
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_CONNECT);
connect(sock,(SOCKADDR*)&clientaddr,sizeof(clientaddr));
}
void ConnectProc(HWND hDlg,SOCKET sock)
{
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_WRITE);
}
{
WSAAsyncSelect(sock,hDlg,MWM_SOCK,FD_WRITE);
}
void WriteProc(HWND hDlg,SOCKET sock)
{
char Message[256+1];
GetDlgItemText(hDlg,IDC_EDIT1,Message,sizeof(Message));
int MSGlen = strlen(Message);
send(sock,(char*)&MSGlen,sizeof(int),0);
send(sock,Message,MSGlen,0);
SetDlgItemText(hDlg,IDC_EDIT1,"");
}
{
char Message[256+1];
GetDlgItemText(hDlg,IDC_EDIT1,Message,sizeof(Message));
int MSGlen = strlen(Message);
send(sock,(char*)&MSGlen,sizeof(int),0);
send(sock,Message,MSGlen,0);
SetDlgItemText(hDlg,IDC_EDIT1,"");
}
'Sunmoon_BIT > Win32API' 카테고리의 다른 글
Mouse & WPARAM & LPARAM (0) | 2010.05.03 |
---|---|
소켓 통신 관련 함수 - Win32API (0) | 2010.01.18 |
API사용중 콘솔창 띄우기 - Win32API (0) | 2010.01.15 |
WPARAM & LPARAM - WIN32API (0) | 2010.01.10 |
API기본셋팅(Visual Studio 6.0) - Win32API (0) | 2010.01.08 |