SQL 데이터 작업의 기초(중급) 7

黄舟
풀어 주다: 2016-12-17 14:35:00
원래의
789명이 탐색했습니다.

SQL을 사용한 인덱싱

테이블을 인덱싱하려면 작업 표시줄 SQL을 시작하세요. Sever 프로그램 그룹의 ISQL/w 프로그램입니다. 쿼리 창에 진입한 후 다음 문장을 입력하세요:

CREATE INDEX mycolumn_index ON 마이테이블 (myclumn)

이 명령문은 mycolumn_index라는 인덱스를 생성합니다. 인덱스 이름은 무엇이든 지정할 수 있지만 인덱스 이름에 인덱스되는 필드 이름을 포함해야 합니다. 이렇게 하면 나중에 인덱스를 만드는 목적을 파악하는 데 도움이 됩니다.

참고:

이 책의 SQL 문을 실행하면 다음 메시지가 표시됩니다.

이것은 명령이 데이터를 반환하지 않았고, 어떤 것도 반환하지 않았습니다. 행

이는 해당 명령문이 성공적으로 실행되었음을 나타냅니다.

mycolumn_index 인덱스는 mytable 테이블의 mycolumn 필드에서 수행됩니다. 비클러스터형 인덱스와 고유하지 않은 인덱스입니다. (인덱스의 기본 속성입니다)

인덱스의 종류를 변경해야 하는 경우 원본 인덱스를 삭제하고 재구축해야 합니다. 하나. 인덱스를 생성한 후 다음 SQL 문을 사용하여 삭제할 수 있습니다:

DROP INDEX mytable.mycolumn_index

DROP INDEX에 유의하세요. 명령문에 테이블 이름을 포함해야 합니다. 이 예에서 삭제한 인덱스는 mytable 테이블의 인덱스인 mycolumn_index입니다.

클러스터형 인덱스를 생성하려면 CLUSTERED 키워드를 사용하세요. ) 테이블에는 클러스터형 인덱스가 하나만 있을 수 있다는 점을 기억하세요. (다음은 테이블에 클러스터형 인덱스를 생성하는 방법의 예입니다.

CREATE 클러스터형 인덱스 mycolumn_clust_index ON mytable(mycolumn)

테이블에 중복된 레코드가 있는 경우 이 문을 사용하여 인덱스를 생성하려고 하면 오류가 발생합니다. 그러나 중복 레코드가 있는 테이블도 인덱싱할 수 있습니다. ALLOW_DUP_ROW 키워드를 사용하여 이를 SQL에 알릴 수 있습니다. 서버:

CREATE CLUSTERED INDEX mycolumn_cindex ON 마이테이블(mycolumn)

WITH ALLOW_DUP_ROW

이 문은 중복 레코드를 허용하는 클러스터형 인덱스를 생성합니다. 테이블에서 중복 레코드를 피하도록 노력해야 하지만, 중복이 발생하는 경우 이 방법을 사용할 수 있습니다.

테이블에 고유 인덱스를 생성하려면 UNIQUE 키워드를 사용할 수 있습니다. 이 키워드는 클러스터형 인덱스와 비클러스터형 인덱스 모두에 사용할 수 있습니다. 예는 다음과 같습니다.

CREATE 고유한 COUSTERED 인덱스 myclumn_cindex ON mytable(mycolumn)

자주 사용하게 될 인덱싱 문입니다. 가능하면 쿼리 작업을 향상시키기 위해 테이블에 고유한 클러스터형 인덱스를 작성해야 합니다.

마지막으로 여러 필드에 인덱스(복합 인덱스)를 만들고 인덱스 생성 문에 여러 필드 이름을 포함합니다. 다음 예에서는 이름 및 성 필드에 대한 인덱스를 생성합니다.

CREATE INDEX 이름_인덱스 ON username(firstname,lastname)

이 예에서는 두 필드에 단일 인덱스를 만듭니다. 복합 인덱스에서는 최대 16개의 필드를 인덱스할 수 있습니다.

트랜잭션 관리자를 사용하여 인덱스 생성

트랜잭션 관리자를 사용하여 인덱스를 생성하는 것은 SQL 문을 사용하는 것보다 훨씬 쉽습니다. 트랜잭션 관리자를 사용하면 생성된 인덱스 목록을 확인하고 그래픽 인터페이스를 통해 인덱싱 옵션을 선택할 수 있습니다.

트랜잭션 관리자를 사용하면 두 가지 방법으로 인덱스를 생성할 수 있습니다. 관리 사용 테이블 창을 사용하거나 인덱스 관리 창을 사용하세요.

테이블 관리 창을 사용하여 새 인덱스를 생성하려면 고급 버튼을 클릭하세요. 옵션(앞에 더하기 기호가 있는 표처럼 보입니다). 그러면 고급 옵션 대화 상자가 열립니다. 이 대화 상자에는 PRimary라는 섹션이 있습니다. 키(그림 11.1 참조)

그림 11. 1

새 인덱스를 생성하려면 드롭다운 목록에서 인덱스하려는 필드 이름을 선택하세요. 여러 필드에 인덱스를 생성하려는 경우 여러 필드 이름을 선택할 수 있습니다. 인덱스가 클러스터형인지 비클러스터형인지 선택할 수도 있습니다. 테이블 정보를 저장한 후 자동으로 인덱스가 생성됩니다. 인매니지 테이블 창의 필드 이름 옆에 키가 나타납니다.

테이블에 대한 "마스터 인덱스"를 생성했습니다. 기본 인덱스는 Null 값을 포함하지 않는 필드에 설정되어야 합니다. 또한 기본 인덱스는 필드를 고유 값 필드로 강제합니다.

이러한 제한 없이 인덱스를 구축하려면 관리를 사용해야 합니다. 인덱스 창. 메뉴에서 관리|인덱스를 선택하여 인덱스 관리 창을 엽니다. 인덱스 관리 창에서 드롭다운 상자를 통해 테이블과 특정 인덱스를 선택할 수 있습니다. (그림 11.2 참조) 새 색인을 생성하려면 색인 드롭다운 상자에서 새로 만들기를 선택하세요. 색인을 생성하고 색인을 생성할 필드를 선택할 수 있습니다. 추가 버튼을 클릭하면 해당 필드가 인덱스에 추가됩니다.

그림 11. 2

색인에 대해 선택할 수 있는 옵션은 다양합니다. 예를 들어 인덱스가 클러스터형인지 비클러스터형인지 선택할 수 있습니다. 인덱스가 고유 인덱스임을 지정할 수도 있습니다. 인덱스를 디자인한 후 Build 버튼을 클릭하면 인덱스가 생성됩니다.

참고:

고유 인덱스는 필드가 중복된 값을 가질 수 없다는 의미이지 하나의 인덱스만 생성할 수 있다는 의미는 아닙니다.

SQL 핵심문

10장에서는 SQL 사용법을 배웠습니다. 선택하다 테이블에서 데이터를 검색하는 문입니다. 그러나 지금까지 테이블에 데이터를 추가, 수정, 삭제하는 방법에 대한 논의는 없었다. 이 섹션에서는 이에 대해 알아봅니다.

데이터 삽입

테이블에 새 레코드를 추가하려면 SQL을 사용합니다. INSERT 문. 다음은 이러한 문을 사용하는 방법에 대한 예입니다.

INSERT mytable (mycolumn) VALUES ('some data')

이 명령문은 문자열 'some data'가 mytable 테이블의 mycolumn 필드에 삽입됩니다. 첫 번째 괄호에는 데이터가 삽입될 필드의 이름이 지정되고, 두 번째 괄호에는 실제 데이터가 표시됩니다.

삽입 문의 전체 구문은 다음과 같습니다.

INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT 값 |

값_목록 | select_statement}

테이블에 필드가 여러 개 있는 경우 필드 이름과 필드 값을 쉼표로 구분하여 모든 필드에 데이터를 삽입할 수 있습니다. mytable 테이블에 first_column, second_column 및 third_column 세 개의 필드가 있다고 가정합니다. 다음 INSERT 문은 세 필드 모두에 대한 값이 포함된 완전한 레코드를 추가합니다.

INSERT mytable(첫번째_열,두번째_열,세번째_열)

VALUES('일부 데이터', '더 많은 데이터', '아직 더 data')

참고:

INSERT 문을 사용하여 텍스트 필드에 데이터를 삽입할 수 있습니다. 그러나 매우 긴 문자열을 입력해야 하는 경우에는 WRITETEXT 문을 사용해야 합니다. 이 자료는 이 책에 비해 너무 고급 내용이므로 논의하지 않습니다. 자세한 내용은 Microsoft를 참조하세요. SQL Server에 대한 설명서입니다.

INSERT하는 경우 명령문에 두 개의 필드와 데이터만 지정하면 어떻게 되나요? 즉, 테이블에 새 레코드를 삽입했지만 필드 중 하나가 데이터를 제공하지 않습니다. 이 경우 네 가지 가능성이 있습니다.

필드에 기본값이 있으면 해당 값이 사용됩니다. 예를 들어 third_column 필드에 데이터를 제공하지 않고 새 레코드를 삽입하고 이 필드의 기본값이 'some'이라고 가정합니다. 값'. 이 경우 새 레코드가 생성될 때 'some value' 값이 삽입됩니다.
필드가 null 값을 허용하고 기본값이 없는 경우 null 값이 삽입됩니다.
필드에 Null 값을 허용할 수 없고 기본값이 없으면 오류가 발생합니다. 다음과 같은 오류 메시지가 표시됩니다.
mytable 테이블의 열이 열이 아닐 수 있습니다. BE null.

마지막으로 필드가 ID 필드인 경우 자동으로 새 값이 생성됩니다. 식별 필드가 있는 테이블에 새 레코드를 삽입할 때 해당 필드를 무시하면 식별 필드가 자체적으로 새 값을 할당합니다.
참고:

ID 필드가 있는 테이블에 새 레코드를 삽입한 후 SQL 변수 @@identity를 사용하여 새 레코드의 ID 필드 값에 액세스할 수 있습니다.

. 다음 SQL 문을 고려해 보세요.

INSERT mytable(first_column) VALUES('일부 값')

INSERT anothertable(another_first,another_second)

VALUES(@@identity,'some value')

mytable 테이블에 식별 필드가 있는 경우 이 필드의 값은 anothertable 테이블의 another_first 필드에 삽입됩니다. 이는 @@identity 변수가 항상 ID 필드에 삽입된 마지막 값을 보유하기 때문입니다.

another_first 필드는 first_column 필드와 데이터 유형이 동일해야 합니다. 그러나 another_first 필드는 식별해야 하는 필드가 될 수 없습니다. Another_first 필드는 first_column 필드의 값을 저장하는 데 사용됩니다.

레코드 삭제

테이블에서 하나 이상의 레코드를 삭제하려면 SQL을 사용해야 합니다. DELETE 문. DELETE 문에 WHERE를 제공할 수 있습니다. 절. WHERE 절은 삭제할 레코드를 선택하는 데 사용됩니다. 예를 들어, 다음 DELETE 문은 'Delete'와 동일한 first_column 필드의 값만 삭제합니다. 나' 기록:

DELETE mytable WHERE first_column='Deltet Me'

DELETE 문의 전체 구문은 다음과 같습니다.

DELETE [FROM] {table_name|view_name} [WHERE 절]

SQL SELECT 문에서 사용할 수 있는 모든 조건은 DELECT 문의 WHERE 절에서도 사용할 수 있습니다. 에 사용되었습니다. 예를 들어, 다음 DELETE 문은 first_column 필드 값이 'goodbye'이거나 second_column 필드 값이 'so'인 항목만 삭제합니다. 긴' 레코드:

first_column='goodby' OR second_column='so에서 mytable 삭제 long'

DELETE 문에 WHERE를 제공하지 않는 경우 절을 사용하면 테이블의 모든 레코드가 삭제됩니다. 이런 식으로 생각하면 안 됩니다. 테이블의 모든 레코드를 삭제하려면 10장에서 설명한 대로 TRUNCATE를 사용해야 합니다. 테이블 문.

참고:

DELETE 문 대신 TRUNCATE TABLE 문을 사용해야 하는 이유는 무엇입니까? TRUNCATE를 사용하는 경우 TABLE문에서 레코드 삭제는 기록되지 않습니다. 즉, TRUNCATE TABLE이 DELETE보다 훨씬 빠르다는 뜻이다

위 내용은 SQL 데이터 연산 기초(중급) 7의 내용이다. 더 많은 관련 글은 PHP 중국어 홈페이지(www .php.cn) !


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!