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) !