i.커서 선언
이 단계에서는 요구 사항에 따라 생성되는 커서의 속성과 결과 집합을 지정해야 합니다. 커서를 지정하는 방법에는 두 가지가 있습니다.
양식 1(ANSI 92)
DECLARE 커서_이름 [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement
[FOR {READ ONLY | UPDATE][OF 열_목록]}]
양식 2
DECLARE 커서_이름 CURSOR
[LOCAL | {읽기 전용 | 업데이트 ][OF 열_목록]}]
INSENSITIVE 키워드는 검색된 결과 집합에 대해 임시 복사본이 생성되고 이 임시 복사본에서 향후 데이터를 얻을 것임을 나타냅니다. 후속 커서 처리 중에 원래 기본 테이블의 데이터가 변경되면 해당 데이터는 커서에 표시되지 않습니다. 이 민감하지 않은 커서는 데이터 변경을 허용하지 않습니다.
SCROLL 키워드는 커서가 어떤 방향으로든 스크롤될 수 있음을 나타냅니다. 모든 가져오기 옵션(첫 번째, 마지막, 다음, 상대, 절대)을 커서에서 사용할 수 있습니다. 이 옵션을 생략하면 커서는 앞으로(다음)만 스크롤할 수 있습니다.
Select_statement는 SQL 문으로 생성된 결과 집합을 지정합니다. Transact SQL 문 COMPUTE, COMPUTE BY, FOR BROWSE 및 INTO는 커서 선언의 select 문에서 허용되지 않습니다.
READ ONLY는 커서 결과 집합에서 데이터 수정이 허용되지 않음을 나타냅니다.
UPDATE 키워드는 커서의 결과 집합을 수정할 수 있음을 나타냅니다.
OF column_list는 수정될 수 있는 결과 집합의 열을 지정합니다. 기본적으로(UPDATE 키워드 사용) 모든 열을 수정할 수 있습니다.
LOCAL 키워드는 커서가 로컬이며 선언된 프로세스 내에서만 사용할 수 있음을 나타냅니다.
GLOBAL 키워드를 사용하면 커서가 전체 연결에 전체적으로 표시됩니다. 연결이 활성화되면 언제든지 전역 커서를 사용할 수 있습니다. 연결이 종료된 경우에만 커서를 더 이상 사용할 수 없습니다.
FORWARD_ONLY는 커서가 앞으로만 스크롤할 수 있도록 지정합니다.
STATIC 커서는 INSENSITIVE 커서와 동일합니다.
KEYSET은 선택한 행의 순서를 지정합니다. SQL Server는 결과 집합에서 임시 키워드 집합을 만듭니다. 데이터베이스의 키워드가 아닌 열을 수정하면 해당 내용이 커서에 표시됩니다. 고정된 키워드 집합이므로 키워드 열의 수정 사항이나 새로 삽입된 열은 표시되지 않습니다.
DYNAMIC은 커서가 결과 세트에 대한 모든 수정 사항을 반영하도록 지정합니다.
SCROLL_LOCK은 커서 작업의 성공을 보장하기 위해 수정 또는 삭제를 잠그는 것입니다.
OPTIMISTIC은 커서를 통한 수정 또는 삭제가 성공하지 못할 것을 지정합니다.
참고:
· SELECT 문에 DISTINCT, UNION 또는 GROUP BY 문이 사용되고 선택 항목에 집계 식이 포함되어 있는 경우 커서는 자동으로 INSENSITIVE 커서가 됩니다.
· 기본 테이블에 고유 인덱스가 없으면 커서는 INSENSITIVE 커서로 생성됩니다.
· SELECT 문에 ORDER BY가 포함되어 있고 ORDER BY 열이 고유한 행 식별자가 아닌 경우 DYNAMIC 커서가 KEYSET 커서로 변환됩니다. KEYSET 커서를 열 수 없으면 INSENSITIVE 커서로 변환됩니다. SQL ANSI-92 구문을 사용하여 정의되었지만 INSENSITIVE 키워드가 없는 커서의 경우에도 마찬가지입니다.
커서 열기
커서를 열면 결과 세트가 생성됩니다. 커서는 DECLARE 문을 통해 정의되지만 실제 실행은 OPEN 문을 통해 이루어집니다. 구문은 다음과 같습니다.
OPEN { { [GLOBAL] 커서_이름 } | 커서_변수_이름}
GLOBAL은 전역 커서를 지정합니다.
Cursor_name은 열린 커서의 이름입니다.
Cursor_variable_name은 참조되는 커서의 변수 이름입니다. 변수는 커서 유형이어야 합니다.
커서가 열린 후 시스템 변수 @@cursor_rows를 사용하여 결과 집합의 행 수를 감지할 수 있습니다. @@cursor_rows가 음수이면 커서가 비동기적으로 마이그레이션된다는 의미이며, 절대값(@@cursor_rows가 -5인 경우 절대값은 5)은 현재 결과 집합의 행 수입니다. 비동기 커서를 사용하면 커서가 완전히 마이그레이션되는 동안에도 사용자는 커서 결과에 계속 액세스할 수 있습니다.
III.커서에서 값을 가져옵니다
커서에서 값을 가져오는 과정에서 결과집중의 각 줄에서 앞뒤로 이동하여 처리할 수 있습니다. 커서가 스크롤 가능하도록 정의된 경우(선언 시 SCROLL 키워드 사용) 결과 집합의 모든 행을 언제든지 검색할 수 있습니다. 비스크롤 커서의 경우 인출 작업은 현재 행 옆의 행에서만 수행할 수 있습니다. 결과 세트는 지역 변수에서 검색할 수 있습니다. Fetch 명령의 구문은 다음과 같습니다.
FETCH [NEXT | FIRST | LAST | RELATIVE {n | @nvar}]
FROM [GLOBAL] 커서_이름 }
[INTO @variable_name ][,...n]]
NEXT는 현재 행의 다음 행에서 값을 가져오도록 지정합니다.
PRIOR는 현재 행의 이전 행에서 값을 가져오도록 지정합니다.
FIRST는 결과 집합의 첫 번째 행입니다.
LAST는 결과 집합의 마지막 행입니다.
ABSOLUTE n은 결과 집합의 n번째 행을 나타냅니다. 행 번호는 지역 변수를 통해 전파될 수도 있습니다. 줄 번호는 0부터 시작하므로 n이 0이면 줄을 가져올 수 없습니다.
RELATIVE n은 가져올 행이 현재 행 앞의 n 행 또는 뒤의 n 행임을 의미합니다. 값이 양수이면 가져올 행은 현재 행보다 n 행 앞에 위치합니다. 값이 음수이면 현재 행 다음의 행이 반환됩니다.
INTO @cursor_variable_name은 커서 컬럼 값이 저장되는 변수 목록을 나타냅니다. 이 목록의 변수 수는 DECLARE 문의 select 문에서 사용하는 변수 수와 동일해야 합니다. 변수의 데이터 유형도 선택한 열의 데이터 유형과 동일해야 합니다. 변수의 값은 다음에 FETCH 문이 사용될 때까지 유지됩니다.
각 FETCH 실행은 시스템 변수 @@fetch_status에 저장됩니다. FETCH가 성공하면 @@fetch_status가 0으로 설정됩니다. -1의 @@fetch_status는 결과 집합의 일부에 도달했음을 나타냅니다(예: 커서가 열린 후 기본 테이블의 행이 삭제됨). @@fetch_status를 사용하여 커서 처리 루프를 구성할 수 있습니다.
예:
DECLARE @iname char(20), @fname char(20)
OPEN Author_cur
author_cur에서 먼저 가져오기 INTO @iname, @fname
WHILE @@fetch_status = 0
BEGIN
IF @fname = 'Albert'
“Albert Ringer를 찾았습니다”
ELSE
“Other Ringer”를 인쇄
author_cur에서 NEXT FROM INTO @iname, @fname
끝
~ . 커서가 닫힌 후에는 FETCH 작업을 수행할 수 없습니다. 여전히 FETCH 문을 사용해야 하는 경우 커서를 다시 열어야 합니다. 구문은 다음과 같습니다.
CLOSE [GLOBAL] 커서_이름 | 커서_변수_이름
v. > v. DEALLOCATE 문은 데이터 구조 및 커서에 대한 잠금을 해제합니다. 구문은 다음과 같습니다.
DEALLOCATE [GLOBAL] 커서_이름 | 커서_변수_이름
커서의 전체 예는 다음과 같습니다.
USE master
GO
CREATE PROCEDURE sp_BuildIndexes
AS
DECLARE @TableName sysname, @msg varchar(100), @cmd varchar(100)
DECLARE table_cur CURSOR FOR
SELECT name FROM sysobjects WHERE type='u'
OPEN table_cur
table_cur INTO @TableName
WHILE @@fetch_status = 0
BEGIN
IF @@fetch_status = -2
계속
선택 @msg = “ 테이블에 대한 인덱스 작성”+@TableName+”…”
PRINT @msg
SELECT @cmd = “DBCC DBREINDEX ('”+@TableName+”')”
EXEC (@cmd)
PRINT “ “
FETCH NEXT FROM table_cur INTO @TableName
END
DEALLOCATE table_cur
GO
다음 스크립트는 PUBS 데이터베이스 USE pubs
GO
EXEC ap_BuildIndexes에 대해 sp_BuildIndexes
를 실행합니다.
참고: 위의 내용은 사용자 정의 시스템 저장 프로시저를 생성하는 예이기도 합니다.
임시테이블 이용
임시 테이블은 TempDB에서 생성된 테이블입니다. 임시 테이블의 이름은 모두 "#"으로 시작합니다. 임시 테이블의 범위는 임시 테이블을 생성한 연결입니다. 임시 테이블은 두 연결 간에 공유될 수 없으므로 연결이 닫히면 임시 테이블은 삭제됩니다. 저장 프로시저 내에서 임시 테이블이 생성된 경우 임시 테이블의 범위는 저장 프로시저 또는 저장 프로시저에서 호출한 모든 저장 프로시저 내에 있습니다. 연결 간에 임시 테이블을 공유해야 하는 경우 전역 임시 테이블을 사용해야 합니다. 전역 임시 테이블은 "##" 기호로 시작하며 SQL Server를 다시 시작할 때까지 데이터베이스에 존재합니다. 이러한 임시 테이블이 생성되면 모든 사용자가 해당 테이블에 액세스할 수 있습니다. 임시 테이블에는 권한을 명시적으로 지정할 수 없습니다. 임시 테이블은 중간 결과를 저장하는 기능을 제공합니다. 때로는 임시 테이블이 복잡한 쿼리를 두 개의 쿼리로 나누어 성능을 향상시킬 수도 있습니다. 이는 먼저 첫 번째 쿼리의 결과를 임시 테이블에 저장한 다음 두 번째 쿼리에서 임시 테이블을 사용하여 달성할 수 있습니다. 기존 절차 중에 큰 테이블의 하위 집합이 여러 번 사용되는 경우 임시 테이블을 사용하는 것이 좋습니다. 이 경우 후속 조인에 사용하기 위해 데이터의 하위 집합을 임시 테이블에 보관하면 성능이 크게 향상될 수 있습니다. 임시 테이블에도 인덱스를 생성할 수 있습니다.
위 내용은 SQL Server 7.0 시작하기(7) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

MySQL은 초보자가 데이터베이스 기술을 배우는 데 적합합니다. 1. MySQL 서버 및 클라이언트 도구를 설치하십시오. 2. SELECT와 같은 기본 SQL 쿼리를 이해하십시오. 3. 마스터 데이터 작업 : 데이터를 만들고, 삽입, 업데이트 및 삭제합니다. 4. 고급 기술 배우기 : 하위 쿼리 및 창 함수. 5. 디버깅 및 최적화 : 구문 확인, 인덱스 사용, 선택*을 피하고 제한을 사용하십시오.

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.

MySQL은 웹 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 주요 기능에는 다음이 포함됩니다. 1. 다른 시나리오에 적합한 InnoDB 및 MyISAM과 같은 여러 스토리지 엔진을 지원합니다. 2.로드 밸런싱 및 데이터 백업을 용이하게하기 위해 마스터 슬레이브 복제 기능을 제공합니다. 3. 쿼리 최적화 및 색인 사용을 통해 쿼리 효율성을 향상시킵니다.

SQL은 MySQL 데이터베이스와 상호 작용하여 데이터 첨가, 삭제, 수정, 검사 및 데이터베이스 설계를 실현하는 데 사용됩니다. 1) SQL은 Select, Insert, Update, Delete 문을 통해 데이터 작업을 수행합니다. 2) 데이터베이스 설계 및 관리에 대한 생성, 변경, 삭제 문을 사용하십시오. 3) 복잡한 쿼리 및 데이터 분석은 SQL을 통해 구현되어 비즈니스 의사 결정 효율성을 향상시킵니다.

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA

웹 응용 프로그램에서 MySQL의 주요 역할은 데이터를 저장하고 관리하는 것입니다. 1. MySQL은 사용자 정보, 제품 카탈로그, 트랜잭션 레코드 및 기타 데이터를 효율적으로 처리합니다. 2. SQL 쿼리를 통해 개발자는 데이터베이스에서 정보를 추출하여 동적 컨텐츠를 생성 할 수 있습니다. 3.mysql은 클라이언트-서버 모델을 기반으로 작동하여 허용 가능한 쿼리 속도를 보장합니다.

MySQL 데이터베이스를 구축하는 단계에는 다음이 포함됩니다. 1. 데이터베이스 및 테이블 작성, 2. 데이터 삽입 및 3. 쿼리를 수행하십시오. 먼저 CreateAbase 및 CreateTable 문을 사용하여 데이터베이스 및 테이블을 작성한 다음 InsertInto 문을 사용하여 데이터를 삽입 한 다음 최종적으로 SELECT 문을 사용하여 데이터를 쿼리하십시오.

MySQL은 사용하기 쉽고 강력하기 때문에 초보자에게 적합합니다. 1.MySQL은 관계형 데이터베이스이며 CRUD 작업에 SQL을 사용합니다. 2. 설치가 간단하고 루트 사용자 비밀번호를 구성해야합니다. 3. 삽입, 업데이트, 삭제 및 선택하여 데이터 작업을 수행하십시오. 4. Orderby, Where and Join은 복잡한 쿼리에 사용될 수 있습니다. 5. 디버깅은 구문을 확인하고 쿼리를 분석하기 위해 설명을 사용해야합니다. 6. 최적화 제안에는 인덱스 사용, 올바른 데이터 유형 선택 및 우수한 프로그래밍 습관이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
