>  기사  >  데이터 베이스  >  SQL 데이터 작업의 기초(중급) 8

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

黄舟
黄舟원래의
2016-12-17 14:36:53972검색

레코드 업데이트

테이블에 이미 존재하는 하나 이상의 레코드를 수정하려면 SQL을 사용해야 합니다. 업데이트 문. DELETE 문과 마찬가지로 UPDATE 문은 WHERE 절을 사용하여 업데이트할 특정 레코드를 선택할 수 있습니다. 다음 예를 참조하세요.

UPDATE mytable SET first_column='업데이트됨!' WHERE second_column='업데이트하세요!'

이 업데이트 이 명령문은 모든 second_column 필드의 값을 'Update 나!'라는 기록을 남겼다. 선택된 모든 레코드에 대해 first_column 필드의 값은 'Updated!'로 설정됩니다.

다음은 UPDATE 문의 전체 구문입니다.

UPDATE {table_name|view_name} 세트 [{table_name | view_name}]

{column_list | 변수_and_column_list}

[, {column_list2 | 변수_및 _Column_list2}…

변수 및_열_목록 }]]

[어디 절]

참고:

텍스트 필드에 UPDATE 문을 사용할 수 있습니다. 그러나 매우 긴 문자열을 업데이트해야 하는 경우 UPDATETEXT 문을 사용해야 합니다. 이 자료는 이 책에 비해 너무 고급 내용이므로 논의하지 않습니다. 자세한 내용은 Microsoft를 참조하세요. SQL 서버 선적 서류 비치.

WHERE 절을 제공하지 않으면 테이블의 모든 레코드가 업데이트됩니다. 때로는 이것이 유용합니다. 예를 들어, 제목 테이블에 있는 모든 책의 가격을 두 배로 높이려면 다음과 같이 UPDATE를 사용할 수 있습니다. 설명:

동시에 여러 필드를 업데이트할 수도 있습니다. 예를 들어 다음 UPDATE 문은 first_column, second_column 및 third_column 세 필드를 동시에 업데이트합니다.

UPDATE 마이테이블 세트 first_column='업데이트!'

Second_column='업데이트!'

Third_column='업데이트!'

어디 first_column='업데이트 Me1'

팁:

SQL은 명령문에서 추가 공백을 무시합니다. 가장 읽기 쉬운 형식으로 SQL 문을 작성할 수 있습니다.



SELECT 사용 레코드 및 테이블 만들기

INSERT 이 명령문은 한 번에 하나의 레코드만 작동한다는 점에서 DELETE 문 및 UPDATE 문과 약간 다릅니다. 그러나 INSERT를 수행하는 방법이 있습니다. 한 번에 여러 레코드를 추가하는 문입니다. 이렇게 하려면 다음과 같이 INSERT 문과 SELECT 문을 결합해야 합니다.

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

SELECT another_first,other_second

다른 테이블에서

어디 another_first='복사 Me!'

이 명령문은 anothertable의 레코드를 mytable로 복사합니다. anothertable 테이블의 another_first 필드 값만 'Copy'입니다. 나! ’ 기록이 복사됩니다.

테이블의 레코드 백업을 생성할 때 이 형식의 INSERT 진술은 매우 유용합니다. 이 방법을 사용하면 레코드를 삭제하기 전에 한 테이블에서 다른 테이블로 복사할 수 있습니다.

테이블 전체를 복사해야 하는 경우 SELECT INTO를 사용할 수 있습니다. 성명. 예를 들어, 다음 문은 mytable 테이블의 모든 데이터를 포함하는 newtable이라는 새 테이블을 생성합니다.

SELECT * INTO newtable 에서 mytable

이 새 테이블을 생성하는 데 특정 필드만 사용되도록 지정할 수도 있습니다. 이렇게 하려면 필드 목록에서 복사하려는 필드를 지정하기만 하면 됩니다. 또는 WHERE를 사용할 수 있습니다. 절을 사용하여 새 테이블에 복사되는 레코드를 제한합니다. 다음 예에서는 'Copy'와 동일한 second_columnd 필드의 값만 복사합니다. 나!' 레코드의 첫 번째_열 필드입니다.

새 테이블 INTO 첫 번째_열 선택

FROM mytable

WHERE second_column='복사 나!'

이미 생성된 테이블을 SQL로 수정하는 것은 어렵다. 예를 들어 테이블에 필드를 추가하면 이를 제거하는 쉬운 방법이 없습니다. 또한 실수로 필드에 잘못된 데이터 유형을 지정한 경우 해당 필드를 변경할 수 없습니다. 그러나 이 섹션에 설명된 SQL 문을 사용하면 두 가지 문제를 모두 우회할 수 있습니다.

예를 들어 테이블에서 필드를 삭제한다고 가정해 보겠습니다. 선택 사용 안으로 문을 사용하면 삭제하려는 필드 없이 테이블의 복사본을 만들 수 있습니다. 이렇게 하면 삭제하고 싶지 않은 데이터를 유지하면서 필드를 삭제할 수 있습니다.

필드의 데이터 유형을 변경하려는 경우 올바른 데이터 유형의 필드가 포함된 새 테이블을 만들 수 있습니다. 테이블이 생성되면 SELECT와 함께 UPDATE 문을 사용할 수 있습니다. 원본 테이블의 모든 데이터를 새 테이블에 복사하는 명령문입니다. 이 방법을 통해 테이블의 구조를 수정하고 원본 데이터를 저장할 수 있습니다.

집계 함수

지금까지는 특정 조건에 따라 테이블에서 하나 이상의 레코드를 검색하는 방법만 배웠습니다. 그러나 테이블의 레코드에 대해 통계를 수행한다고 가정해 보겠습니다. 예를 들어 테이블에 저장된 설문 조사 결과를 계산하려는 경우입니다. 또는 방문자가 귀하의 사이트에서 평균적으로 보내는 시간이 얼마나 되는지 알고 싶습니다. 테이블의 모든 유형의 데이터에 대해 통계를 수행하려면 집계 함수를 사용해야 합니다.

마이크로소프트 SQL 5가지 유형의 집계 함수가 지원됩니다. 기록 수, 평균, 최소, 최대 또는 합계를 계산할 수 있습니다. 집계 함수를 사용하면 단순히 이러한 통계 값 중 하나를 나타내는 숫자가 반환됩니다.

참고:

asp 웹 페이지에서 set 함수의 반환 값을 사용하려면 값에 이름을 지정해야 합니다. 이렇게 하려면 다음 예와 같이 SELECT 문에서 필드 이름이 포함된 집계 함수를 사용하면 됩니다.

SELECT AVG(vote) 'the_average' FROM 의견

이 예에서는 투표의 평균이 명명됩니다. the_average. 이제 ASP 웹 페이지의 데이터베이스 메서드에서 이 이름을 사용할 수 있습니다.

필드 값 개수 계산 ​​

COUNT() 함수는 아마도 가장 유용한 집계 함수일 것입니다. 이 함수를 사용하여 테이블에 있는 레코드 수를 계산할 수 있습니다. 예는 다음과 같습니다.

SELECT COUNT(au_lname) FROM Author

이 예는 Author 테이블(마지막)의 이름을 계산합니다. 이름) 번호. 동일한 이름이 두 번 이상 나타날 경우 해당 이름은 여러 번 계산됩니다. 특정 이름을 가진 작성자 수를 알고 싶다면 다음 예와 같이 WHERE 절을 사용할 수 있습니다.

SELECT COUNT(au_lname) FROM 작성자 WHERE au_lname='Ringer'

이 예에서는 'Ringer'라는 이름의 작성자 수를 반환합니다. 작성자 테이블에 이름이 두 번 나타나면 이 함수의 반환 값은 2입니다.

다른 이름을 가진 저자의 수를 알고 싶다고 가정해 보겠습니다. DISTINCT 키워드를 사용하여 이 번호를 얻을 수 있습니다. 다음 예에 표시된 대로:

SELECT COUNT(DISTINCT au_lname) FROM 작성자

'Ringer'라는 이름이 여러 번 나타날 경우 한 번만 계산됩니다. 키워드 DISTINCT 서로 다른 값만 계산하도록 결정됩니다.

일반적으로 COUNT()를 사용하면 필드의 null 값은 무시됩니다. 일반적으로 말하면 이것이 당신이 원하는 것입니다. 그러나 테이블의 레코드 수만 알고 싶다면 null 값이 포함되어 있는지 여부에 관계없이 테이블의 모든 레코드를 계산해야 합니다. 이를 수행하는 방법의 예는 다음과 같습니다.

SELECT 개수(*)부터 저자

COUNT() 함수는 필드를 지정하지 않습니다. 이 문은 null 값이 있는 레코드를 포함하여 테이블의 모든 레코드를 계산합니다. 따라서 계산할 특정 필드를 지정할 필요가 없습니다.

COUNT() 함수는 다양한 상황에서 유용합니다. 예를 들어, 사이트 품질에 대한 설문 조사 결과가 포함된 테이블이 있다고 가정해 보겠습니다. 이 테이블에는 vote라는 필드가 있으며 이 필드의 값은 0 또는 1입니다. 0은 반대 투표를 의미하고 1은 긍정적 투표를 의미합니다. 찬성표 수를 결정하려면 다음을 모두 선택할 수 있습니다. 성명:

SELECT COUNT(vote) FROM Opinion_table WHERE vote=1

필드 평균 계산

COUNT() 함수를 사용하면 필드에 값이 몇 개 있는지 계산할 수 있습니다. 하지만 때로는 이러한 값의 평균을 계산해야 할 때도 있습니다. AVG() 함수를 사용하면 필드에 있는 모든 값의 평균을 반환할 수 있습니다.

귀하의 사이트에서 더 복잡한 설문조사를 실시한다고 가정해 보겠습니다. 방문자는 1부터 10까지 투표하여 사이트를 얼마나 좋아하는지 표시할 수 있습니다. 투표 결과를 vote라는 INT 유형 필드에 저장합니다. 사용자 투표의 평균을 계산하려면 AVG() 함수를 사용해야 합니다.

SELECT AVG(투표) FROM 의견

이 SELECT 문의 반환 값은 사이트에 대한 평균 사용자 선호도를 나타냅니다. AVG() 함수는 숫자 필드에만 사용할 수 있습니다. 이 함수는 평균을 계산할 때 null 값도 무시합니다.

필드 값의 합 계산 ​

귀하의 사이트가 카드 판매에 사용되고 두 달 동안 운영되었다고 가정해 보겠습니다. 모든 방문자의 주문 정보를 기록하는 주문이라는 테이블이 있다고 가정합니다. 모든 주문 수량의 합계를 계산하려면 SUM() 함수를 사용할 수 있습니다.

SELECT SUM(구매_금액) FROM 주문 반환 값

함수 SUM()은 buy_amount 필드에 있는 모든 값의 평균을 나타냅니다. buy_amount 필드의 데이터 유형은 MONEY일 수 있지만 다른 숫자 필드에는 SUM() 함수를 사용할 수도 있습니다.

최대값 또는 최소값 반환

다시 한 번 사이트에 설문조사 결과를 저장하는 테이블이 있다고 가정해 보겠습니다. 방문객은 1부터 10까지 선택할 수 있습니다. 값은 귀하의 사이트에 대한 평가를 나타냅니다. 귀하의 사이트에 대한 방문자의 최고 평점을 알고 싶다면 다음 명령문을 사용할 수 있습니다.

SELECT MAX(vote) FROM 의견

누군가가 귀하의 사이트를 높게 평가해 주기를 바랄 수도 있습니다. MAX() 함수를 통해 숫자 필드의 모든 값 중 최대값을 알 수 있습니다. 누군가 귀하의 사이트에서 10번에 투표했다면 MAX() 함수는 해당 값을 반환합니다.

반면에 방문자가 사이트에 대해 가장 낮은 평가를 알고 싶다면 다음 예와 같이 MIN() 함수를 사용할 수 있습니다.

SELECT MIN(투표) FROM 의견

MIN() 함수는 필드의 모든 값 중 최소값을 반환합니다. 필드가 비어 있으면 MIN() 함수는 null 값을 반환합니다.

기타 일반적으로 사용되는 SQL 표현식, 함수 및 프로시저

이 섹션에서는 몇 가지 다른 SQL 기술을 소개합니다. 필드 값이 특정 범위 내에 속하는 테이블에서 데이터를 검색하는 방법과 필드 값을 한 유형에서 다른 유형으로 변환하는 방법과 문자열 및 날짜/시간 데이터를 조작하는 방법도 알아봅니다. 마지막으로 이메일을 보내는 간단한 방법을 배우게 됩니다.

값 범위를 일치시켜 데이터 가져오기 ​​

사이트에 대한 설문 조사 결과가 포함된 테이블이 있다고 가정해 보겠습니다. 이제 귀하의 사이트를 7~10점 사이로 평가한 모든 방문자에게 감사 편지를 보내려고 합니다. 이 사람들의 이름을 얻으려면 다음 SELECT를 사용할 수 있습니다. 성명:

의견에서 사용자 이름 선택 WHERE 투표>6 및 vote<11

이 SELECT 문은 귀하의 요청을 충족할 것입니다. 다음 SELECT 문을 사용하여 동일한 결과를 얻을 수 있습니다.

SELECT 사용자 이름 의견에서 7과 10 사이에 투표하세요

ThisSELECT 문은 이전 문과 동일합니다. 어떤 문을 사용할지는 프로그래밍 스타일의 문제이지만 BETWEEN 표현식을 사용하면 알 수 있습니다. 진술은 읽기가 더 쉽습니다.

이제 귀하의 사이트에 대해 1 또는 10에 투표한 방문자의 이름만 검색한다고 가정해 보겠습니다. 의견 테이블에서 이러한 이름을 검색하려면 다음 SELECT를 사용할 수 있습니다. 성명:

투표=1인 의견에서 사용자 이름 선택 또는 vote

이 SELECT 문은 올바른 결과를 반환하므로 사용하지 않을 이유가 없습니다. 그러나 동등한 방법이 있습니다. 다음과 같이 SELECT를 사용하여 동일한 결과를 얻을 수 있습니다.

SELECT 사용자 이름 FROM 의견 WHERE vote IN (1,10)

IN 표현 사용에 주의하세요. 이 선택 이 명령문은 투표 값이 괄호 안의 값 중 하나와 동일한 레코드만 검색합니다.

IN을 사용하여 문자 데이터를 일치시킬 수도 있습니다. 예를 들어 빌 게이츠나 클린턴 대통령의 득표수만 추출하고 싶다고 가정해 보겠습니다. 다음과 같이 SELECT를 사용할 수 있습니다. 성명서:

의견에서 투표 선택 WHERE 사용자 이름 IN ('Bill Gates','President Clinton’)

마지막으로 BETWEEN, IN과 함께 NOT 표현을 사용할 수 있습니다. 예를 들어, 투표 값이 7에서 10 사이가 아닌 사람의 이름을 검색하려면 다음 SELECT를 사용할 수 있습니다. 성명서:

7과 7 사이가 아닌 의견에서 사용자 이름을 선택하세요. 10

특정 필드의 값이 값 열에 없는 레코드를 선택하려면 다음 예와 같이 NOT과 IN을 동시에 사용할 수 있습니다.

SELECT vote 에서 의견

WHERE 사용자 이름 NOT IN('빌 게이츠','대통령 Clinton')

SQL 문에 BETWEEN 또는 IN을 반드시 사용할 필요는 없지만, 쿼리를 보다 자연스럽게 표현하려면 이 두 표현이 도움이 됩니다.


위는 SQL 데이터 연산 기초(중급) 내용입니다. 8. 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. !


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.