Mysql 쿼리 레코드 추가, 삭제, 수정

쿼리를 설명하기 전에 여러분을 위한 데이터 테이블을 준비했습니다. 이 테이블에는 은행 잔액과 사용자에 대한 기본 정보가 저장됩니다.

money라는 테이블 구조를 정의했습니다.

테이블을 생성하는 명령문은 다음과 같습니다.

CREATE TABLE money (
     id INT NOT NULL AUTO_INCREMENT ,
     username VARCHAR(50) NOT NULL ,
     balance FLOAT NOT NULL ,
     province VARCHAR(20) NOT NULL ,
     age TINYINT UNSIGNED NOT NULL ,
     sex TINYINT NOT NULL ,
     PRIMARY KEY (id(10))
) ENGINE = InnoDB CHARACTER SET utf8;

테이블 구조와 데이터는 다음과 같이 표시됩니다:

idusernamebalanceprovinceagesex
1 왕바오창 120.02상하이291
2판빙빙260.23산동40 0
3황샤오밍150.86 Shandong40 1
4Jing Boran810Liaoning271
5Li Bingbing 20.15헤이룽장 430
6성룡 313Shandong631
7Yang Mi123Beijing 300
8류시시 456Beijing29 1
9Liu Yan23.4Hunan360
10Zhao Benshan3456랴오닝 631
11王峰 34.32Beijing441
12Guo Degang 212Tianjin431

참고:
balance는 잔액을 의미합니다.
province는 지방을 의미합니다.

기본 쿼리

Category자세한 설명
기본 구문select * from table;
선택 * from Money;
예제 설명 돈 쿼리 테이블의 모든 필드에 있는 모든 결과

참고: "*"는 모든 항목이 일치함을 의미하는 정규 표현식입니다. 위 쿼리 문은 다음과 동일합니다.

mysql> select * from Money;
+----+---- ---- ---+---------+---------+-----+
| 아이디 | 섹스 |
+----+------------+----------+------------+--- ---+ -----+
| 120.02 | 판빙빙 | 40 | 1 |
| 810 | 랴오닝 | 20.15 | 성룡 6 | | 양미 | 30 | 456 | 류옌 | 36 | 랴오닝 | 1 |
| 34.32 | 궈더강 1 | --------+------ -----+------------+------+------+
12개 행 세트 (0.00초)

필드 쿼리 지정




카테고리


자세한 설명 语 기본 문법 테이블에서 필드 선택 ID, 사용자 이름, 돈의 균형; 사용자 이름, 잔액 필드 결과
예시

mysql> ID, 사용자 이름, 잔액 선택;
+----+----------+----------+
| ID |
+----+------------+
| 1 | 왕바오창 | 260.23 |
| 황 샤오밍 |
| 5 | 리빙빙 | 313 |
| 8 |
| 23.4 | 10 | 자오벤샨 | 34.32 |
| 212 | ---+------- --+
세트의 12개 행(0.00초)

중복되지 않은 레코드에 대한 단일 필드 쿼리 개별




category

자세한 설명

+------+| 27 || | 63 || 30 || 36 || 44 |8행(0.00초)조건부 쿼리 whereselect field from Table where 조건;
basic syntax afectax tail에서 독특한 필드를 선택하십시오; 돈에서 별도의 연령 부서 번호 선택;| 29 |
+---------+
자세한 설명
기본 구문


Example

select * from Money where age = 29;



예제 설명

에서 나이가 29인 모든 결과를 쿼리합니다. 머니 테이블



mysql> 나이 = 29인 돈에서 * 선택;
+----+----------+---------+--------- - +------+----+
| 아이디 | 성별 |
+--------+--- - ----+--------+----+
| 1 | 리원카이 120.02 | 류시시 | | 456 | 베이징 | 29 | 1 |
+----+----------+--------+- - ---+------+
2행 세트(0.00초)

where가 따를 수 있는 조건

비교 연산자조건에 맞는 레코드가 결과 세트에 나열됩니다. 위의 예에서 where 뒤의 필드는 필드의 '='입니다.

또한 >, <, >=, <=, !=;

symbolExplanation>>과 같은 비교 연산자를 사용할 수도 있습니다. ; <보다 작음 >=보다 크거나 같음 <=보다 작거나 같음 !=아니요 = 같음

논리 연산자

여러 조건은 or 및 기타 논리 연산자를 사용하여 다중 조건 결합 쿼리를 수행할 수도 있습니다

SymbolExplan ationoror andand
여러 조건의 예를 살펴보겠습니다.

Type세부정보 예선택 * 돈 ID가 <10이고설명모든 필드에 10보다 작은 ID가 필요하고 지방='Hubei'
mysql> '후베이';

+------+------------+---------+----------+------+----- +
| 아이디 | 성별 | +------+------------+---------+----------+------+----- +
1 | 왕바오창 120.02 | +------+------------+---------+----------+------+----- +
1행(0.00초)


결과 집합 정렬

Category자세한 설명기본 구문필드 정렬 키워드로 테이블에서 필드 선택예 머니 오더에서 잔고순으로 ID, 사용자 이름, 잔액 선택;설명 예시머니 테이블의 ID, 사용자 이름, 잔액 필드를 쿼리하고 잔액에 따라 내림차순으로 정렬

정렬에 사용되는 키워드:

mysql> 잔액 설명으로 우편환에서 ID, 사용자 이름, 잔액 선택;+----+------------+---------+
키워드 설명
asc오름차순, 작은 것부터 큰 것까지(기본값)
desc 내림차순, 어린 시절부터 정렬 선택 후 결과 집합은 order by를 사용합니다. 여기서 desc 및 asc는 정렬 순서의 키워드입니다. desc는 필드별로 내림차순으로 정렬하는 것을 의미하고, asc는 오름차순으로 정렬하는 것을 의미합니다. 키워드를 쓰지 않으면 기본값은 오름차순으로 정렬됩니다.
| 사용자 이름 |

+---------+---------+

| 10 | 자오벤산 | 810 |

| 8 | 성룡 | 260.23 |
| 1 | 왕바오창 | 11 | 왕펑 | 23.4 |
| 20.15 | -+-- -------+
세트 내 12개 행(0.00초)

다중 필드 정렬

order by 뒤에는 정렬을 위한 여러 다른 필드가 올 수 있으며 정렬된 결과 세트의 순서는 다양합니다. 필드도 다릅니다. 정렬된 경우 필드의 값이 동일한 경우 동일한 값을 가진 필드는 두 번째 정렬 필드에 따라 정렬됩니다.




Category

자세한 설명


기본 구문

테이블에서 필드 선택 필드 1 정렬 키워드 기준 순서,... ...Field n desc|asc;설명 예시

* 참고: 첫 번째 필드에 이미 결과가 정렬되어 있는 경우. 두 번째 필드 정렬 필드는 적용되지 않습니다. 이 경우 두 번째 필드는 유효하지 않습니다. *

mysql> 잔액 설명, 연령 오름차순으로 우편환 잔액, 사용자 이름, 잔액을 선택하세요.
+----+------------+---------+
| 아이디 | 잔액 |
+----+------------+---------+
10 | 자오번샨 | 4 | 징보란 810 |
8 | 456 |
6 | 성룡 313 |
2 | 판빙빙 260.23 |
12 | 궈더강 | 3 | 황샤오밍 150.86 |
7 |양미 123 |
1 | 왕바오창 120.02 |
11 | 왕펑 34.32 |
9 | 리우옌 | 5 | 리빙빙 20.15 |
+----+------------+---------+
세트당 12개 행(0.00초)


결과 세트 제한

쿼리 또는 정렬된 결과 세트의 경우 전체가 아닌 일부만 표시하려면 제한 키워드를 사용하여 결과 세트 수를 제한하세요.

id, 사용자 이름, 잔액을 잔액 desc, age asc로 머니오더에서 선택
머니 테이블의 id, 사용자 이름, 잔액 필드를 쿼리하고 잔액에 따라 내림차순으로 정렬합니다. 잔액이 모두 동일하다면 age를 사용하여 오름차순으로 정렬하세요
카테고리자세한 설명기본 구문한도 수량에서 필드 선택;Example 한도 5에서 ID, 사용자 이름, 잔고 선택; 예 설명 처음 5명의 사용자 표시

mysql> 금액 한도 5에서 * 선택;
+----+------------+----------+---------- - +------+------+
| 아이디 | 성별 |
+-------+--- - ----+----------+-----+
| 1 | 왕바오창 120.02 | 팬 | 헤이룽장성 | 43 | 0 | ---+--- ---+
5행 세트(0.00초)

결과 세트 제한 및 정렬


Category

자세한 설명기본 구문에서 필드 선택 필드별 테이블 순서 키워드 제한 QuantityExampleselect id,username, Balance from Money order by Balance desc Limit 5;예제 설명돈순으로 정렬, 상위 5명의 부유한 사용자 표시+----+------------+---------+| 아이디 | 사용자 이름 | 잔액 |+---------+---------+
mysql> ID, 사용자 이름, 우편환에서 잔액 설명 한도 5;
| 810 |

| 6 | 성룡 | 260.23 |
+-------+ ------ -+
5행 세트(0.00초)

결과 세트 간격 선택

0부터 시작하여 3개의 레코드를 취한다고 가정합니다. 세 번째 레코드부터 3개 레코드를 더 가져오고 싶습니다. 6번째 레코드부터 4개의 레코드를 가져오려면 어떻게 해야 하나요?

이때 결과 집합 간격 선택을 사용해야 합니다.

카테고리

자세한 설명

예예제 설명

참고: 첫 번째 레코드는 0입니다.

mysql> ID, 사용자 이름, 잔액 한도 0,3;
을 선택하세요. +----+------------+---------+
| 아이디 | 잔액 |
+----+------------+---------+
1 | 왕바오창 120.02 |
2 | 판빙빙 260.23 |
3 | 황샤오밍 150.86 |
+----+------------+---------+
3줄 세트 (0.00초)

3줄부터 3줄 더 가져가는 건 어떨까요?

mysql> ID, 사용자 이름, 잔액 한도 3,3;
을 선택하세요. +----+------------+---------+
| 아이디 | 잔액 |
+----+------------+---------+
4 | 징보란 810 |
5 | 리빙빙 20.15 |
6 | 성룡 313 |
+----+------------+---------+
3행 세트(0.00초)

위 아이디어를 통해 디스플레이는 페이징을 완료합니다.
페이지당 10개의 레코드를 표시한 다음:

페이지 1은 제한 0,10
페이지 2는 제한 10,10
페이지 3은 제한 20,10

등... ...

통계 함수 사용

  1. 총 사용자 수를 알고 싶다면 어떻게 해야 하나요?
  2. 데이터 테이블에서 누가 가장 부유한 사람인지 확인하는 방법은 무엇인가요?
  3. 사용자가 지출한 평균 금액을 알고 싶다면 어떻게 해야 하나요?
  4. 모든 사용자의 총액을 알고 싶다면 어떻게 해야 하나요?

가장 일반적으로 사용되는 네 가지 통계 함수가 있습니다.

기본 구문테이블에서 필드 선택 한도 오프셋, 수량
금액 한도 0, 3에서 ID, 사용자 이름, 잔고 선택 ;
첫 번째 레코드부터 세 개의 레코드를 가져옵니다
함수 설명
sumsum
count통계 합계
max 최대값
min최소값
avgAverage

참고: 물론 다른 mysql 기능도 사용할 수 있다는 것을 알고 있습니다. 그러나 실제 작업에서는 대기업의 많은 크고 중간 규모 프로젝트에서 거의 사용되지 않으며 모두 전용 계산 서버를 갖추고 있습니다. MySQL 자체의 계산량이 매우 크기 때문에 부담을 줄이기 위해 실제 계산 작업을 비즈니스 서버나 다른 서버에 맡기는 경우가 많습니다.

카테고리자세한 설명
기본 구문select function(field) from table
Exampleselect count(id) from Money
설명 예 머니 테이블의 총 ID 수를 쿼리하세요

mysql> 돈에서 개수(id) 선택;
+----------+
| 개수(ID) |
+----------+
12 |
+----------+
1행 세트(0.00초)

필드에 별칭을 지정할 수도 있습니다! as 키워드를 사용하세요.

mysql> 돈에서 종슈로 count(id)를 선택하세요.
+---------+
|종슈 |
+---------+
12 |
+---------+
1행 세트(0.00초)

평균 금액 쿼리

mysql> 돈에서 평균(잔고) 선택;
+---------+
평균(균형) |
+---------+
498.24833393096924 |
+---------+
1행 세트(0.00초)

총액 조회

mysql> 돈에서 합계(잔고) 선택;
+------+
| 합계(잔고) |
+------+
5978.980007171631 |
+------+
1행 세트(0.00초)

최대 금액 조회

mysql> 돈에서 최대(잔고) 선택;
+-------------+
|최대(균형) |
+-------------+
3456 |
+-------------+
1행 세트(0.00초)

최소 금액 조회

mysql> 돈에서 최소(잔액) 선택;
+---------+
|최소(잔고) |
+---------+
20.149999618530273 |
+---------+
1행 세트(0.00초)

group by

금액표의 지방을 취하여 데이터를 그룹화한 후 찾을 수 있습니다. 동일한 지역이 제거됩니다. 즉, 지방은 그룹입니다. ㅋㅋㅋ

설명 예 지역별로 그룹화

mysql> 지방별 머니 그룹에서 * 선택;
+----+------------+---------+--------- -+----+------+
| 아이디 | 성별 |
+------+--- ------+--------+-----+
| 7 | 베이징 30 | Guo Degang | 후난 | 0 |
| 4 | 랴오닝 | 20.15 | --------------+-- -------+------------+------+------+

통계적 그룹화(범주) 총 수:

mysql> deptno 선택, emp 그룹에서 deptno별로 계산(1);
+---------+------------+
| 부서번호(1) |

+-------+

| 1 | 1 |

| 5 | 4 |

+---------+--- -------+
4행 세트(0.04초)

도 수를 세어 그룹별로 표시합니다


mysql> 지방별 머니 그룹에서 개수(지방), 지방 선택;
+------+------------+
| 카운티(도) |
+------+------------+

3 | 베이징 |

| 1 1 | 텐진 |

3 |산둥 |
1 1 | |후난성 |

2 | 랴오닝 |
| 헤이룽장성 |
+------+------------+
7행 세트(0.00초)


그룹별 통계

롤업을 사용한 경우는 거의 사용되지 않습니다. 이 지식 포인트는 이해 수준으로 설정됩니다.

주요 기능은 그룹화된 데이터의 개수를 계산한 다음 총 개수를 계산하는 것입니다.

Category자세한 설명
기본 구문select * from table group by field with Rollup
Exampleselect count(province),province from Money Group by Province with 롤업 ;
예제 설명그룹 수를 다시 계산해 보세요

위 내용을 토대로 전체 수를 계산해 보면 다음 예의 결과 끝에 12개의 NULL이 추가로 있습니다.

mysql> 롤업을 통해 지방별 머니 그룹에서 개수(지방) 선택;
+------+------------+
| 카운티(도) |
+------+------------+
3 | 베이징 |
| 1 1 | 텐진 |
3 |산둥 |
1 1 | |후난성 |
2 | 랴오닝 |
| 헤이룽장성 |
12 |NULL |
+------+------------+
8행 세트(0.00초)

그런 다음 결과가 필터링됩니다.

having 절은 where와 유사하지만 둘 다 조건을 설정하는 문입니다.

having은 필터링 그룹이고 필터링 기록은 어디에 있나요?

Category자세한 설명기본 구문select * 테이블에서 조건이 있는 필드별로 그룹화Examplecount(province)를 결과로 선택 지방별로 돈 그룹에서 >2;설명 예지역을 그룹화하여 총합을 계산하고 그룹화 결과에 2보다 큰 그룹화된 지역을 표시합니다

mysql> 결과로 count(province)를 선택하고, 지방별로 돈 그룹에서 결과가 >2;
+---------+----------+
| 결과 |
+---------+----------+
3 | 베이징 |
3 |산둥 |
+---------+----------+
2행 세트(0.00초)

SQL 전체 사용하기

위 문에서는 전체가 아닌 특정 문만 사용했습니다.

이제 문을 통합하여 한 번 함께 사용합니다. 전체 SQL 문에 사용되는 구문 구조는 다음과 같습니다.

SELECT
[필드 1 [별칭 1], [함수(필드 2),]...필드 n]
FROM 테이블 이름
[WHERE 어디 조건]
[GROUP BY 필드]
[HAVING where_continition]
[주문조건]
[제한 조건]

참고: []는 위 문에서 선택 사항을 나타낼 수 있습니다.

최종 구문은 다음과 같이 요약됩니다.

Keywords Description
selectSelected columns
fromtable
어디쿼리 조건
group by그룹 필터링 조건이 있는 grouping 속성
order bysort attribute
limit시작 레코드 위치, 레코드 개수 가져오기

전체적으로 실시합니다. , 화폐 테이블 필드(id, 사용자 이름, 잔액, 지역)를 쿼리합니다. id>1이고 잔액이 50보다 커야 합니다. 그룹화에는 지역을 사용하세요. 내림차순으로 사용자 ID를 사용하며, 3개의 항목만 표시되도록 허용합니다.

마지막으로 다음과 같이 SQL 문을 작성하면 쿼리 결과는 다음과 같습니다.

mysql> 제한 3;
+------+------------+---------+----------+
| 아이디 | 잔액 | +------+------------+---------+----------+
12 | 궈더강 212 | 7 | 양미 | 4 | 징보란 810 |
+------+------------+---------+----------+
3줄 세트 (0.00초)


지속적인 학습

||
<?php echo "Hello Mysql"; ?>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~