#私は最近数週間 MySQL を学習しています。このブログは MySQL の基本的な構文を整理することに専念しています。
まず、MySQL の 3 つの最も基本的なステートメントを見てみましょう。例: 以下の講師テーブルで給与が 80,000 を超える教師の名前を検索したいです。
関連する無料学習の推奨事項: mysql ビデオ チュートリアル
select name -- 这是最后筛选的元素,注意,在MySQL中一切结果都是以表的形式,哪怕这个表只有一个记录 from instructor -- from语句表示从哪个表中进行查询 where salary > 80000; -- where语句相当于选择语句,限定条件,找出所需的记录
クエリ結果は次のようになります。これら 3 つのステートメントは MySQL で最も重要な 3 つのステートメントであり、基本的にすべてのクエリはこれら 3 つのステートメントから分離できません。ただし、複雑なクエリに対応したい場合は、より多くのステートメントをサポートする必要があります。
distinct: 結果の重複を排除します /*用法如下,假如我想在上表instructor中,找出所有系的名字,可以发现在dept_name中,有的系是出现了一次以上,
因此要对系的名字进行去重*/select distinct dept_name
from instructor; -- 这里不需要限定条件,因此不用where语句
*: 現在のテーブルのすべてのキーを示します。いわゆるキーは実際には行フィールドです。テーブルの ID (講師テーブルの ID 、名前、dept_name など)/*类似上一个例子,我想找出instructor表中salary大于80000的教师,并显示这些老师的所有信息*/select *
from instructor
where salary > 80000; -- 其实不加分号也行,分号表示执行到此结束,接下来的语句不执行
複数の条件をフィルターする場合 (たとえば、講師を検索したい場合)給与が 80,000 を超えるコンピュータ部門の教師、つまり I も指定する必要があります。 給与が 80,000 を超えるコンピュータ部門の教師を見つけるには、and ステートメント ## を使用する必要があります。 #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 を表示します。
/*这条语句可以实现,但是请问为什么可以实现呢?那是因为两个表都有共同的主键:ID,当然teaches不止这一个主 键,我们看键旁边有个key,都是主键。但是我们不用管其他键,只要关注ID键就可以了,因为这是两个表中共有的。这 里我还要特意提一下两个表查询,其实是一个表的一个记录去遍历另外一个表的记录,当找到某一条instruction的id等 于teaches的id,就将这条记录保存到结果表中*/ SELECT NAME,course_id where instructor.`ID` = teaches.`ID`;
それでは、自然結合、つまり自然なつながりについて話しましょう。変更操作は非常に簡単です。つまり、2 つのテーブルに等しい主キーを持つレコードを保存します。2 つのテーブルに複数の同一のキーがある場合は、保存する前に、それぞれの同一の主キーが同じであることを確認する必要があります。
/*上述例子完全可以用自然连接来查询*/
SELECT NAME,course_id
FROM instructor NATURAL JOIN teaches;/*如果你想知道自然连接后的表长啥样,我满足你*/
SELECT * -- 显示结果表的所有键
FROM instructor NATURAL JOIN teaches;
テーブルの列が大幅に増加していることがわかります。実際、2 つのテーブルのキーが統合されています。自然なつながりについてまだ完全に理解していない場合は、別の例を挙げてみましょう。たとえば、学生テーブル ['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 'dd';SELECT 10*20;SELECT NOW(),UNIX_TIMESTAMP();
実はここで注目していただきたいのですが、select ステートメントの後のキーが結果のキー名になります。 . これを知ってください フォローアップは、名前変更作業に非常に役立ちます。たとえば、今の例では、
と似ています。 /*通过concat函数来连接那么和dept_name*/
SELECT NAME,CONCAT(NAME,' : ',dept_name)FROM instructor;
キー名だけでなく、そのキーを持つレコードも結合されます。
/*比如刚刚那个例子*/
SELECT NAME,CONCAT(NAME,' : ',dept_name) as 'name+dept'FROM instructor;/*或者给表改名*/
SELECT NAME
FROM instructor as i
WHERE i.salary > 70000; -- 注意改名后,要想引用该表的键,要加上引用符号:.
讲了这么就查询,这里讲一下创建表:create table。其实这个命令一般用的很少,我更喜欢用鼠标点击来创建表,而不是敲代码来创建。
/*创建一个与student表一样结构的表,什么叫一样结构,就是ss_1表中键于student一样*/ CREATE TABLE ss_1 LIKE student;
刚刚例子中出现了like,其实like还可以用于字符匹配
/*like语句来进行字符匹配*/ SELECT dept_name FROM department WHERE building LIKE 'Watson%'; -- 这里用到%,类似于正则中的?,表示任意多个字符。这个查询是想找出building -- 中含有Watson的记录。
order by:对结果表中的键进行排序,默认是升序,即记录从上往下逐个递增
/*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码值升序排 -- 序
有没有想过为什么order by要在where语句后面呢?因为order by语句时针对结果表的,where语句之后才有结果表,这也与我之前强调MySQL查询结果一切都是表!哪怕这个表只有一个键甚至一条记录!
between and:选择区间内的记录
/*区间范围,注意是闭区间,即[90000 , 100000]*/ SELECT NAME FROM instructor WHERE salary BETWEEN 90000 AND 1000000;
当我们对查询多个条件时,有时候可以通过键匹配
/*类似于python的字典,里面的元素逐个对应*/ SELECT NAME,course_id FROM instructor,teaches WHERE (instructor.`ID`,dept_name) = (teaches.`ID`,'Biology');
下一篇博客将重点介绍多个表之间的查询,这也是重中之重,难点之一!
更多相关免费学习推荐:mysql教程(视频)
以上がMySQL 構文構成の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLは、データストレージ、管理、クエリ、セキュリティに適したオープンソースのリレーショナルデータベース管理システムです。 1.さまざまなオペレーティングシステムをサポートし、Webアプリケーションやその他のフィールドで広く使用されています。 2。クライアントサーバーアーキテクチャとさまざまなストレージエンジンを通じて、MySQLはデータを効率的に処理します。 3.基本的な使用には、データベースとテーブルの作成、挿入、クエリ、データの更新が含まれます。 4.高度な使用には、複雑なクエリとストアドプロシージャが含まれます。 5.一般的なエラーは、説明ステートメントを介してデバッグできます。 6.パフォーマンスの最適化には、インデックスの合理的な使用と最適化されたクエリステートメントが含まれます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

INNODBのロックメカニズムには、共有ロック、排他的ロック、意図ロック、レコードロック、ギャップロック、次のキーロックが含まれます。 1.共有ロックにより、トランザクションは他のトランザクションが読み取らないようにデータを読み取ることができます。 2.排他的ロックは、他のトランザクションがデータの読み取りと変更を防ぎます。 3.意図ロックは、ロック効率を最適化します。 4。ロックロックインデックスのレコードを記録します。 5。ギャップロックロックインデックス記録ギャップ。 6.次のキーロックは、データの一貫性を確保するためのレコードロックとギャップロックの組み合わせです。

MySQLクエリのパフォーマンスが低いことの主な理由には、インデックスの使用、クエリオプティマイザーによる誤った実行計画の選択、不合理なテーブルデザイン、過剰なデータボリューム、ロック競争などがあります。 1.インデックスがゆっくりとクエリを引き起こし、インデックスを追加するとパフォーマンスが大幅に向上する可能性があります。 2。説明コマンドを使用してクエリ計画を分析し、オプティマイザーエラーを見つけます。 3.テーブル構造の再構築と結合条件を最適化すると、テーブルの設計上の問題が改善されます。 4.データボリュームが大きい場合、パーティション化とテーブル分割戦略が採用されます。 5.高い並行性環境では、トランザクションの最適化とロック戦略は、ロック競争を減らすことができます。

データベースの最適化では、クエリ要件に従ってインデックス作成戦略を選択する必要があります。1。クエリに複数の列が含まれ、条件の順序が固定されている場合、複合インデックスを使用します。 2。クエリに複数の列が含まれているが、条件の順序が修正されていない場合、複数の単一列インデックスを使用します。複合インデックスは、マルチコラムクエリの最適化に適していますが、単一列インデックスは単一列クエリに適しています。

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
