MySQL中文参考手册-- 常用查询的例子_MySQL
手册MySQL查询
下面是一些学习如何用MySQL解决一些常见问题的例子。
一些例子使用数据库表“shop”,包含某个商人的每篇文章(物品号)的价格。假定每个商人的每篇文章有一个单独的固定价格,那么(物品,商人)是记录的主键。
你能这样创建例子数据库表:
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
好了,例子数据是这样的:
SELECT * FROM shop
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
3.1 列的最大值
“最大的物品号是什么?”
SELECT MAX(article) AS article FROM shop
+---------+
| article |
+---------+
| 4 |
+---------+
3.2 拥有某个列的最大值的行
“找出最贵的文章的编号、商人和价格”
在ANSI-SQL中这很容易用一个子查询做到:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop)
在MySQL中(还没有子查询)就用2步做到:
用一个SELECT语句从表中得到最大值。
使用该值编出实际的查询:
SELECT article, dealer, price
FROM shop
WHERE price=19.95
另一个解决方案是按价格降序排序所有行并用MySQL特定LIMIT子句只得到的第一行:
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1
注意:如果有多个最贵的文章( 例如每个19.95),LIMIT解决方案仅仅显示他们之一!
3.3 列的最大值:按组:只有值
“每篇文章的最高的价格是什么?”
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
+---------+-------+
| article | price |
+---------+-------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+---------+-------+
3.4 拥有某个字段的组间最大值的行
“对每篇文章,找出有最贵的价格的交易者。”
在ANSI SQL中,我可以用这样一个子查询做到:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article)
在MySQL中,最好是分几步做到:
得到一个表(文章,maxprice)。见3.4 拥有某个域的组间最大值的行。
对每篇文章,得到对应于存储最大价格的行。
这可以很容易用一个临时表做到:
CREATE TEMPORARY TABLE tmp (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL);
LOCK TABLES article read;
INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
SELECT article, dealer, price FROM shop, tmp
WHERE shop.article=tmp.articel AND shop.price=tmp.price;
UNLOCK TABLES;
DROP TABLE tmp;
如果你不使用一个TEMPORARY表,你也必须锁定“tmp”表。
“它能一个单个查询做到吗?”
是的,但是只有使用我称之为“MAX-CONCAT诡计”的一个相当低效的诡计:
SELECT article,
SUBSTRING( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer,
0.00+LEFT( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 6) AS price
FROM shop
GROUP BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | C | 1.69 |
| 0004 | D | 19.95 |
+---------+--------+-------+
最后例子当然能通过在客户程序中分割连结的列使它更有效一点。
3.5 使用外键
不需要外键联结2个表。
MySQL唯一不做的事情是CHECK以保证你使用的键确实在你正在引用表中存在,并且它不自动从有一个外键定义的表中删除行。如果你象平常那样使用你的键值,它将工作得很好!
CREATE TABLE persons (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE shirts (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES persons,
PRIMARY KEY (id)
);
INSERT INTO persons VALUES (NULL, 'Antonio Paz');
INSERT INTO shirts VALUES
(NULL, 'polo', 'blue', LAST_INSERT_ID()),
(NULL, 'dress', 'white', LAST_INSERT_ID()),
(NULL, 't-shirt', 'blue', LAST_INSERT_ID());
INSERT INTO persons VALUES (NULL, 'Lilliana Angelovska');
INSERT INTO shirts VALUES
(NULL, 'dress', 'orange', LAST_INSERT_ID()),
(NULL, 'polo', 'red', LAST_INSERT_ID()),
(NULL, 'dress', 'blue', LAST_INSERT_ID()),
(NULL, 't-shirt', 'white', LAST_INSERT_ID());
SELECT * FROM persons;
+----+---------------------+
| id | name |
+----+---------------------+
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+----+---------------------+
SELECT * FROM shirts;
+----+---------+--------+-------+
| id | style | color | owner |
+----+---------+--------+-------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+----+---------+--------+-------+
SELECT s.* FROM persons p, shirts s
WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color 'white';
+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Call of Duty Warzone은 새로 출시된 모바일 게임입니다. 많은 플레이어들이 이 게임의 언어를 중국어로 설정하는 방법에 대해 매우 궁금해하고 있습니다. 실제로 플레이어는 중국어 언어 팩만 다운로드하면 됩니다. 사용 후 수정하세요. 자세한 내용은 이 중국어 설정 방법 소개에서 배울 수 있습니다. 모바일 게임 Call of Duty: Warzone의 중국어 언어 설정 방법 1. 먼저 게임에 접속한 후 인터페이스 오른쪽 상단에 있는 설정 아이콘을 클릭합니다. 2. 나타나는 메뉴바에서 [다운로드] 옵션을 찾아 클릭하세요. 3. 이 페이지에서 [SIMPLIFIEDCHINESE](중국어 간체)를 선택하여 중국어 간체 설치 패키지를 다운로드합니다. 4. 설정으로 돌아가기

중국어 VSCode 설정: 전체 가이드 소프트웨어 개발에서 Visual Studio Code(줄여서 VSCode)는 일반적으로 사용되는 통합 개발 환경입니다. 중국어를 사용하는 개발자의 경우 VSCode를 중국어 인터페이스로 설정하면 작업 효율성이 향상될 수 있습니다. 이 기사에서는 VSCode를 중국어 인터페이스로 설정하는 방법을 자세히 설명하고 특정 코드 예제를 제공하는 완전한 가이드를 제공합니다. 1단계: 언어 팩을 다운로드하고 설치합니다. VSCode를 연 후 왼쪽을 클릭합니다.

Excel 스프레드시트는 현재 많은 사람들이 사용하는 사무용 소프트웨어 중 하나입니다. 일부 사용자는 컴퓨터가 Win11 시스템이므로 중국어 인터페이스로 전환하고 싶지만 작동 방법을 모릅니다. 이 문제를 해결하기 위해 편집자는 모든 사용자의 질문에 답변하기 위해 왔습니다. 오늘의 소프트웨어 튜토리얼에서 공유된 내용을 살펴보겠습니다. Excel을 중국어로 전환하기 위한 튜토리얼: 1. 소프트웨어에 들어가서 페이지 상단 도구 모음 왼쪽에 있는 "파일" 옵션을 클릭합니다. 2. 아래 옵션 중에서 "옵션"을 선택하세요. 3. 새 인터페이스에 들어간 후 왼쪽의 '언어' 옵션을 클릭하세요.

12306 티켓 예매 앱의 최신 버전을 다운로드하세요. 모두가 매우 만족하는 여행 티켓 구매 소프트웨어입니다. 소프트웨어에서 제공되는 다양한 티켓 소스가 있어 매우 편리합니다. - 실명인증으로 온라인 구매가 가능합니다. 모든 사용자가 쉽게 여행티켓과 항공권을 구매하고 다양한 할인 혜택을 누릴 수 있습니다. 또한 사전에 예약하고 티켓을 얻을 수도 있습니다. 호텔을 예약하거나 차량으로 픽업 및 하차할 수도 있습니다. 한 번의 클릭으로 원하는 곳으로 이동하고 티켓을 구매할 수 있어 여행이 더욱 간편해지고 편리해집니다. 모든 사람의 여행 경험이 더욱 편안해졌습니다. 이제 편집자가 온라인으로 자세히 설명합니다. 12306명의 사용자에게 과거 티켓 구매 기록을 볼 수 있는 방법을 제공합니다. 1. 철도 12306을 열고 오른쪽 하단의 My를 클릭한 후 My Order를 클릭합니다. 2. 주문 페이지에서 Paid를 클릭합니다. 3. 유료페이지에서

Xuexin.com에서 내 학업 자격을 어떻게 확인하나요? Xuexin.com에서 학업 자격을 확인할 수 있습니다. 많은 사용자가 Xuexin.com에서 학업 자격을 확인하는 방법을 모릅니다. 다음으로 편집자는 Xuexin.com에서 학업 자격을 확인하는 방법에 대한 그래픽 튜토리얼을 제공합니다. 유저들이 와서 구경해 보세요! Xuexin.com 사용 튜토리얼: Xuexin.com에서 학업 자격을 확인하는 방법 1. Xuexin.com 입구: https://www.chsi.com.cn/ 2. 웹사이트 쿼리: 1단계: Xuexin.com 주소를 클릭합니다. 위의 홈페이지에 들어가려면 [교육 쿼리]를 클릭합니다. 2단계: 최신 웹페이지에서 아래 그림의 화살표와 같이 [쿼리]를 클릭합니다. 3단계: 새 페이지에서 [학점 파일에 로그인]을 클릭합니다. 4단계: 로그인 페이지에서 정보를 입력하고 [로그인]을 클릭합니다.

'WWE2K24'는 비주얼콘셉츠(Visual Concepts)가 제작한 레이싱 스포츠 게임으로, 2024년 3월 9일 정식 출시됐다. 이 게임은 높은 평가를 받았으며, 많은 플레이어들이 중국어 버전이 나올지 궁금해하고 있습니다. 불행하게도 아직까지 "WWE2K24"는 중국어 버전을 출시하지 않았습니다. wwe2k24는 중국어로 제공되나요? 답변: 중국어는 현재 지원되지 않습니다. 스팀 중국 지역 WWE2K24 스탠다드 버전의 가격은 199위안, 디럭스 버전은 329위안, 기념 에디션은 395위안이다. 이 게임은 구성 요구 사항이 상대적으로 높으며 프로세서, 그래픽 카드 또는 실행 메모리 측면에서 특정 표준이 있습니다. 공식 권장 구성 및 최소 구성 소개:

PHP로 작성한 중국어 왜곡 문자를 txt 파일로 해결하는 방법 인터넷의 급속한 발전과 함께 널리 사용되는 프로그래밍 언어인 PHP를 점점 더 많은 개발자가 사용하고 있습니다. PHP 개발에서는 중국어 내용이 포함된 txt 파일을 포함하여 텍스트 파일을 읽고 써야 하는 경우가 많습니다. 그러나 인코딩 형식 문제로 인해 때때로 작성된 중국어가 깨져서 나타날 수 있습니다. 이 기사에서는 PHP로 txt 파일에 작성된 중국어 문자 왜곡 문제를 해결하는 몇 가지 기술을 소개하고 구체적인 코드 예제를 제공합니다. PHP, 텍스트의 문제 분석

Chrome에서 중국어를 영어로 바꾸는 방법은 무엇입니까? 어떤 친구들은 사용하는 동안 지속적으로 영어 실력을 향상시킬 수 있도록 Chrome을 영어로 설정하고 싶어합니다. 그럼 영어로 어떻게 설정하나요? Chrome은 기본적으로 중국어입니다. 아래에서는 Chrome의 언어를 영어로 설정하는 방법을 살펴보겠습니다. 설정 단계: 1. 아래 그림과 같이 [Google Chrome]을 엽니다. 2. 아래 그림과 같이 Google Chrome 인터페이스 오른쪽 상단에 있는 [점 3개] 메뉴를 클릭합니다. 3. 메뉴 페이지에 진입한 후, 아래 그림과 같이 [설정]을 찾습니다. 4. 설정 페이지에 진입한 후, 아래 그림과 같이 [언어] 옵션을 클릭하세요. 5. 아래 그림과 같이 언어 인터페이스에서 [언어 추가]를 선택합니다.
