엑셀 SQL 업데이트 :: SQL_UPDATE 명령문 사용법 총정리
엑셀 SQL_UPDATE 명령문 목차 바로가기
요약
엑셀에서 SQL INSERT 쿼리를 실행하여 데이터를 업데이트합니다.
명령문 구문
SQL_UPDATE 연결문자열, 테이블이름, 필드목록, 값목록, WHERE절
사용된 인수 및 변수 알아보기
인수 | 설명 |
연결문자열 [String] |
OLEDB(ADO.NET)로 연결할 연결문자열입니다. |
테이블이름 [String] |
DB에서 데이터를 업데이트할 테이블 이름입니다. |
필드목록 [String] |
테이블에서 값을 업데이트할 필드 목록입니다. 필드가 여러개일 경우 쉼표(,)로 구분하여 작성합니다. 예) "필드1,필드2,필드3,..." |
값목록 [String] |
각 필드에 업데이트할 값 목록입니다. 값이 여러개일 경우, 쉼표(,)로 구분하여 작성합니다. 값 목록의 개수는 필드 목록의 개수와 반드시 동일해야 하며, 그렇지 않을 경우 SQL_UPDATE 함수는 오류창을 출력합니다. 예) "값1,값2,값3,..." |
WHERE절 [String] |
업데이트 할 행의 WHERE 절을 작성합니다. 예) "id=1" |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀VBA함수] SQL_UPDATE 명령문예제파일
상세 설명
SQL_UPDATE 함수는 엑셀에서 SQL UPDATE 쿼리를 실행하여 서버에 데이터를 갱신하는 함수입니다.
본 함수의 인수로 테이블이름, 필드목록, 값목록, WHERE절을 차례대로 작성하면, SQL UPDATE 쿼리문이 아래와 같이 작성됩니다. SQL UPDATE 쿼리에 대한 자세한 설명은 관련 링크를 참고하세요.
UPDATE 테이블명 SET 필드1=값1, 필드2=값2, ... WHERE WHERE절;실전 사용 예제
- 특정 서버 users 테이블에서 id가 1인 레코드의 "user_name, user_age" 을 "오빠두, 38"로 갱신하기
Dim ConnString As String ConnString = "Server=database.windows.net,1433;User ID:xxx..." SQL_UPDATE ConnString, "users", "user_name,user_age", "오빠두,38", "id=1"
엑셀 SQL 업데이트, SQL_UPDATE 명령문 동작원리
SQL_UPDATE 명령문 전체 코드
Sub SQL_UPDATE(Connection As String, Table As String, Fields As String, Values As String, Where As String) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ SQL_UPDATE 함수 '▶ SQL 서버에 연결 후 특정 행의 데이터를 업데이트합니다. '▶ 인수 설명 '_____________Connection : SQL OLE DB로 연결할 연결문자열(Connection String)을 입력합니다. '_____________Table : DB 중 데이터를 Update 할 테이블 이름입니다. '_____________Fields : 데이터를 변경할 대상 필드명입니다. 쉼표(,)로 구분하여 작성합니다. '_____________Values : 추가할 데이터입니다. 반드시 Fields와 짝이 되도록 입력합니다. '_____________Where : Update 할 Row의 Where 절을 작성합니다. '▶ 사용 예제 'SQL_UPDATE "Server=database.windows.net,1433;User ID=oppadu;Password=123;", "테이블명", "필드1,필드2,...", "값1, 값2, ...", "필드명=조건" '■ 사용된 보조명령문 'SQL_CONN 'SQL_EXECUTE 'SQL_UPDATE_STRING '############################################################### Dim DB As Object Set DB = SQL_CONN(Connection) SQL_EXECUTE DB, SQL_UPDATE_STRING(Table, Fields, Values, Where) End Sub Function SQL_UPDATE_STRING(Table As String, Fields As String, Values As String, Where As String) As String Dim vFields As Variant: Dim vValues As Variant Dim i As Long: Dim sValue As String vFields = Split(Fields, ","): vValues = Split(Values, ",") If UBound(vFields) <> UBound(vValues) Then MsgBox "UPDATE 쿼리가 잘못 작성되었습니다." & vbNewLine & "Fields 와 Value의 개수가 다릅니다." & vbNewLine & _ "Fields : " & Fields & vbNewLine & "Values : " & Values, vbCritical End End If SQL_UPDATE_STRING = "UPDATE " & Table & " SET " For i = LBound(vFields) To UBound(vFields) sValue = Trim(vValues(i)) If sValue <> "CURRENT_TIMESTAMP" Then If Not (Left(sValue, 1) = "'" Or Left(sValue, 1) = "`") Then sValue = "'" & sValue If Not (Right(sValue, 1) = "'" Or Right(sValue, 1) = "`") Then sValue = sValue & "'" End If SQL_UPDATE_STRING = SQL_UPDATE_STRING & vFields(i) & "=" & sValue & ", " Next SQL_UPDATE_STRING = Left(SQL_UPDATE_STRING, Len(SQL_UPDATE_STRING) - 2) & " WHERE " & Where End Function Sub SQL_EXECUTE(DB As Object, SQL_STRING As String) On Error GoTo EH_CONN: DB.Execute (SQL_STRING) Exit Sub EH_CONN: MsgBox "쿼리를 실행하는 도중 오류가 발생했습니다." & vbNewLine & _ "오류 번호 : " & Err.Number & vbNewLine & "오류 내용 : " & Err.Description, vbInformation End End Sub Function SQL_CONN(CONN_STRING As String) As Object '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ SQL_CONN '▶ SQL 연결 문자열로 OLE DB 연결 후 ADODB 커넥션 개체를 반환합니다. '▶ 인수 설명 '_____________Connection : SQL OLE DB로 연결할 연결문자열(Connection String)을 입력합니다. '▶ 사용 예제 'Dim DB As Object 'Set DB = SQL_CONN("Server=database.windows.net,1433;User ID=oppadu;Password=123;") '############################################################### Dim DB As Object Set DB = CreateObject("ADODB.Connection") If InStr(1, CONN_STRING, "Provider=", vbTextCompare) = 0 Then CONN_STRING = "Provider=SQLOLEDB;" & CONN_STRING On Error GoTo EH_CONN: DB.ConnectionTimeout = 3 DB.Open CONN_STRING If DB.State = 1 Then Set SQL_CONN = DB Else GoTo EH_CONN End If Set DB = Nothing Exit Function EH_CONN: MsgBox "서버에 연결할 수 없습니다." & vbNewLine & "인터넷 연결 또는 서버 상태를 확인하세요.", vbInformation Set DB = Nothing End End Function
명령문 동작원리 단계별 알아보기
- 연결문자열을 참조하여 서버에 연결합니다.
Dim DB As Object Set DB = SQL_CONN(Connection)
- 받아온 테이블, 필드목록, 값목록, WHERE절로 UPDATE 쿼리문을 작성합니다.
SQL_UPDATE_STRING(Table, Fields, Values, Where)
- UPDATE 쿼리를 실행하여 데이터를 갱신합니다.
SQL_EXECUTE DB, SQL_UPDATE_STRING(Table, Fields, Values, Where)
- 특정 서버 users 테이블에서 id가 1인 레코드의 "user_name, user_age" 을 "오빠두, 38"로 갱신하기