'공감'에 해당되는 글 38건
- 2020.04.16 :: [C#] C# 데이터 타입 배워보기 (종류) 1
- 2020.04.16 :: [C#] C#의 버전 알아보자
- 2020.04.16 :: [C#] C#이란 무엇일까? 기초알아보기 (1)
- 2020.04.15 :: 넥플리스 크랙 Ver 1
- 2020.04.14 :: [SQL] JOIN VIEW,별명알아보자
- 2020.04.14 :: [SQL] 연산 논리 (기초 배우기 )
- 2020.04.14 :: [SQL] SQL 이란 무엇일까? (기초배우기 정의,종류)
- 2020.04.14 :: [C++] 네이버 RSA 로그인 소스
C# 데이타 타입
C#을 포함한 모든 .NET 프로그래밍 언어는 .NET의 Common Type System에 정의된 .NET 데이타 타입을 사용한다. C#은 int, double, string 과 같은 C# 키워드로 데이타 타입을 표현할 수 있으며, 또한 System.Int32, System.Double, System.String 과 같은 .NET 데이타 클래스로 데이타 타입을 표현할 수도 있다. 내부적으로는 C# 컴파일러는 C# 키워드로 된 데이타 타입을 컴파일 후 .NET 데이타 타입으로 변경하게 된다.
C# 데이타 타입.NET 데이타 타입설명
bool | System.Boolean | True or False |
byte | System.Byte | 8비트 unsigned integer |
sbyte | System.SByte | 8비트 signed integer |
short | System.Int16 | 16비트 signed integer |
int | System.Int32 | 32비트 signed integer |
long | System.Int64 | 64비트 signed integer |
ushort | System.UInt16 | 16비트 unsigned integer |
uint | System.UInt32 | 32비트 unsigned integer |
ulong | System.UInt64 | 64비트 unsigned integer |
float | System.Single | 32비트 single precision 부동소수점 숫자 |
double | System.Double | 64비트 double precision 부동소수점 숫자 |
decimal | System.Decimal | 128비트 Decimal |
char | System.Char | 16비트 유니코드 문자 |
string | System.String | 유니코드 문자열 |
System.DateTime | 날짜와 시간, 별도의 C# 키워드가 없음 | |
object | System.Object | 모든 타입의 기본 클래스로 모든 유형을 포함할 수 있음 |
C# 리터럴 데이타
C# 코드에서 123, true, "ABC"와 같이 값을 직접 써줄 수 있는데, 이를 리터럴(Literal)이라 한다. C#에서 리터럴 데이타를 사용할 때, 별도의 접미어 표시(Suffix)가 없는 경우 C# 컴파일러는 int, double, char, string, bool 데이타 타입에 기본적으로 그 값을 할당한다. 따라서, 특정 데이타 타입을 지정하고 싶으면, 리터럴 데이타 뒤에 1~2자의 타입 지정 접미어(Suffix)를 추가해야 한다. Suffix는 대소문자 구분이 없다. 즉 decimal을 나타내는 접미어 M은 1024M 이나 1024m처럼 사용가능하다. 아래는 디폴트 리터럴 타입과 각 데이타 타입별 Suffix에 대한 예제이다.
디폴트 리터럴 타입
123 // int 리터럴 12.3 // double 리터럴 "A" // string 리터럴 'a' // char 리터럴 true // bool 리터럴
C# 리터럴 데이타 타입 | Suffix (대소문자 모두 가능) | 예제 |
long | L | 1024L |
uint | U | 1024U |
ulong | UL | 1024UL |
float | F | 10.24F |
double | D | 10.24D 또는 10.24 |
decimal | M | 10.24M |
C# 데이타 타입 예제
예제
// Bool bool b = true; // Numeric short sh = -32768; int i = 2147483647; long l = 1234L; // L suffix float f = 123.45F; // F suffix double d1 = 123.45; double d2 = 123.45D; // D suffix decimal d = 123.45M; // M suffix // Char/String char c = 'A'; string s = "Hello"; // DateTime 2011-10-30 12:35 DateTime dt = new DateTime(2011, 10, 30, 12, 35, 0);
- float 데이타 타입은 숫자 뒤에 123.45F와 같이 F를 붙여 double이 아닌 float 타입임을 나타낸다.
- double 데이타 타입은 숫자 뒤에 123.45D과 같이 D를 붙이거나 혹은 아무것도 붙이지 않음으로 해서 double 타입임을 나타낸다.
- decimal 데이타 타입은 숫자 뒤에 123.45M과 같이 M를 붙여 decimal 타입임을 나타낸다.
- char 데이타 타입은 작은따옴표 ' (single quotation)을 사용하여 한 문자를 할당한다.
- string 데이타 타입은 큰따옴표 " (double quotation)을 사용하여 문자열을 할당한다.
최대값, 최소값?
숫자형 데이타 타입의 최대값 혹은 최소값을 알아내기 위해서는 .NET 데이타 타입 클래스들의 MaxValue, MinValue 프로퍼티를 사용한다. C# 데이타 타입 키워드 뒤에서도 이러한 프로퍼티를 직접 호출할 수 있다. 즉, int.MaxValue 혹은 Int32.MaxValue 처럼 사용할 수 있다.
NULL
어떤 변수가 메모리 상에 어떤 데이타도 가지고 있지 않다는 의미로서 NULL을 사용하는데, NULL을 표현하기 위하여 C# 에서는 소문자 null 이라는 키워드를 사용한다.
모든 데이타 타입이 NULL을 가질 수 있는 것은 아니며, 사실 데이타 타입은 NULL을 가질 수 있는 타입 (Reference 타입)과 가질 수 없는 타입 (Value 타입)으로 구분될 수 있다.
아래는 NULL을 가질 수 있는 문자열(string) 타입의 변수 s 에 null 을 할당하는 예이다.
Nullable Type
정수(int)나 날짜(DateTime)와 같은 Value Type은 일반적으로 NULL을 가질 수 없다. C# 2.0에서부터 이러한 타입들에 NULL을 가질 수 있게 하였는데, 이를 Nullable Type 이라 부른다.
C#에서 물음표(?)를 int나 DateTime 타입명 뒤에 붙이면 즉, int? 혹은 DateTime? 같이 하면 Nullable Type이 된다. 이는 컴파일하면 .NET의 Nullable<T> 타입으로 변환된다. Nullable Type (예: int?) 을 일반 Value Type (예: int)으로 변경하기 위해서는 Nullable의 .Value 속성을 사용한다.
예제
// Nullable 타입 int? i = null; i = 101; bool? b = null; //int? 를 int로 할당 Nullable<int> j = null; j = 10; int k = j.Value;
'C샵' 카테고리의 다른 글
[C#] C#의 버전 알아보자 (0) | 2020.04.16 |
---|---|
[C#] C#이란 무엇일까? 기초알아보기 (1) (0) | 2020.04.16 |
[C#] TXT 불러오기 소스 (0) | 2020.04.13 |
[C#] 네이버 카페 인증소스 (0) | 2020.04.13 |
C#은 .NET Framework 버전 및 Visual Studio 버전과 밀접한 관련이 있으며, 다음 도표에서 각 버젼별 연관성을 살펴 볼 수 있다.
셀 전체 선택
- 0열 선택0열 다음에 열 추가
- 1열 선택1열 다음에 열 추가
- 2열 선택2열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
- 1행 선택1행 다음에 행 추가
- 2행 선택2행 다음에 행 추가
- 3행 선택3행 다음에 행 추가
- 4행 선택4행 다음에 행 추가
- 5행 선택5행 다음에 행 추가
- 6행 선택6행 다음에 행 추가
- 7행 선택7행 다음에 행 추가
- 8행 선택8행 다음에 행 추가
- 9행 선택9행 다음에 행 추가
- 10행 선택10행 다음에 행 추가
- 11행 선택11행 다음에 행 추가
- 12행 선택12행 다음에 행 추가
- 13행 선택13행 다음에 행 추가
열 너비 조절
행 높이 조절
.NET 버전 |
C# 버전 |
Visual Studio |
.NET 1.0 |
C# 1.0 |
Visual Studio .NET |
.NET 1.1 |
C# 1.1 |
Visual Studio .NET 2003 |
.NET 2.0 |
C# 2.0 |
Visual Studio 2005 |
.NET 3.0 |
C# 2.0 |
Visual Studio 2005 Extensions |
.NET 3.5 |
C# 3.0 |
Visual Studio 2008 |
.NET 4.0 |
C# 4.0 |
Visual Studio 2010 |
.NET 4.5 |
C# 5.0 |
Visual Studio 2012 Visual Studio 2013 |
.NET 4.6 |
C# 6.0 |
Visual Studio 2015 |
.NET 4.6.2 |
C# 7.0 |
Visual Studio 2017 |
.NET 4.7 |
C# 7.1 |
Visual Studio 2017 Update 15.3 |
.NET 4.7.1 |
C# 7.2 |
Visual Studio 2017 Update 15.5 |
.NET 4.7.2 |
C# 7.3 |
Visual Studio 2017 Update 15.7 |
.NET Core 3.0 |
C# 8.0 |
Visual Studio 2019 Update 16.3 + .NET Core 3.0 |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
Visual Studio 2010은 .NET 4.0 뿐만 아니라 .NET 2.0, .NET 3.0, .NET 3.5도 지원한다.
Visual Studio 2008은 .NET 3.5 뿐만 아니라 .NET 2.0, .NET 3.0도 지원한다.
C# 7.1, C# 7.2, C# 7.3은 Minor 버전으로 자동으로 Enable되지 않으며, VS에서 C# 프로젝트 속성창 => Build 탭 => Advanced 버튼 => Language Version 콤보박스에서 해당 버전을 선택해야 한다.
C# 8.0을 사용하기 위해서는 VS 2019를 Update 16.3 이상으로 업데이트하고 .NET Core 3.0 을 설치한 후 사용한다. C# 8.0은 .NET Framework 4.8에서 사용할 수 없다.
C# 버전별 주요 기능
다음은 C# 버전별로 새로 추가된 주요 기능들을 요약한 것이다.
셀 전체 선택
- 0열 선택0열 다음에 열 추가
- 1열 선택1열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
- 1행 선택1행 다음에 행 추가
- 2행 선택2행 다음에 행 추가
- 3행 선택3행 다음에 행 추가
- 4행 선택4행 다음에 행 추가
- 5행 선택5행 다음에 행 추가
- 6행 선택6행 다음에 행 추가
- 7행 선택7행 다음에 행 추가
열 너비 조절
행 높이 조절
C# 버전 |
주요 기능 |
C# 2.0 |
C# Generics Anonymous Method (무명 메서드) Nullable Type Partial Type C# yield 키워드 Delegate에 대한 Covariance / Contravariance |
C# 3.0 |
Lambda Expression (람다식) Anonymous Type (익명 타입) Extension Method (확장 메서드) C# var 키워드 (implicit type) LINQ Expression Tree |
C# 4.0 |
C# dynamic (Late binding) Named Argument Optional Argument Indexed Property 보다 쉬운 Office COM API 지원 |
C# 5.0 |
C# async / await Caller Information |
C# 6.0 |
널 조건 연산자 (Null-conditional operator) 문자열 내삽(內揷) 기능 (String Interpolation) Dictionary Initializer nameof 연산자 using static 문 catch/finally 블럭에서 await 사용 Exception Filter 지원 자동 속성 초기자 (Auto-Property Initializer) 읽기전용 자동 속성 (Getter only) Expression-bodied member 사용 |
C# 7.0 |
C# 7.0: 패턴 매칭 C# 7.0: 튜플 (Tuple) C# 7.0: 로컬 함수 (Local Function) C# 7.0: out 파라미터 C# 7.0: 자리수 분리자와 이진 리터럴 C# 7.0: Deconstructor C# 7.0: ref local 과 ref return C# 7.0: async 커스텀 리턴 타입 C# 7.0: 향상된 Expression-bodied 표현 C# 7.0: throw expression |
C# 8.0 |
C# 8.0: 디폴트 인터페이스 멤버 (Default Inteface Members) C# 8.0: 향상된 패턴 매칭 기능 (Pattern Matching) C# 8.0: Nullable Reference Type C# 8.0: 인덱싱과 슬라이싱 (Indexing / Slicing) C# 8.0: 비동기 스트림 (Async Stream) C# 8.0: using 선언 C# 8.0: 널 병합 할당 연산자 (Null-coalescing assignment) C# 8.0: 구조체(struct) 읽기 전용 멤버 C# 8.0: 기타 기능들 |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
'C샵' 카테고리의 다른 글
[C#] C# 데이터 타입 배워보기 (종류) (1) | 2020.04.16 |
---|---|
[C#] C#이란 무엇일까? 기초알아보기 (1) (0) | 2020.04.16 |
[C#] TXT 불러오기 소스 (0) | 2020.04.13 |
[C#] 네이버 카페 인증소스 (0) | 2020.04.13 |
C# 프로그래밍 언어
C#은 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어로서 Java 나 C++와 비슷한 면들을 많이 가지고 있다. C#을 이야기 하면 자연스럽게 .NET Framework을 함께 이야기 해야할 정도로 C#은 .NET Framework을 이용하여 프로그래밍하는 대표적인 언어이다. C#은 윈도우 프로그래밍, 웹 프로그래밍, 게임 및 모바일 프로그래밍 등 모든 영역에서 사용되는 범용 프로그래밍 언어이다
C# 프로그램 소스코드
C# 프로그램은 .cs 라는 확장자를 사용한다.
예) test.cs, test.aspx.cs, test.xaml.cs
C++와 다르게 C#은 *.h과 같은 별도의 헤더 파일이 없다.
C# 프로그램으로부터 실행 파일을 만들기 위해서는 (1) Visual Studio를 사용하는 경우 C# 프로젝트를 빌드하여 실행파일을 생성하며 (2) Visual Studio 없이 .NET Framework에서 제공되는 C# 컴파일러인 csc.exe를 이용하여 실행파일을 생성할 수 있다.
아주 간단한 C# 프로그램
다음은 아주 간단한 C# 프로그램 예제로서 Hello World 라는 텍스트를 콘솔 화면에 출력하는 프로그램이다.
예제
namespace Intro_Ex1 { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello World..."); } } }
- 모든 C# 프로그램은 Main()이라는 시작 함수(메서드)를 가져야 한다. Main() 메소드는 임의의 클래스 안에서 존재하며, 프로그램 상에 단 1개만 있어야 한다.
- Main()는 static으로 선언되며, 메소드 인자는 string[] 문자열이다.
- System.Console은 .NET Framework 클래스이며, WriteLine은 화면에 데이타를 Console클래스의 출력하는 메서드이다.
C# 코멘트
C# 에서 코멘트를 사용하기 위해서는 (1) 한 라인에 대해 코멘트할 경우 // 을 사용하고 (2) 복수 라인에 대해 코멘트를 할 경우는 /* */ 를 사용한다.
예제
namespace Intro_Ex2 { class Program { static void Main(string[] args) { // 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함 int a = 1; int b = 1; // 코멘트: 하나의 문장 뒤에 코멘트를 달 수 있음 /* 복수 라인에 대한 코멘트 int c; int d; */ } } }
'C샵' 카테고리의 다른 글
[C#] C# 데이터 타입 배워보기 (종류) (1) | 2020.04.16 |
---|---|
[C#] C#의 버전 알아보자 (0) | 2020.04.16 |
[C#] TXT 불러오기 소스 (0) | 2020.04.13 |
[C#] 네이버 카페 인증소스 (0) | 2020.04.13 |
'자료실' 카테고리의 다른 글
컴퓨터 하드변경 프로그램 (HWID_CHANGER) (0) | 2020.04.15 |
---|---|
자판기 추출 하는방법 (0) | 2020.04.15 |
유튜브 봇뷰 프로그램 V3 (조회수 올리기) (Free) (1) | 2020.04.15 |
[델파이] 컴포넌트 스킨 다운로드 (0) | 2020.04.15 |
[싸이버정보지식방] 구글/유튜브 뚫기 프로그램 (0) | 2020.04.11 |
JOIN 의 개념
서로 다른 테이블을 공통 컬럼을 기준으로 합치는(결합하는) 테이블 단위 연산
조인의 결과 테이블은 이전 테이블의 컬럼 수의 합과 같다.
SELECT * FROM 테이블 1 JOIN 테이블 2 ON 테이블1.컬럼명 = 테이블2.컬럼명 ...
조인 시 서로 다른 테이블에 같은 컬럼명이 존재하면 구분을 위해 테이블명.컬럼명으로 사용해서 표시
예제
- city 테이블과 country 테이블을 조인하시오. (city.CountryCode = country.Code)
- 국가코드와 해당 나라의 GNP 를 표시하시오
결과 확인
- SELECT * FROM city JOIN country ON city.CountryCode = country.Code;
- SELECT city.CountryCode, country.GNP FROM city join country ON
city.CountryCode = country.Code;
JOIN 의 종류
조인 시 NULL 값을 허용하는 내부 조인(불가)과 외부조인(허용)으로 구분
INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN
INNER JOIN
조인 시 NULL 값을 허용하지 않음
(NULL 값을 가진 레코드는 조인결과에 빠짐)
LEFT JOIN
조인 시 JOIN 의 왼쪽 테이블의 NULL 값을 포함해서 표시
RIGHT JOIN
조인 시 JOIN 의 오른쪽 테이블의 NULL 값을 포함해서 표시
FULL JOIN
MySQL 은 지원하지 않음
예제
- city 테이블에 국가코드가 없는 도시가 있는지 확인
- country 테이블에는 존재하지만 도시가 하나도 없는 나라가 있는지 확인
- 이 때 INNER JOIN / LEFT JOIN / RIGHT JOIN 의 차이점으로 확인
결과 확인
- SELECT COUNT(*) FROM city WHERE CountryCode is NULL;
- SELECT COUNT(*) FROM city LEFT JOIN country ON city.CountryCode = country.Code;
(country 값이 존재하지 않는 city 는 포함)
- SELECT COUNT(*) FROM city RIGHT JOIN country ON city.CountryCode = country.Code;
(country 중 도시 수가 하나도 없는 country 는 포함)
별명(ALIAS)
SQL 쿼리 결과 생성 시 컬럼명에 대한 별명을 사용해 표시하는 기능
SELECT 테이블명1.컬럼명1 AS 별명1, 테이블명2.컬럼명2 AS 별명2 FROM ....
조인할 때 많이 사용된다
예제
- city 테이블과 country 테이블을 조인해서 국가코드 'KOR' 인 나라의 축약표시명(Abbr) 과 정식명(Full Name)을 표시하시오
결과 확인
- SELECT city.CoutryCode AS Abbr, country.Name AS FullName FROM city JOIN country on city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';
뷰 (VIEW)
SQL 쿼리의 결과값을 임시 테이블로 저장해서 사용할 수 있음
사용 용도가 끝나면 명시적으로 삭제해야 함 (DROP VIEW ....)
CREATE VIEW 뷰명 AS SELECT ...
예제
CREATE VIEW sampleView AS SELECT city.CountryCode AS Abbr, country.Name AS FullName FROM city JOIN country ON city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';
SELECT * FROM sampleView;
'SQL' 카테고리의 다른 글
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
---|---|
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
DISTINCT 연산자
SELECT 문의 결과 값에서 특정 컬럼만 출력할 경우 중복된 값들이 나오는 경우에 이를 제거해서 표시하는 기능
SELECT DISTINCT 컬럼명 1, 컬럼명 2, ... FROM 테이블명
예제
- 국가코드가 'KOR' 인 도시들의 국가코드를 표시하시오.
- 국가코드가 'KOR' 인 도시들의 국가코드를 중복제거해서 표시하시오.
결과 확인
- SELECT CountryCode FROM city WHERE CountryCode = 'KOR';
- SELECT DISTINCT CountryCode FROM city WHERE CountryCode = 'KOR';
논리연산자 (AND, OR, NOT)
SELECT 문의 조건절에 논리 조건 적용해서 적용할 수 있는 연산자
SELECT * FROM 테이블명 WHERE (NOT) 조건 1 AND/OR (NOT) 조건 2 .....
예제
- 국가코드가 'KOR' 이면서 인구가 100만 이상인 도시를 찾으시오
- 국가코드가 'KOR', 'CNN', 'JPN' 인 도시를 찾으시오
- 국가코드가 'KOR' 이 아니면서 인구가 100만 이상인 도시를 찾으시오.
결과 확인
- SELECT * FROM city WHERE CountryCode = 'KOR' AND Population > 1000000
- SELECT * FROM city WHERE CountryCode = 'KOR' OR CountryCode = 'CNN' OR CountryCode = 'JPN'
- (위와 같은 코드) SELECT * FROM city WHERE CountryCode in ('KOR', 'CNN', 'JPN')
- SELECT * FROM city WHERE CountryCOde != 'KOR' AND Population > 1000000
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
[SQL] SQL 이란 무엇일까? (기초배우기 정의,종류) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
SQL (Structured Query Language) :
- 관계형 데이터베이스에서 사용하는 표준 질의언어를말한다.
- 사용 방법이나 문법이 다른 언어(Java, C, C#, Java)보다 단순하다.
- 모든 DBMS에서 사용 가능하다.
- 인터프리터 언어
- 대소문자 구별하지 않는다.
DML :
- 데이터베이스의 테이블에 있는 내용을 직접 조작하는 기능
- 테이블의 레코드를 CRUD (Create, Retrieve, Update, Delete)
SQL 문
내용
insert
데이터베이스 객체에데이터를 입력
delete
데이터베이스 객체에데이터를 삭제
update
데이터베이스 객체 안의데이터 수정
select
데이터베이스 객체 안의데이터 조회
DDL :
- 데이터베이스의 스키마를 정의, 생성, 수정하는 기능
- 테이블 생성, 컬럼 추가, 타입 변경, 각종 제약조건 지정,수정 등
SQL 문
내용
create
데이터베이스 객체를생성
drop
데이터베이스 객체를삭제
alter
기존에 존재하는데이터베이스 객체를다시 정의
DCL :
- 데이베이스의 테이블에 접근 권한이나 CRUD 권한을 정의하는기능
- 특정 사용자에게 테이블의 조회권한 허가 / 금지 등
SQL문
내용
grant
데이터베이스 객체에권한을 부여
revoke
이미 부여된데이터베이스 객체권한을 취소
CRUD (Create, Retrieve, Update, Delete) :
이름
조작
SQL
create
read (retrieve)
생성
읽기 (인출)
insert
select
update
갱신
update
delete (destroy)
삭제
delete
Create : 데이터베이스 객체 생성
- insert into
- 새로운 레코드를 추가
Update : 데이터베이스 객체 안의 데이터 수정
- update
- 특정 조건의 레코드의 컬럼 값을 수정
Delete : 데이터베이스 객체의 데이터 삭제
- delete
- 특정 조건의 레코드를 삭제
Retrieve : 데이터베이스 객체 안의 데이터 검색
- select
- 조건을 만족하는 레코드를 찾아 특정 컬럼 값(모두표시 *)을 표시
select 명령문 :
select 컬럼명 from 테이블명 where 조건절;
- "world" DB에서의 쿼리 예제
국가 코드가 'KOR' 으로 되어 있는 도시들의 이름을구하시오
select Name from city where CountryCode='KOR';
인구가 500만 이상인 도시들의 이름을 구하시오
select Name from city where Population > 5000000;
insert into 명령문 :
insert into 테이블명 (컬럼명) values (값);
- 예제
# 각각의 필드와 대응 시켜줘서 insert 를 시켜주어야한다.
insert into city (ID, Name, CountryCode, District, Population) values (10000, "Sample", "KOR", "Test", 1000000);
# 이 경우에는 모든 컬럼 값들이 일일히 필드와대응되면 생략 가능
insert into city values (20000, "SampleTest", "KOR", "Test", 2000000);
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 20000;
# ID 가 200000 인 레코드 출력
select * from city where ID = 10000;
update 명령문 :
update 테이블명 set 컬럼명=값, ..... where 조건절;
- 예제
# ID 가 10000 인 레코드의 name 을"SampleRevised" 로 변경
update city set name = "SampleRevised" where id = 10000;
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 10000;
delete 명령문 :
delete from 테이블명 where 조건절;
- 예제
# ID 가 20000 이며 Population 이 2000000 인레코드를 삭제
delete from city where (ID = 20000) AND (Population = 2000000);
# ID 가 10000 이며 Population 이 1000000 인레코드를 삭제
delete from city where (ID = 10000) AND (Population = 1000000);
- 결과 확인
# ID 가 100000 인 레코드 출력
select * from city where ID = 10000;
# ID 가 200000 인 레코드 출력
select * from city where ID = 20000;
'SQL' 카테고리의 다른 글
[SQL] JOIN VIEW,별명알아보자 (0) | 2020.04.14 |
---|---|
[SQL] 일부결과 및 집합함수 (0) | 2020.04.14 |
[SQL] 연산 논리 (기초 배우기 ) (0) | 2020.04.14 |
[SQL] 설치하기 / 다운로드 (0) | 2020.04.11 |
#include "bigint\BigIntegerLibrary.hh" #include <afx.h> #include <iostream> #include <string.h> #import "winhttp.tlb" no_namespace named_guids char* wc2ansi(CStringW& unicodestr) { char *ansistr; int lenW = wcslen(unicodestr.GetString()); int lenA = WideCharToMultiByte(CP_ACP, 0, unicodestr, lenW, 0, 0, NULL, NULL); if (lenA > 0) { ansistr = new char[lenA + 1]; WideCharToMultiByte(CP_ACP, 0, unicodestr, lenW, ansistr, lenA, NULL, NULL); ansistr[lenA] = 0; } return ansistr; } VOID ansi2wc(char* ansistr, CStringW& Result) { int lenA = lstrlenA(ansistr); int lenW; BSTR unicodestr; lenW = ::MultiByteToWideChar(CP_ACP, 0, ansistr, lenA, 0, 0); if (lenW > 0) { // Check whether conversion was successful unicodestr = ::SysAllocStringLen(0, lenW); ::MultiByteToWideChar(CP_ACP, 0, ansistr, lenA, unicodestr, lenW); } Result = CStringW(unicodestr); return; } VOID SplitKey(CStringW& szSource, CStringW* KeyArr) { DWORD dwPos = 0, dwNextPos = 0, i = 0; dwNextPos = szSource.Find(L",", 0); // Mid의 시작 지점은 0임 do { KeyArr[i++].SetString(szSource.Mid(dwPos, dwNextPos - dwPos)); dwPos = dwNextPos + 1; dwNextPos = szSource.Find(L",", dwPos); }while(dwNextPos != -1); KeyArr[i].SetString(szSource.Mid(dwPos)); return; } PBYTE pkcs1pad2(CStringW& OrgText, int dwPadNum) { PBYTE Buffer = (PBYTE)malloc(dwPadNum); int padIndex = OrgText.GetLength() - 1; while( padIndex >= 0 ) Buffer[--dwPadNum] = ((PBYTE)OrgText.Mid(padIndex--, 1).GetString())[0]; Buffer[--dwPadNum] = 0; while( dwPadNum > 2) Buffer[--dwPadNum] = rand() % 256 + 1; Buffer[--dwPadNum] = 2; Buffer[--dwPadNum] = 0; return Buffer; } VOID Get16Times(BigInteger& Result, DWORD dwTimes) { Result = BigInteger(1); for(int i = 0; i < dwTimes; i++) { Result = Result * BigInteger(16); } return; } VOID RSAFastEncrypt(BigInteger& orgInt, BigInteger& exp, BigInteger& moduler, BigInteger& Result) { Result = orgInt % moduler; for(int i = 0; i < 16; i++) Result = Result * Result % moduler; Result = Result * orgInt % moduler; } int main() { CStringW szID(L"비밀번호"); CStringW szPW(L"아이디"); HRESULT hr = CoInitialize(0); if(SUCCEEDED(hr)){ IWinHttpRequestPtr IE; IE.CreateInstance(CLSID_WinHttpRequest); IE->Open(_bstr_t(L"GET"), _bstr_t(L"http://nid.naver.com/login/ext/keys.nhn")); IE->Send(); CStringW Buffer((wchar_t*)(IE->ResponseText)); CStringW KeyArr[4]; // 먼저 키를 나눈다 SplitKey(Buffer, KeyArr); // Original Text를 형성한다. CStringW OrgText; OrgText = OrgText + (char)KeyArr[0].GetLength(); OrgText = OrgText + KeyArr[0]; OrgText = OrgText + (char)szID.GetLength(); OrgText = OrgText + szID; OrgText = OrgText + (char)szPW.GetLength(); OrgText = OrgText + szPW; // 문자열을 Byte Array로 변환하고 PBYTE TextByteArr = (PBYTE)pkcs1pad2(OrgText, 128); BigInteger orgInt(0); BigInteger bigTimes; // Byte Array를 BigInteger로 치환한다. for(int i = 127; i >= 0; i--) { Get16Times(bigTimes, (127 - i) * 2); orgInt = orgInt + BigInteger(TextByteArr[i]) * bigTimes; } BigInteger Result(0); BigInteger eValue = stringToBigInteger(wc2ansi(KeyArr[2])); BigInteger nValue = stringToBigInteger(wc2ansi(KeyArr[3])); // 암호화를 진행한다. RSAFastEncrypt(orgInt, nValue, eValue, Result); // 이제 로그인을 진행하자 CStringW HeaderString, Converted; ansi2wc((char*)(bigUnsignedToString(Result.getMagnitude()).c_str()), Converted); HeaderString = HeaderString + "enctp=1"; HeaderString = HeaderString + "&encpw=" + Converted.MakeLower(); HeaderString = HeaderString + "&encnm=" + KeyArr[1]; HeaderString = HeaderString + "&svctype=0"; HeaderString = HeaderString + "&id="; HeaderString = HeaderString + "&pw="; HeaderString = HeaderString + "&x=35"; HeaderString = HeaderString + "&y=14"; IE->Open((_bstr_t)L"POST", (_bstr_t)L"https://nid.naver.com/nidlogin.login"); IE->SetRequestHeader((_bstr_t)L"Referer", (_bstr_t)L"http://static.nid.naver.com/login.nhn?svc=wme&url=http%3A%2F%2Fwww.naver.com&t=20120425"); IE->SetRequestHeader((_bstr_t)L"Content-Type", (_bstr_t)L"application/x-www-form-urlencoded"); IE->Send((_bstr_t)HeaderString); CStringW strResponse = (wchar_t*)IE->GetResponseText(); if( strResponse.Find(L"location.replace") != -1 ) std::cout << "로그인에 성공하였습니다." << std:
'C++' 카테고리의 다른 글
[C++] 로그인 프로그램 소스 (0) | 2020.04.15 |
---|