目次
讲了这么就查询,这里讲一下创建表:create table。其实这个命令一般用的很少,我更喜欢用鼠标点击来创建表,而不是敲代码来创建。" >讲了这么就查询,这里讲一下创建表:create table。其实这个命令一般用的很少,我更喜欢用鼠标点击来创建表,而不是敲代码来创建。
刚刚例子中出现了like,其实like还可以用于字符匹配" >刚刚例子中出现了like,其实like还可以用于字符匹配
order by:对结果表中的键进行排序,默认是升序,即记录从上往下逐个递增" >order by:对结果表中的键进行排序,默认是升序,即记录从上往下逐个递增
between and:选择区间内的记录" >between and:选择区间内的记录
当我们对查询多个条件时,有时候可以通过键匹配" >当我们对查询多个条件时,有时候可以通过键匹配

MySQL 構文構成の概要

Apr 14, 2021 am 09:54 AM
mysql

MySQL 構文構成の概要

#私は最近数週間 MySQL を学習しています。このブログは MySQL の基本的な構文を整理することに専念しています。

まず、MySQL の 3 つの最も基本的なステートメントを見てみましょう。例: 以下の講師テーブルで給与が 80,000 を超える教師の名前を検索したいです。

MySQL 構文構成の概要

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

1

2

3

select name  -- 这是最后筛选的元素,注意,在MySQL中一切结果都是以表的形式,哪怕这个表只有一个记录

from instructor -- from语句表示从哪个表中进行查询

where salary > 80000; -- where语句相当于选择语句,限定条件,找出所需的记录

ログイン後にコピー

MySQL 構文構成の概要クエリ結果は次のようになります。これら 3 つのステートメントは MySQL で最も重要な 3 つのステートメントであり、基本的にすべてのクエリはこれら 3 つのステートメントから分離できません。ただし、複雑なクエリに対応したい場合は、より多くのステートメントをサポートする必要があります。

distinct: 結果の重複を排除します

1

2

3

/*用法如下,假如我想在上表instructor中,找出所有系的名字,可以发现在dept_name中,有的系是出现了一次以上,

因此要对系的名字进行去重*/select distinct dept_name

from instructor; -- 这里不需要限定条件,因此不用where语句

ログイン後にコピー

*: 現在のテーブルのすべてのキーを示します。いわゆるキーは実際には行フィールドです。テーブルの ID (講師テーブルの ID 、名前、dept_name など)

1

2

3

/*类似上一个例子,我想找出instructor表中salary大于80000的教师,并显示这些老师的所有信息*/select *

from instructor

where salary > 80000; -- 其实不加分号也行,分号表示执行到此结束,接下来的语句不执行

ログイン後にコピー

複数の条件をフィルターする場合 (たとえば、講師を検索したい場合)給与が 80,000 を超えるコンピュータ部門の教師、つまり I も指定する必要があります。 給与が 80,000 を超えるコンピュータ部門の教師を見つけるには、and ステートメント ## を使用する必要があります。 #

1

2

3

4

5

select *

from instructor

where salary > 80000 and dept_name = 'Comp. Sci.';/*同样有and语句就有or语句,or表示或,即满足一个条件即可。比如我想找出工资小于60000或者大于80000的教师*/select *

from instructor

where salary > 80000 or salary 

ログイン後にコピー

次に、複数のテーブル間のクエリを開始します。これが次に行うことです。まずキーの基本的な概念を追加しましょう。キーとは何かについてはすでに説明しました。ここでは主キー (主キーとも呼ばれます) について説明します。主キーは、特定のレコードを一意に決定するキーを表します。たとえば、キャンパス内で私たちを識別できる唯一の方法は学生証であり、たとえ学校内で私と同じ名前の人がいたとしても、学生証によって身分を区別できます。名前が主キーではないことがわかりますが、名前が重複すると、その名前で生徒を一意に識別できなくなります。

これは教師のテーブルです。ID キーは教師の ID を表し、course_id はコース ID を表し、semester はコースが開始される学期を表します。教師が教えているコースを調べて、教師の名前と course_id を表示します。 MySQL 構文構成の概要

1

2

3

4

5

6

/*这条语句可以实现,但是请问为什么可以实现呢?那是因为两个表都有共同的主键:ID,当然teaches不止这一个主

键,我们看键旁边有个key,都是主键。但是我们不用管其他键,只要关注ID键就可以了,因为这是两个表中共有的。这

里我还要特意提一下两个表查询,其实是一个表的一个记录去遍历另外一个表的记录,当找到某一条instruction的id等

于teaches的id,就将这条记录保存到结果表中*/

SELECT NAME,course_id

where instructor.`ID` = teaches.`ID`;

ログイン後にコピー

それでは、自然結合、つまり自然なつながりについて話しましょう。変更操作は非常に簡単です。つまり、2 つのテーブルに等しい主キーを持つレコードを保存します。2 つのテーブルに複数の同一のキーがある場合は、保存する前に、それぞれの同一の主キーが同じであることを確認する必要があります。

1

2

3

4

5

/*上述例子完全可以用自然连接来查询*/

SELECT NAME,course_id

FROM instructor NATURAL JOIN teaches;/*如果你想知道自然连接后的表长啥样,我满足你*/

SELECT * -- 显示结果表的所有键

FROM instructor NATURAL JOIN teaches;

ログイン後にコピー

テーブルの列が大幅に増加していることがわかります。実際、2 つのテーブルのキーが統合されています。自然なつながりについてまだ完全に理解していない場合は、別の例を挙げてみましょう。たとえば、学生テーブル MySQL 構文構成の概要 ['Xu Xiaoming, No. 1', 'Huang Xiaoshan, No. 2'] があります。主キーは学生番号です。また、得点表
['No. 1、中国語: 87、数学: 98'、'No. 2、中国語: 94、数学: 82'] もあり、学生番号がこのテーブルの主キーでもあります。テーブル。生徒の表を印刷したい場合は、2 つの表を自然に接続するだけで済みます。自然な接続プロセス中に、同じ学習記録が 1 つのレコードに統合され、最終的には
['No. 1、Xu Xiaoming] になります。 、中国語:87、数学:98」、「No.2、黄暁山、中国語:94、数学:82」]。実は、自然接続はデカルト積を最適化したものであり、デカルト積を自分で理解することができます。

select を通じて変数または関数をクエリできます

1

SELECT 'dd';SELECT 10*20;SELECT NOW(),UNIX_TIMESTAMP();

ログイン後にコピー
実はここで注目していただきたいのですが、select ステートメントの後のキーが結果のキー名になります。 . これを知ってください フォローアップは、名前変更作業に非常に役立ちます。たとえば、今の例では、


MySQL 構文構成の概要

concat(): 2 つのキーを接続する関数で、使い方は Python の printf

と似ています。

1

2

/*通过concat函数来连接那么和dept_name*/

SELECT NAME,CONCAT(NAME,' : ',dept_name)FROM instructor;

ログイン後にコピー

キー名だけでなく、そのキーを持つレコードも結合されます。 MySQL 構文構成の概要

as: キーまたはテーブルの名前を変更します

1

2

3

4

5

/*比如刚刚那个例子*/

SELECT NAME,CONCAT(NAME,' : ',dept_name) as 'name+dept'FROM instructor;/*或者给表改名*/

SELECT NAME

FROM instructor as i

WHERE i.salary > 70000; -- 注意改名后,要想引用该表的键,要加上引用符号:.

ログイン後にコピー

讲了这么就查询,这里讲一下创建表:create table。其实这个命令一般用的很少,我更喜欢用鼠标点击来创建表,而不是敲代码来创建。

1

2

/*创建一个与student表一样结构的表,什么叫一样结构,就是ss_1表中键于student一样*/

CREATE TABLE ss_1 LIKE student;

ログイン後にコピー

刚刚例子中出现了like,其实like还可以用于字符匹配

1

2

3

4

5

/*like语句来进行字符匹配*/

SELECT dept_name

FROM department

WHERE building LIKE 'Watson%'; -- 这里用到%,类似于正则中的?,表示任意多个字符。这个查询是想找出building

-- 中含有Watson的记录。

ログイン後にコピー

order by:对结果表中的键进行排序,默认是升序,即记录从上往下逐个递增

1

2

3

4

5

6

7

8

9

10

11

12

13

/*order by 按照某个属性进行排序*/

/*这个查询是想找出物理系的老师,并按工资进行排序*/

SELECT NAME , salary

FROM instructor

WHERE dept_name = 'Physics'ORDER BY salary;/*既然有升序,那就有降序*/

SELECT NAME , salary

FROM instructor

WHERE dept_name = 'Physics'ORDER BY salary DESC; -- DESC表示降序

/*我们还可以对多个键进行排序*/

SELECT *

FROM instructor

ORDER BY salary DESC , NAME ASC; -- 这里是先对工资进行降序排序,当工资一样时,按英文首字母的ASC码值升序排

-- 序

ログイン後にコピー

MySQL 構文構成の概要
有没有想过为什么order by要在where语句后面呢?因为order by语句时针对结果表的,where语句之后才有结果表,这也与我之前强调MySQL查询结果一切都是表!哪怕这个表只有一个键甚至一条记录!

between and:选择区间内的记录

1

2

3

4

/*区间范围,注意是闭区间,即[90000 , 100000]*/

SELECT NAME

FROM instructor

WHERE salary BETWEEN 90000 AND 1000000;

ログイン後にコピー

当我们对查询多个条件时,有时候可以通过键匹配

1

2

3

4

/*类似于python的字典,里面的元素逐个对应*/

SELECT NAME,course_id

FROM instructor,teaches

WHERE (instructor.`ID`,dept_name) = (teaches.`ID`,'Biology');

ログイン後にコピー

下一篇博客将重点介绍多个表之间的查询,这也是重中之重,难点之一!

更多相关免费学习推荐:mysql教程(视频)

以上がMySQL 構文構成の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

PHPのビッグデータ構造処理スキル

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

PHP 配列ページングのパフォーマンス最適化戦略 PHP 配列ページングのパフォーマンス最適化戦略 May 02, 2024 am 09:27 AM

PHP 配列ページングのパフォーマンス最適化戦略

See all articles