MySQL 업데이트 복잡한 업데이트 요청. MySQL 쿼리 업데이트



기사의 내용
1. 가장 기본적인 MySQL 쿼리
2. 간단한 SELECT 쿼리
3. 단순 INSERT(새 레코드) 쿼리
4. 간단한 업데이트(다시 쓰기, 추가) 쿼리
5. 단순 DELETE(레코드 삭제) 쿼리
6. 단순 DROP(테이블 삭제) 쿼리
7. 복잡한 MySQL 쿼리
8. MySQL 쿼리 및 PHP 변수

1. 가장 간단한 SQL 쿼리

1. 모든 데이터베이스의 목록을 표시합니다.

SHOW 데이터베이스;
2. base_name 데이터베이스의 모든 테이블을 나열합니다.

base_name의 SHOW 테이블;

2. MySQL 데이터베이스에 대한 간단한 SELECT 쿼리

선택하다- 데이터베이스에서 이미 존재하는 데이터를 선택하는 쿼리. 선택을 위해 특정 선택 매개변수를 지정할 수 있습니다. 예를 들어 러시아어 쿼리의 본질은 다음과 같습니다. SELECT 이러한 열 FROM 이러한 테이블 WHERE 이러한 열의 매개 변수는 값과 같습니다.

1. tbl_name 테이블의 모든 데이터를 선택한다.

SELECT * FROM tbl_name;
2. tbl_name 테이블의 레코드 수를 표시합니다.

SELECT 개수(*) FROM tbl_name;
3. (FROM) 테이블 tbl_name limit(LIMIT) 3개 레코드에서 (SELECT)를 2부터 선택합니다.

SELECT * FROM tbl_name LIMIT 2,3;
4. (FROM) 테이블 tbl_name에서 (SELECT) ALL(*) 레코드를 선택하고 id로 순서대로 정렬(ORDER BY)합니다.

SELECT * FROM tbl_name ORDER BY id;
5. (FROM) 테이블 tbl_name에서 (SELECT) ALL 레코드를 선택하고 REVERSE 순서로 id별로 정렬(ORDER BY)합니다.

SELECT * FROM tbl_name ORDER BY id DESC;
6. 선택( 선택하다) (의 모든 (*) 레코드 에서) 테이블 사용자정렬하고( 주문) 현장에서 ID오름차순으로 제한( 한계) 처음 5개 레코드.

SELECT * FROM 사용자 ORDER BY ID LIMIT 5;
7. 테이블에서 모든 레코드 선택 사용자필드는 어디에 있습니까 fname값과 일치 제나.

SELECT * FROM 사용자 WHERE fname = "Gena";
8. 테이블에서 모든 레코드 선택 사용자여기서 필드 값 fname시작하다 .

SELECT * FROM 사용자 WHERE fname LIKE "Ge%";
9. 테이블에서 모든 레코드 선택 사용자, 어디 fname에 끝난다 , 값의 오름차순으로 항목을 정렬합니다. ID.

SELECT * FROM 사용자 WHERE fname LIKE "% na" ORDER BY id;
10. 열에서 모든 데이터 선택 fname, 이름테이블에서 사용자.

SELECT fname, lname FROM 사용자;

11. 사용자 데이터 테이블에 국가가 있다고 가정해 보겠습니다. 따라서 발생하는 값의 목록만 표시하려면(예를 들어 러시아가 20번이 아니라 하나만 표시되도록) DISTINCT를 사용하십시오. 러시아, 우크라이나, 벨로루시가 반복되는 값의 질량에서 추론합니다. 그래서 테이블에서 사용자기둥 국가 ALL UNIQUE 값이 표시됩니다

사용자에서 DISTINCT 국가를 선택하십시오.
12. 테이블에서 모든 행 데이터 선택 사용자어디 나이값은 18,19 및 21입니다.

SELECT * FROM 사용자 WHERE age IN (18,19,21);
13. MAX 값을 선택합니다. 나이테이블에서 사용자... 즉, 테이블에서 가장 높은 값이 있는 경우 나이(영어 연령부터)이 55이면 쿼리 결과는 55가 됩니다.

SELECT max(연령) FROM 사용자;
14. 테이블에서 데이터 선택 사용자필드별 이름그리고 나이어디 나이가장 작은 값을 취합니다.

SELECT 이름, 최소(연령) FROM 사용자;
15. 테이블에서 데이터 선택 사용자현장에서 이름어디 ID같지 않음 2.

SELECT 이름 FROM 사용자 WHERE id! = "2";

3. 간단한 INSERT(새 레코드) 쿼리

끼워 넣다- 처음에 데이터베이스에 레코드를 삽입할 수 있는 쿼리입니다. 즉, 데이터베이스에 새로운 레코드(라인)를 생성합니다.

1. 하다 새로운 항목테이블에서 사용자, 현장에서 이름 Sergey를 삽입하고 현장에서 나이 25를 삽입합니다. 따라서 주어진 값을 가진 새 행이 테이블에 추가됩니다. 열이 더 있으면 비어 있거나 기본값이 그대로 유지됩니다.

INSERT INTO 사용자(이름, 나이) VALUES("Sergey", "25");

4. MySQL 데이터베이스에 대한 간단한 업데이트 쿼리

업데이트- 필드 값을 다시 쓰거나 데이터베이스의 기존 행에 무언가를 추가할 수 있는 쿼리입니다. 예를 들어 기성 문자열이 있지만 시간이 지남에 따라 변경되었으므로 그 안에 있는 age 매개변수를 덮어써야 합니다.

1. 테이블에서 사용자 나이 18이 된다.

사용자 업데이트 연령 = "18" WHERE id = "3";
2. 모든 것은 첫 번째 쿼리와 동일하며 쿼리 구문만 표시되며 둘 이상의 필드를 덮어씁니다.
테이블에서 사용자 WHERE id는 3 필드 값입니다. 나이 18세가 되고 국가러시아.

업데이트 사용자 SET 연령 = "18", 국가 = "러시아" WHERE id = "3";

5. MySQL 데이터베이스에 대한 간단한 DELETE(레코드 삭제) 쿼리

삭제- 테이블에서 행을 제거하는 쿼리.

1. 테이블에서 행 삭제 사용자어디 ID는 10과 같습니다.

DELETE FROM 사용자 WHERE id = "10";

6. MySQL 데이터베이스에 대한 간단한 DROP(테이블 삭제) 쿼리

하락- 테이블을 삭제하는 쿼리.

1. 전체 테이블 삭제 tbl_name.

드롭 테이블 tbl_name;

7. MySQL 데이터베이스에 대한 복잡한 쿼리

고급 사용자에게도 유용할 수 있는 궁금한 쿼리

SELECT ID, 이름, 국가 FROM 사용자, 관리자 WHERE TO_DAYS(NOW()) - TO_DAYS(registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
이 복잡한 쿼리 SELECT 열 아이디, 이름, 국가테이블에서 사용자, 관리자어디 등록 날짜(날짜) 늙지 않았다 14 일과 활성화같지 않음 0 , 정렬 기준 등록 날짜역순으로(처음에 새 항목).

사용자 업데이트 SET age = "18+" WHERE age = (SELECT age FROM users WHERE male = "man");
위는 이른바 요청에 요청 SQL에서. 성별이 남성인 경우 사용자 연령을 18세 이상으로 업데이트합니다. 이러한 쿼리 옵션은 권장하지 않습니다. 개인적인 경험에서 나는 여러 개의 개별 항목을 만드는 것이 더 낫다고 말할 것입니다. 그것들은 더 빨리 해결될 것입니다.

8. MySQL 및 PHP 데이터베이스에 대한 쿼리

PHP 페이지의 MySQL 쿼리에서 변수를 비교 및 ​​기타 값으로 삽입할 수 있습니다. 몇 가지 예

1. 테이블에서 모든 레코드 선택 사용자필드는 어디에 있습니까 fname변수의 값과 일치 $ 이름.

SELECT * FROM 사용자 WHERE fname = "$ 이름";
2. 테이블에서 사용자 WHERE id는 3 필드 값입니다. 나이$ age 변수의 값이 변경됩니다.

업데이트 사용자 SET age = "$ age" WHERE id = "3";

주목!다른 예에 관심이 있으시면 의견에 질문을 작성하십시오!

업데이트 구문

단일 테이블 구문:
업데이트 shya_tabltsh
세트 column_name1 = 식1 [,이름_ column2 = 식2 ...]


다중 테이블 구문:

UPDATE table_name [, table_name ...] SET 열 이름 1 = 표현식1 [, 열 이름2 = 표현식2...]
UPDATE 문은 기존 테이블 행의 열을 새 값으로 업데이트합니다. SET 절은 수정할 열과 이에 할당된 값을 나열합니다. WHERE 절이 지정되면 업데이트해야 하는 행을 지정합니다. 그렇지 않으면 테이블의 모든 행이 업데이트됩니다. ORDER BY가 지정되면 행은 지정된 순서로 업데이트됩니다. LIMIT 절은 업데이트된 행 수에 제한을 부과합니다.
UPDATE 문은 다음 수정자를 지원합니다.

  1. LOW_PRIORITY 키워드가 지정되면 다른 모든 클라이언트가 테이블 읽기를 마칠 때까지 UPDATE가 연기됩니다.
  2. IGNORE 키워드를 지정하면 중복 키 오류가 발생하더라도 업데이트 작업이 중단되지 않습니다. 충돌로 이어지는 라인은 업데이트되지 않습니다.

테이블의 열을 사용하는 경우 table_name표현식에서 UPDATE는 열의 현재 값을 사용합니다. 예를 들어 다음 명령문은 age 열을 1씩 증가시킵니다.
mysql> 개인 데이터 업데이트 SET 나이 = 나이 + l;
UPDATE 할당은 왼쪽에서 오른쪽으로 이루어집니다. 예를 들어 다음 명령문은 age 열의 값을 두 배로 한 다음 1씩 증가시킵니다. mysql> 업데이트 개인 데이터 SET age = age * 2, age = age + l;
열 값을 무엇이든 설정하면 MySQL이 이를 감지하고 업데이트하지 않습니다.
NOT null로 선언된 열을 NULL로 업데이트하면 특정 데이터 유형에 대한 기본값으로 설정되고 경고 횟수가 하나씩 증가합니다. 기본값은 숫자 열의 경우 0, 문자 열의 경우 빈 문자열(""), 날짜 및 시간 열의 경우 null입니다.
UPDATE는 실제로 업데이트된 행 수를 반환합니다. MySQL 3.22 이상에서 C API의 mysql_info() 함수는 API쿼리와 일치하고 업데이트된 행 수와 UPDATE 중에 발생한 경고 수를 반환합니다.
MySQL 3.23 제한을 사용할 수 있기 때문에 줄 수업데이트의 범위를 제한합니다.
LIMIT 절은 다음과 같이 작동합니다.

  1. MySQL 4.0.13 이전에는 LIMIT가 처리되는 행 수에 대한 제한이었습니다. 운영자는 업데이트되자마자 종료되었습니다. 줄 수 WHERE 절을 충족하는 행.
  2. MySQL 4.0.13부터 limit은 문자열 매칭 제한입니다. 연산자는 발견하자마자 종료 줄 수실제로 업데이트되었는지 여부에 관계없이 WHERE 절을 충족하는 행.

UPDATE 문에 order by 절이 포함된 경우 해당 절에서 지정한 순서대로 행이 업데이트됩니다. ORDER BY는 MySQL 4.0.0부터 사용할 수 있습니다.
MySQL 4.0.0부터 한 번에 여러 테이블에서 작동하는 UPDATE 작업을 수행할 수도 있습니다.
UPDATE 항목, 월 SET items.price = month.price WHERE items.id-month. id / 이 예는 쉼표 연산자를 사용하는 내부 조인을 보여주지만 다중 테이블 UPDATE는 LEFT JOIN과 같이 SELECT 문에서 허용되는 모든 유형의 조인을 사용할 수 있습니다.
참고로!

  • 다중 테이블 UPDATE 문에는 ORDER BY 또는 LIMIT를 사용할 수 없습니다.
MySQL 4.0.18 이전에는 실제로 업데이트되지 않았더라도 다중 테이블 UPDATE에 사용된 모든 테이블에 대한 UPDATE 권한이 필요했습니다. MySQL 4.0.18부터 열이 읽기만 가능하고 업데이트되지 않는 테이블의 경우 SELECT 권한만 있으면 됩니다.
외래 키 제약 조건이 정의된 InnoDB 테이블에서 다중 테이블 UPDATE 문을 사용하는 경우 MySQL 옵티마이저는 부모-자식 관계와 다른 순서로 테이블을 처리할 수 있습니다. 이 경우 명령문이 실패하고 트랜잭션이 롤백됩니다. 대신 하나의 테이블을 업데이트하고 InnoDB 엔진이 제공하는 ON UPDATE 속성에 의존하십시오. 자동 업데이트관련 테이블.

데이터베이스의 데이터를 업데이트한다는 것은 기존 테이블 레코드의 값을 변경하는 것을 의미합니다. 이 경우 행 그룹(테이블의 모든 행 포함)에 있는 필드 값을 변경하고 별도의 행에 있는 필드 값을 편집할 수 있습니다.

SQL에서 UPDATE 명령을 사용하여 데이터베이스 테이블의 레코드를 변경할 수 있습니다. 가장 최소한의 형태로 데이터 업데이트 명령은 다음과 같습니다.

업데이트 SET 테이블 필드 = 값

여기, 업데이트- 요청이 데이터 업데이트임을 나타내는 명령;

테이블- 변경 사항이 적용되는 테이블의 이름

세트- 값이 할당된 필드가 표시된 후 쉼표로 구분된 명령

- 변경이 이루어질 테이블의 필드;

의미- 필드에 입력할 새 값입니다.


예를 들어 테이블의 모든 행에 있는 필드를 0으로 설정해야 하는 경우 다음 쿼리를 실행할 수 있습니다.

업데이트 상품 SET 가격 = 0

이 경우 테이블의 사용 가능한 모든 행에 있는 가격 필드는 값 0을 사용합니다.

하나의 값 변경

테이블의 모든 필드 값을 변경하는 것은 극히 드뭅니다. 대부분의 경우 특정 항목의 값을 변경해야 합니다. 이를 위해 UPDATE 명령이 있는 줄 끝에 WHERE 지시문이 추가되며, 이는 업데이트 작업을 수행할 행을 결정하는 조건을 나타냅니다.

테이블이있다:

예를 들어 알려진 값 num으로 제품 비용을 업데이트해야 합니다. 이렇게 하려면 다음 쿼리를 실행합니다.

업데이트 상품 SET 가격 = 150 WHERE num = 2

이제 필드 변경 작업 전에 num = 2 조건을 충족하는 행이 선택됩니다. 테이블에는 이러한 행이 하나만 있습니다. 이 재고에서는 가격이 150으로 변경됩니다. 결과적으로 제품의 변경된 가격이 포함된 테이블을 얻게 됩니다.

선택 조건으로 여러 줄 변경

쿼리의 다양한 조건을 모두 기억한다면 샘플이 얼마나 다양한지 상상할 수 있습니다. 따라서 업데이트 요청은 하나의 행, 행 그룹 또는 테이블의 모든 행으로 실행할 수 있습니다. 이는 모두 직면한 작업과 업데이트 작업을 수행하는 데 필요한 테이블 행에 따라 다릅니다.

예를 들어, 현재 가격이 100 이상인 모든 상품의 가격을 반으로 줄이려고 합니다. 문의:

업데이트 상품 SET 가격 = 가격 / 2 WHERE 가격> = 100

질환 어디여기에는 가격이 100 이상인 제품만 선택되고 가격이 100 미만인 제품은 요청의 영향을 받지 않는 규칙이 포함되어 있습니다.

가격 = 가격 / 2- 상품의 새 가격이 계산되는 공식. 새 가격은 이전 가격을 2로 나눈 값과 동일하게 작성됩니다.

이러한 쿼리를 실행한 결과 변경된 레코드가 있는 테이블을 얻습니다.

행의 여러 필드에서 값 업데이트

한 번에 여러 필드를 업데이트해야 하는 경우 값이 있는 모든 필드가 SET 지시문 뒤에 쉼표로 구분되어 표시됩니다. 예를 들어, 코드 2가 있는 제품의 이름과 가격을 "철"로 변경해야 하며 비용은 300입니다.

업데이트 상품 SET 제목 = "(! LANG: 철" , price = 300 WHERE num = 2 !}

이러한 쿼리는 행의 각 해당 필드에 값을 할당합니다. 그리고 조건은 변경 사항이 적용되는 라인을 나타냅니다.


위는 업데이트 작업의 주요 유형입니다. 이를 기반으로 SQL을 사용하여 개발 중인 데이터를 변경하는 대부분의 작업을 해결하기 위해 쿼리가 구성됩니다.

MySQL에서 데이터를 변경하거나 업데이트해야 하는 경우 SQL UPDATE 명령을 사용하여 작업할 수 있습니다. ,

문법

다음은 MySQL 시트 데이터 공통 SQL 구문을 수정하는 UPDATE 명령입니다.

업데이트 table_name SET 필드1 = 새 값1, 필드2 = 새 값2

  • 동시에 하나 이상의 필드를 업데이트할 수 있습니다.
  • WHERE 절에 모든 조건을 지정할 수 있습니다.
  • 별도의 테이블에서 데이터를 업데이트할 수도 있습니다.

WHERE 테이블의 행에 지정된 데이터를 업데이트해야 할 때 매우 유용합니다.

데이터를 업데이트하는 명령줄

아래에서 UPDATE WHERE SQL 명령을 사용하여 데이터 테이블에 지정된 w3big_tbl을 업데이트합니다.

다음 예는 데이터 테이블을 필드 3의 w3big_title w3big_id 값으로 업데이트합니다.

# mysql -u 루트 -p 암호; 비밀번호 입력: ******* mysql> w3big 사용; 데이터베이스 변경 mysql> UPDATE w3big_tbl -> SET w3big_title = "(! LANG: 학습 JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

PHP 스크립트를 사용하여 데이터 업데이트

mysql_query()를 사용하여 SQL 문을 실행하는 PHP 함수, ​​UPDATE SQL을 사용하거나 WHERE가 적용되지 않습니다.

MySQL의 이 기능> 명령줄 SQL 문을 실행하는 효과는 동일합니다.

다음 예는 w3big_title 필드 3에 대한 w3big_id 데이터를 업데이트합니다.

업데이트 명령- 이미 변경 기존 기록또는 테이블의 여러 레코드에서 SQL... 테이블 또는 뷰의 기본 테이블에서 기존 값을 수정합니다.

업데이트 명령 명령 구문

업데이트 명령 구문

업데이트 명령. UPDATE 명령의 기본 키워드 및 매개변수

  • 스키마 -권한 식별자, 일반적으로 일부 사용자의 이름과 동일
  • 테이블 뷰 -테이블 이름 SQL데이터가 변경된 경우; 뷰가 정의되면 메인 테이블에서 데이터가 수정됩니다. SQL대표
  • subquery_1 - 하위 쿼리서버가 보기와 같은 방식으로 처리하는 것
  • 와 함께기둥 - 테이블 열 SQL또는 프레젠테이션 SQL그 가치가 변하고 있습니다. 테이블 열이 문장에서 온 경우 세트생략하면 열 값이 변경되지 않습니다.
  • 특급 - ; 이 표현식은 기본 변수와 선택적 표시 변수를 포함할 수 있습니다.
  • 하위 쿼리_2 - 해당 열에 할당할 새 값
  • 하위 쿼리_3 - 해당 열에 할당할 새 값

어디- 특정 조건이 충족되는 수정된 행의 범위를 정의합니다. 진실; 이 구를 생략하면 테이블이나 뷰의 모든 행이 업데이트됩니다.
승인을 발행할 때 모든 업데이트 트리거테이블에 정의되어 있습니다.
하위 쿼리... 제안의 경우 세트포함 하위 쿼리, 수정된 각 행에 대해 정확히 하나의 행을 반환합니다. 하위 쿼리 결과의 각 값은 괄호 안의 해당 열에 할당됩니다. 하위 쿼리가 행을 반환하지 않으면 열이 할당됩니다. 없는. 하위 쿼리수정된 테이블에서 데이터를 선택할 수 있습니다. 문장 세트표현을 결합할 수 있고 하위 쿼리.

업데이트 명령 예 1
모든 구매자에 대한 등급을 200과 같은 값으로 변경:

고객 세트등급 = 200;

업데이트 명령 예 2
테이블의 모든 행에서 열 값을 대체하는 것은 일반적으로 거의 사용되지 않습니다. 따라서 팀에서와 같이 팀에서 삭제, 술어를 사용할 수 있습니다. 판매자 Giovanni (snum = 1003)가 제공하는 모든 구매자에 대해 등급 열 값의 지정된 교체를 수행하려면 다음을 입력하십시오.

고객 세트등급 = 200 WHERE snum = 1001;

SQL 업데이트 명령 예 3
문장에서 세트쉼표로 구분하여 열에 대해 원하는 수의 값을 지정할 수 있습니다.

엠프 세트직업 = '관리자', 샐 = 샐 + 1000, 부서 번호 = 20 WHERE ename = '존스';

업데이트 명령 예 4
문장에서 세트특별한 구문(예: IS NULL)을 사용하지 않고 NULL을 지정할 수 있습니다. 따라서 런던(도시 = '런던')의 구매자에 대한 모든 등급을 NULL로 설정하려면 다음을 입력합니다.

고객 세트등급 = NULL WHERE 도시 = '런던';

업데이트 명령 예 5
다음 명령 구문의 사용을 설명합니다.

  • 두 제안 양식 세트한 문장으로 함께합니다.
  • 하위 쿼리.
  • 수정된 행의 범위를 제한하는 WHERE 절.

엠프 세트부서 번호 =
(선택하다 deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( 선택하다 1.1 * AVG(샐), 1.5 * AVG(통신) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN( 선택하다부서 FROM 부서 WHERE loc = '달라스' 또는 loc = '디트로이트');

위의 명령문은 다음을 수행합니다.

  • 댈러스 또는 디트로이트에서 일하는 직원만 수정
  • Boston 직원의 deptno 열 값을 설정합니다.
  • 각 사원의 급여를 전체 부서 평균 급여의 1.1배로 설정합니다.
  • 각 직원의 수수료를 전체 부서 평균 수수료의 1.5배로 설정합니다.


관련 기사: