'select'에 해당되는 글 3건

Programming/.NET
ADO.NET 은 .NET Framework 1.0 부터 포함된 핵심 컴포넌트에 해당하며 오늘날 데이터에 접근할 수 있는 다양한 방법을 제시함으로써 근본적으로 데이터를 다루기 위한 여러 기능을 제공하고 있습니다.

ADO.NET 이전의 ADO 는 데이터베이스로부터 지속적으로 데이터 연결을 유지한 상태에서 필요한 데이터를 다루어야 했는데 연결상태가 계속해서 유지되어야 한다는 면은 비효휼적인 면을 드러냈고 곧 비연결상태에서도 데이터를 다룰 수 있어야 한다는 요구가 제시되었습니다.

비연결의 근본적인 동작방식은 데이터를 특정 컬렉션에 채워넣고 DB와의 연결을 끊은상태에서 컬렉션에 채워진 데이터를 다루는 것입니다. ADO.NET 의 DataSet 이 바로 그러한 역활을 수행하는데 컬렉션에 채워진 데이터는 데이터베이스와는 분리된 상태이지만 데이터내용은 물론 모든 테이블정보(열, 행, 릴레이션관한 것등)를 완벽히 유지하면서 데이터를 다룰 수 있습니다.

사실 이게 중요한데 이전 ADO 에서는 데이터를 담아두기 위한 단독적인 테이블이 필요했으며 이것은 데이터베이스의 테이블정보를 전혀 반영하지 않은 것이었습니다.

또한 ADO.NET 은 통합된 프로그래밍 모델로서 서버나 클라이언트 모두 같은 방법으로 데이터를 다룰 수 있어서 기존 ADO 보다는 좀더 나은 생산성을 기대할 수 있습니다.

 Select

데이터 소스를 연결하고 나서 단순히 데이터를 읽어오기만 하는 경우라면 간단히 DataReader 클래스를 사용할 수 있습니다.
public List<string> GetPersonPhone()
{
    string strCmd = "Select * From [Person].[PersonPhone];";
 
    SqlConnection conn = new SqlConnection(@"Data Source=localhost;Initial Catalog=AdventureWorks2012;User ID=sa;Password=123");
    SqlCommand cmd = new SqlCommand(strCmd, conn);
    conn.Open();
 
    List<string> rtn = new List<string>();                
            
    SqlDataReader SqlReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);                
 
    while (SqlReader.Read())
        rtn.Add(SqlReader["PhoneNumber"].ToString());
 
    return rtn;
}
▶<코드 1-1>

<코드 1-1>은 AdventureWorks2012 DB의 Person.PersonPhone 테이블의 내용을 가져와 그 중 PhoneNumbe
r 컬럼의 데이터를 List 에 담고 반환하는 예제입니다.

DB 서버의 연결을 위해 SqlConnection 클래스의 인스턴스를 생성해 연결문자열을 지정하고 뒤이어 SqlCom
mand 객체를 생성하면서 데이터를 가져오기 위한 쿼리문과 SqlConnection 객체를 전달합니다. 여기까지 하고 나면 DB연결준비는 끝난것으로 SqlConnection 객체의 Open 함수를 호출하여 지정한 DB를 열도록 합니다.

SqlCommand 클래스가 쿼리문을 실행하는 클래스로서 ExecuteReader 메소드를 호출해 쿼리를 전달하고 반환된 SqlDataReader 객체의 Read() 메소드를 순환호출함으로서 실제 내용을 읽어오도록 합니다. 그리고 모든 데이터를 배열이나 리스트등에 담게 되면 DB와의 연결은 자동으로 닫히게 됩니다.

 Insert

Insert 는 Select 처리가 별반 다르지 않습니다. 쿼리문을 Insert 에 맞게 수정하고 Select 때의 ExecuteReader 메소드 대신에 ExecuteNonQuery 메소드를 호출하는 것이 전부입니다.
public void AddPersonPhone()
{
    string strCmd = "Insert Into [Person].[PersonPhone] Values (20777, '1 (11) 500 555-1212', 1, GETDATE());";
 
    SqlConnection conn = new SqlConnection(@"Data Source=localhost;Initial Catalog=AdventureWorks2012;User ID=sa;Password=123");
    SqlCommand cmd = new SqlCommand(strCmd, conn);
    conn.Open();
 
    cmd.ExecuteNonQuery();
    conn.Close();
}
▶<코드 2-1>

<코드 2-1> 에서는 Select 때와는 달리 데이터를 담을 수 있는 배열등이 필요없으며 단지 DB 를 Open 한 이후 쿼리를 실행하는 ExecuteNonQuery 메소드를 바로 호출합니다. 다만 필요한 작업을 수행한 이 후 Close 메소드를 호출하여 DB 연결을 닫아주도록 합니다.

 Update

Table 의 Update 는 <코드 2-1> Insert 작업에서 쿼리만 Update 구문으로 바꿔주면 됩니다. 쉽죠?
public void ModifyPersonPhone()
{
    string strCmd = "Update [Person].[PersonPhone] Set PhoneNumber = '000-000-0000' Where BusinessEntityID = 20777;";
 
    SqlConnection conn = new SqlConnection(@"Data Source=localhost;Initial Catalog=AdventureWorks2012;User ID=sa;Password=123");
    SqlCommand cmd = new SqlCommand(strCmd, conn);
    conn.Open();
 
    cmd.ExecuteNonQuery();
    conn.Close();
}
▶<코드 3-1>

참고로 ExecuteNonQuery 함수는 쿼리 실행에 적용된 Table 의 Row 수를 반환합니다. 따라서 만일 Update 로 인해 변경된 Row 수를 알아야 한다면 ExecuteNonQuery 함수호출시 다음과 같은 방법으로 결과값을 가져오면 됩니다.
int updateRow = cmd.ExecuteNonQuery();
이러한 처리 방법은 Insert 나 Delete 등에도 똑같이 적용될 수 있습니다.

 Delete

Delete 는 Insert 나 Update 와 비교해 쿼리문만 다를 뿐 모든처리과정이 같습니다.

public void delPersonPhone()
{
    string strCmd = "Delete From Person.PersonPhone Where BusinessEntityID = 20777;";
 
    SqlConnection conn = new SqlConnection(@"Data Source=localhost;Initial Catalog=AdventureWorks2012;User ID=sa;Password=123");
    SqlCommand cmd = new SqlCommand(strCmd, conn);
    conn.Open();
 
    int updateRow = cmd.ExecuteNonQuery();
    conn.Close();
}
3 0
Programming/HTML CSS
1. form, input, select, textarea 사용
<form>
이름 : <input type="input"> <br />
주소 :
<select>
  <optgroup label="컴퓨터">
   <option>CPU</option>
   <option>Memory</option>
   <option>HardDisk</option>
  </optgroup>
  <optgroup label="자동차">
   <option>트럭</option>
   <option>승용차</option>
  </optgroup>
 </select> <br />
자기소개 :
<textarea>안녕하세요.</textarea>
▶ 사용자에게 어떠한 입력을 받아들이기 위해 입력양식을 작성하며 form은 입력양식의 전체적인 부분을, input는 실질적으로 데이터입력을 받아들이는 역활을 합니다. 이때 form은 내부에 포함된 input에 입력사항을 지정된 곳으로 전송하도록 합니다.

select는 option태그로 항목을 추가하며 해당 항목이 콤보박스 형태로 표시되도록 합니다. optgroup 태그를 select 태그 내부에 사용하면 특정 항목을 group으로 나눌 수 있습니다. 다만 group으로 나눌 필요가 없는 경우에는 optgroup태그는 생략될 수 있습니다.

textarea는 여러줄의 텍스트 입력을 가능하게 합니다. 미리 어떠한 내용을 보이게 하려면 textarea내부에 원하는 내용을 입력하고, 그렇지 않으면 비워두면 됩니다.

textarea 태그는 특별한 경우가 위 예제와 같이 사용하고 아래 처럼은 쓰지 않는 것이 좋습니다. 원하는 방식대로 출력되지 않을 수 있기 때문입니다.
<textarea>
    안녕하세요.
    반갑습니다.
</textarea>
2. form, input, select, textarea 속성

(1) form 속성

 action  입력된 데이터를 처리하는 페이지를 지정합니다.
 enctype  action 속성에 설정된 페이지에 데이터를 보낼때의 휴형을 지정합니다. application/x-www-form-urlencoded 는 기본값이며 데이터를 encode합니다. multipart/form-data 값은 파일을 업로드하고자 하는 경우에 사용하며 text/plain은 공백을 +로 바꿀뿐 특수문자를 endcode하지 않습니다.
 name  form의 이름을 지정합니다.
 method  get과 post 두가지를 지정할 수 있는데 기본값은 get입니다. 대게는 post가 많이 사용되며 get으로 지정하면 'http://action주소?user_name=입력값' 형태로 주소뒤에 값을 붙여 전송하게 됩니다.
 target  target 에 action 속성과 같이 페이지를 지정하면 action 속성에 지정된 페이지로 데이터를 보낸 후 target에 지정된 페이지로 이동하게 됩니다. 대게는 action에서 데이터를 처리하고 결과를 target에서 보는 것으로 사용됩니다.

(2) input 속성

 type  input 이 어떤 형태로 데이터를 받아들일지 지정하며 사용할 수 있는 값은 별도의 표에 정리하였습니다.
 name  input 의 이름을 지정합니다.
 value  표시될 기본값을 지정하거나 form의 action에 데이터를 전송할때 실질적으로 전송되어야 하는 데이터를 지정합니다. 예를 들어 "<input type="checkbox" value="1">서울" 과 같이 사용된 경우 해당 input을 선택했을때 전달되는 데이터는 '서울'이 아니라 1이 됩니다.
 size  숫자로만 지정하며 type의 값이 text나 password인 경우 입력될 수 있는 최대문자열 길이를 지정합니다.

아래는 input 태그의 type에 일반적으로 사용되는 내용입니다.

 button  버튼
 checkbox  체크박스
 file  파일 업로드
 hidden  요소 숨김
 image  이미지 버튼
 password  비밀번호 입력
 radio  라디오 버튼
 reset  초기화 버튼
 submit  전송 버튼(입력완료 후)
 text  문자열 입력

아래 값은 HTML5 에서 새롭게 적용된 내용이며 일부 오페라를 제외한 일부 브라우저에서는 제대로 표현되지 않을 수 있습니다.

 color  색상 입력
 date  일 입력
 datetime  날짜 입력
 datetime-local  지역 선택
 email  이메일 입력
 month  월 입력
 number  숫자입력
 range  범위값 입력
 search  검색어 입력
 tel  전화번호 입력
 time  시간 입력
 url  url 입력
 week  주단위 입력

(3) select (optgroup, option) 속성

 name  select 의 이름을 지정합니다.
 value  option에 사용되는 속성으로서 form의 action에 select에서 선택한 option 데이터를 전송할때 실질적으로 전송되어야 하는 데이터를 전달합니다. 예를 들어 <option value="1">서울</option>으로 option을 추가해 놓고 select에서 서울항목을 선택했다면 전달되는 데이터는 '서울'이 아니라 '1'이 됩니다.
 multiple  select 항목은 기본적으로 하나의 항목만 선택이 가능하지만 이 속성에 multiple 값을 지정하면 여러개의 항목을 다중적으로 선택할 수 있습니다.
 label  select 항목을 여러개의 group으로 나누고자 optgroup 태그를 사용한 경우 해당 태그에 붙일 수 있는 속성입니다. 이 속성에는 각 항목에 대한 이름을 붙이는데 사용됩니다. 

(4) textarea 속성

 name  textarea 의 이름을 지정합니다.
 cols  textarea 의 넓이를 지정합니다.
 rows  textarea 의 높이를 지정합니다.

'Programming > HTML CSS' 카테고리의 다른 글

[CSS] vertical-align  (0) 2013.04.23
[HTML / HTML5] ruby, rt, rp (루비문자)  (0) 2013.04.22
[HTML / HTML5] form, input, select, textarea  (0) 2013.04.18
[HTML / HTML5] a (링크)  (0) 2013.04.17
[HTML5] audio (오디오)  (0) 2013.04.16
[CSS] color  (0) 2013.04.15
0 0
Programming/Microsoft SQL Server
Select *
From Person.Person

Person.Person 테이블의 모든행과 열값을 가져오도록 합니다.


Select *
From Person.Person
Where PersonType = 'IN'

Person.Person 테이블의 PersonType 열값이 'IN'인것만 가져오도록 합니다.


Where 이하 조건문에서는 '='연산자 이외에 다음의 다양한 비교 연산자를 사용할 수 있습니다.

 조건  설명
 >  크다.
 <  작다.
 >=  크거나 같다.
 <=  작거나 같다.
 <>, !=  같지않다.
 !>  크지않다.
 !<  

Select *
From Person.Person
Where PersonType = 'IN'
And FirstName Like '%Andy%'

PersonType이 'IN'이며 FirstName중에 'Andy'라는 문자열값을 포함하고 있는것만 조회합니다.


Like는 문자열관련 비교 연산자에 해당하며 지정한 문자 혹은 문자열을 조건으로 데이터를 조회하게 됩니다. 반면 Not Like는 Like와 반대로 지정한 문자열을 포함하지 않는것만을 조회대상으로 합니다.

Like에서 비교대상 문자열을 지정하는 경우, 아래 특수문자를 사용하여 좀더 유연한 조회조건을 지정할 수도 있습니다.

(1) % 
다른 문자열을 대체합니다. 예를 들어 '%Korea' 라고 쓰는경우 앞의 문자열은 상관없이 끝문자열이 'Korea'로 끝나는 것만을 조회대상으로 합니다. 반면 'Korea%'라고 하는 경우 끝 문자열은 상관없이 시작문자열이 'Korea'인것만을 조회 대상으로 합니다.

결국 %를 조건으로 하고자 하는 문자열의 앞뒤에 모두 사용할 경우 전체문자열 중에서 'Korea'라는 문자열을 포함하는 것만 조회대상이 됩니다.

(2) _
%는 문자열 단위의 조회조건을 나타내지만 _ 는 한문자 만을 대체할 수 있습니다.

예를 들어 '_Korea' 이면 'Korea'로 끝나는 6자의 문자열만을 조건으로 하고 'Korea_'이면 'Korea'로 시작하는 6자의 문자열만을 조회대상으로 합게 됩니다.

물론 '_Korea_'또한 'Korea'를 포함하고 있는 7문자의 문자열을 조회 대상으로 보게 됩니다.

(3) []
일부분의 범위만을 조회대상으로 하고자 경우 []를 쓸 수 있습니다.

'[a-c]Computer'라고 하면 앞문자가 a부터 c까지이며 Computer로 끝나는 문자열만을 대상으로 한 것으로서 aComputer, bComputer, cComputer가 조건이 됩니다.

'[a,c]Computer'는 앞문자가 a와 c이며 Computer로 끝나는 문자열만 해당하는 것으로 aComputer, cComputer가 조회 대상이 됩니다.

반면 []안에 ^를 지정할경우 지정한 문자에 포함되지 않는 것만([]의 반대개념)을 조건으로 보게 됩니다.

Select *
From Person.Person
Where PersonType = 'IN'
Or EmailPromotion = 0

PersonType이 'IN'이거나 EmailPromotion이 0인것만 조회합니다.


Where 조건식에는 And 또는 Or를 통해 조건식에서 참, 거짓을 적용할 수도 있습니다.

(1) And
지정한 두 조건이 모두 참이여야만 합니다. 예를 들어 a = 0 And b = 0 라고 했을 경우 a가 0이고 b가 0인것만을 조회대상으로 합니다.

(2) Or
지정한 두 조건중에서 하나만 참이면 됩니다. 예를 들어 a = 0 or b = 0 라고 했을 경우 a가 0이거나 b가 0인것만을 조회대상으로 하게 됩니다.

참고:
Not 조건식은 부정의 의미로서 해당 조건이 거짓에 대항하는 경우입니다.
예를 들어 Not PersonType = 'IN' And FirstName Like '%Andy%' 이라는 조건식이 지정되는 경우  PersonType이 IN이 아니고 FistName에 Andy문자열이 포함된것만을 조회한다는 의미가 됩니다.

Select *
From Person.Person
Where PersonType In ('IN', 'EM')

PersonType이 'IN'이거나 'EM'인것만 조회합니다.


In은 ()안에서 ,로 구분된 값에 해당하는 것만을 조회 대상으로 합니다. 이때 In은 포함하는 것을 Not In은 포함하지 않는 것을 의미합니다.

Select *
From Person.Person
Where BusinessEntityID BetWeen 10 And 20

BusinessEntityID값이 10에서 20까지인것만을 조회합니다.


BetWeen은 지정된 범위안에 해당하는 모든 열을 조회 대상으로 합니다. 그래서 <1-6>에서 쓰인 BetWeen조건은 Where BusinessEntityID >= 10 And BusinessEntityID <= 20과 같은 결과를 가져오게 됩니다.

또한 Not BetWeen은 지정된 범위안에 포함되지 않는 경우에 해당합니다.

Select *
From Person.Person
Where Title Is Null

Title열값이 Null인것만을 조회합니다.


Null이라고 하는것은 아무것도 없는 상태를 의미합니다. 이것은 0 혹은 공백과는 완전히 다른 것으로서 이들과 혼동하지 않도록 주의하십시오.

Null은 그 특징에 따라 일반 연산자로는 Null을 구분할 수 없습니다. 그래서 Is Null과 Is Not Null등의 Null전용 연산자를 따로 써야 합니다.(Is Null은 Null인것만 Is Not Null은 Null이 아닌것만을 조회대상으로 합니다.)

참고:
Set Ansi_Nulls Off 명령을 통해 Ansi_Nulls를 Off시키면 Null을 Is Null이나 Is Not Null이 아닌 다른 일반연산자(= 이나 <> 등)를 통해서도 조회가 가능해 집니다.(그리 권장하지는 않습니다.)

Select DepartmentID, Name
From HumanResources.Department

HumanResources.Department Table에서 DepartmentID와 Name열만을 조회합니다.


조회하고자 하는 Table의 모든열을 가져오려면 * 를 사용하고 열의 일부분만 가져오려면 해당 열 이름을 ,로 구분지어 지정하면 됩니다.

Select DepartmentID, Name
From HumanResources.Department
Order By DepartmentID

HumanResources.Department Table에서 DepartmentID와 Name열만을 조회하되 DepartmentID열값의 순으로 정렬합니다.


Order By는 지정한 열을 기준으로 데이터를 정렬하여 출력하도록 합니다.

만일 데이터를 오름차순으로 정렬하고자 하신다면 "Orde By [정렬기준열이름] Asc" 로 하고 내림차순으로 하고자 하신다면 "Orde By [정렬기준열이름] Desc"처름 사용하시면 됩니다.(기본값 Asc)

참고:
정렬기준열값에 Null이 있는경우 가장 작은 값으로 처리합니다.

Select DepartmentID, Name As '이름'
From HumanResources.Department

Name열을 조회할때 열 이름을 '이름'으로 출력합니다.

 

이는 특정 컬럼에 별칭을 지정한 것으로 As는 있어도 되고 없어도 됩니다. 약간 다른 방법으로 별칭 = 열이름 형식과 같이 지정할 수도 있습니다.

 

Select 이름 = [Name]
From HumanResources.Department;

 

Select DepartmentID, 'Name : ' + Name
From HumanResources.Department


HumanResources.Department Table조회시 Name열값 앞에 "Name : "라는 문자열을 더해서 출력하도록 합니다.


Select BusinessEntityID, Stuff(NationalIDNumber, 3, 0, '-')
From HumanResources.Employee


Stuff함수를 쓰면 조회하고자 하는 열값 중간에 다른 문자열을 삽입하여 조회할 수 있습니다.

Stuff(대상열 혹은 문자열, 삽입위치(삭제위치), 삭제위치에서 부터 삭제할 문자수, 삽입위치에서 부터 삽입할 문자 혹은 문자열)

'Programming > Microsoft SQL Server' 카테고리의 다른 글

[SQL Server] - Sample Database 설치  (0) 2010.05.06
[SQL] 주석과 식별자  (0) 2010.05.04
[SQL] Select  (0) 2010.05.03
[SQL] 시간관련 형식 변환  (0) 2010.04.30
[SQL] Table 조회시 합계 표시하기  (0) 2010.04.26
[SQL] 하위 Query(Sub Query)  (0) 2010.04.21
0 0
1
블로그 이미지

클리엘