MySQLデータベースのデータテーブルに関する詳細な基本操作

MySQLデータベースのデータテーブルに関する詳細な基本操作

序文:

  • ライブラリ名、テーブル名、列名などはキーワードと同じにすることはできません。キーワードを名前として使用する必要がある場合は、バッククォートを使用して名前を引用できます。
  • テーブルを操作する前に、まずデータベースを選択する必要があります

MySQL では次のコメントがサポートされています。

  • -- コメント内容: 1行のコメント。「–」とコメント内容の間にはスペースが必要です。
  • #コメント内容: 1行コメント
  • /*コメント内容*/ : 複数行コメント

注:フィールドまたは列のコメントは、コメント属性を使用して追加できます。たとえば、テーブル作成ステートメントで次のように使用します。

  • SQL では、一重引用符と二重引用符の両方で文字列を表すことができます。

1. 現在のデータベース内のテーブルを表示する

文法:

テーブルを表示します。

例:

2. テーブルを作成する

文法:

テーブルを作成します [存在しない場合] テーブル名 (列名 列タイプ、列名 列タイプ、...、列名 列タイプ);

例:

3. 指定されたテーブル構造を表示する

文法:

desc テーブル名;

知らせ:

desc は describe の略語です。describe table name を使用してテーブル構造を表示することもできます。

例:

4. テーブルを削除する

文法:

テーブルを削除します [存在する場合] テーブル名 [, テーブル名...];

例:

知らせ:

テーブルの削除も非常に危険な操作であり、データベースの削除よりもさらに危険です。削除されると、プログラムはすぐにクラッシュし、時間内に復旧できるからです。ただし、テーブルを削除した場合、プログラムがすぐに異常を表示しない場合があり、対応が間に合わなかった場合はリスクが大きくなります。

5. テーブルにデータを追加する

文法:

insert [into] テーブル名 [(列名 1, 列名 2, ..., 列名 n)] 値 (1 行目: 値 1, 値 2, ..., 値 n) [, ..., (n 行目: 値 1, 値 2, ..., 値 n)]

補充:

  • 上記の文に列名が書かれていない場合は、すべての列にデータを追加する必要があることを意味します。
  • 各行に挿入される値は、各行に挿入される列名の順序に対応している必要があります。
  • 挿入時に列が挿入されない場合、列はデフォルト値NULLに設定されます。

例1: すべての列を含む行を挿入する

結果は次のとおりです。

id名前
1張三

例 2: フル列に複数の行を挿入する

結果は次のとおりです。

id名前
1張三
2李思
3王武

例3: 挿入する特定の列を指定する

結果は次のとおりです。

id名前
1張三
2李思
3王武
4 NULL

: 一般的に、1 つのステートメントで複数のレコードを一度に挿入する方が、複数のステートメントでそれぞれ 1 つのレコードを挿入するよりもはるかに効率的であると考えられています。

MySQL は「クライアント サーバー」構造のプログラムであることはわかっています。ユーザーがクライアント上で入力した SQL はネットワークを介してサーバーに送信され、サーバーは特定の操作を実行します。両者の違いを分析してみましょう

一度に複数のレコードを挿入する 1 つのステートメント:

複数のステートメントがあり、それぞれが 1 つのレコードを挿入します。

また、コンピュータのレジスタへのアクセス速度 >>> メモリへのアクセス速度 >>> IO デバイスへのアクセス速度 (ネットワーク上でのデータ転送をコンピュータでは IO 操作と呼びます) です。したがって、1 つのステートメントで一度に複数のレコードを挿入する方が、複数のステートメントでそれぞれ 1 つのレコードを挿入するよりもはるかに効率的であると一般に考えられています。

6. 表内のデータを検索する

文法:

selstc [distinct] {* | 列名 1 [, ..., 列名 n]} from テーブル名 [where] [order by 列名 1 [ASC | DESC] [, ..., [列名 n [ASC | DESC]]] limit 

補充:

  • クエリ結果は「テーブル」に似た構造ですが、このテーブルはメモリ上にしばらく保存されるだけで、印刷後は消えてしまう「一時テーブル」です。永続的に保存されることはありません。
  • selectディスクデータを変更しません。特に、サーバーの元のディスク上のデータには影響しません。

次の例を容易にするために、データベースに次のデータ テーブルが作成されています。

6.1 フルカラムクエリ

例:

知らせ:

実稼働環境では、返されるデータが非常に大きくなる可能性があるため、上記のステートメントは注意して使用してください。データが非常に大きい場合、サーバーのネットワーク帯域幅が消費され、サーバーが正常に動作しなくなる可能性があります。

6.2 列を指定してクエリを実行する

例:

知らせ:

指定された列の順序は、テーブルが定義されている順序と同じである必要はありません。

6.3 クエリフィールドを式として使う

例:

知らせ:

  • 上記の中国語+数学+英語は式であり、結果はそれらの値の加算です。ただし、追加された値は元の列のデータ型によって制限されません。
  • この式は列間の演算であり、行とは関係ありません。
  • 式の計算は元のデータに影響を与えず、クエリ結果は一時テーブルになります。

6.4 列に定数を割り当てる

select中に列に定数を指定すると、その定数は各行に式として表示されます。

例1:

例2:

6.5 クエリ式に別名を割り当てる (as)

例:

6.6 明確な

列内の同じ値を持つ重複レコードを削除するには、 distinctキーワードを使用します。

例1: 列の重複排除

例 2:複数の列の重複排除 (要件: すべての列の前に distinct を配置し、各行の各列の値が他の行の各列の値と同じ場合にのみレコードが重複しているとみなされます)

6.7 クエリ結果の並べ替え(order by)

クエリ操作にorder by含まれていない場合、クエリ結果の順序は不定になります。並べ替えるクエリ ステートメントで、テーブル名の後に並べ替える列名/式 [asc | desc] を追加できます。

補充:

  • asc : 昇順(小さいものから大きいものへ)を示します。ソート方法を指定しない場合、デフォルトは asc です。
  • desc : 降順(大きいものから小さいものへ)を示します。これは、 descendingの略語です。
  • ソート時に、いずれかの値が NULL の場合、その値は最小値とみなされます。
  • 複数の列の並べ替えをサポートし、並べ替える列の順序で優先順位が付けられ、並べ替える列はカンマで区切られます。
  • バブルソート、選択ソート、挿入ソート、シェルソート、ヒープソート、クイックソート、マージソートなど多くのソートアルゴリズムが知られています。その中でも、マージソートはMySQLデータのソートに最も適しています。MySQLデータはハードディスクに保存されており、ハードディスクの読み取りおよび書き込み操作は非常にコストがかかるためです。読み取りおよび書き込み回数を減らすには、トラバーサルの少ないソート方法を見つける必要があります。初期データ量に加えて、メモリに一度にすべてを保存できない場合があるため、各セグメントをソートしてから保存することができます。したがって、MySQL でデータをソートするには、マージ ソートの方が適しています。

例 1:昇順で数式をクエリする

例2 : 降順で数学を検索する

例3:式またはエイリアスを使用した並べ替え

例 4:複数の列を包括的に並べ替え、 mathが最も高い場合はchineseが最も低いことを要求します。

6.8 条件付きクエリ (where)

条件付きクエリは幅広い用途があり、上記の使用方法に限定されません。たとえば、 updatedeleteなどのステートメントも使用できます。これは、where 条件式の形式でスクリーニングを実行します。これは、クエリ結果を走査し、各レコードを条件に取り込み、条件を満たすレコードを保持し、条件を満たさないレコードを除外することと同じです。

条件式では比較演算子または論理演算子を使用できます。

比較演算子:

論理演算子:

オペレーター例示する
そしてJavaの&&と同様に、複数の条件が満たされた場合にのみ結果は真になります。
またはJavaの||と同様に、1つの条件が真である限り、結果は真になります。
ないJavaの~と同様に、条件が真の場合、結果は偽になります。

Like はワイルドカードによく一致します:

ワイルドカード例示する
%任意の数の文字(0を含む)を示します
_任意の文字を表す

補充:

  • 条件where式を使用できますが、エイリアスは使用できません
  • andよりも優先度が高い
  • and 記号はbetween関数を実現することもできますが、 between実際にはこの範囲一致のための SQL の最適化です。
  • ワイルドカード:文字はあいまい検索で他の文字を表すために使用できます。
  • あいまい一致では文字列の比較が行われるため、現在の列に格納されている文字列が長い場合は、パフォーマンスが大幅に低下します。
  • あいまい一致では、列が必ずしも文字列型である必要はありません。たとえば、数値型も許容されます。ただし、ステートメント内の like の後のあいまい検索値は引用符で囲む必要があります。
  • SQL の条件は「論理分岐」ではなく「フィルター」に相当します。

例1: 英語で不合格になった生徒とその成績を照会する

例 2: 合計スコアが 200 未満の学生とその合計スコアを照会する (次のメソッドには NULL 値は含まれません)

例3:合計スコアが200未満の学生とその合計スコアを照会します。値がNULLの学生も含まれます(表示の便宜上、値がNULLの学生Zhuge Liangを積極的に追加しました)

例4:中国語のスコアが80~90の生徒とそのスコアを照会する

例5: 数学の成績が98、73、65の生徒と成績を照会する

例6: Sunという姓を持つ生徒をすべて検索する

例 7: 名前が「德」で終わる生徒をすべて検索する

例8: 名前に「悟」が含まれる生徒を検索する

例9: 姓がSunで、名前が2文字だけの生徒をすべて検索する

例10: 数学の成績が90点以上の生徒とその数学の成績を照会する

6.9 ページネーションクエリ(制限)

クエリ結果が多数ある場合は、クエリ結果を複数のページに分割できます。

適用シナリオ: Baidu で何かを検索すると、検索結果が多数表示されます。一度に大量のデータを取得しないように、ページング クエリを使用します。

注:クエリするデータの量が多い場合、ネットワーク オーバーヘッドは実際には非常に大きくなります。これには次のものが含まれます。

  • データベースサーバのディスクIO
  • データベースクライアントからデータベースサーバーへのネットワークIO

したがって、ページング クエリでは、クエリ内の結果の数を制限して、大きなネットワーク オーバーヘッドを防ぐことができます。

例 1: limit nは最大 n 行の結果を返します (n はクエリ結果の最大数を表し、デフォルトでは行 0 から始まります)

例 2: limit m , n は、行 m から始まり、行 n 以下までの結果を返します。

例 3: limit n offset m行 m から始まり n 行以内の結果を返します。

補充:

取得される最初の行は行 1 ではなく行 0 です。上記の例 2 および 3 の m は行 m または行 m+1 を表します。

7. テーブルのデータを変更する

文法:

テーブル名を更新し、列名 1 を設定して、変更する値 [、...、列名 n を設定して、変更する値] [条件] [順序...] [制限...];
1


補充:

  • update実際にデータベースサーバーのハードディスク上のデータを変更します
  • updateにおける=は代入と同等である
  • データ結果がNULLの場合、これに基づく操作の結果もNULLのままです。

8. テーブルからデータを削除する

文法:

テーブル名から削除 [where ...] [order by ...] [limit ...]

知らせ:

  • 削除は慎重に行う必要がある
  • delete from 。データ量が多い場合、削除速度は非常に遅くなります。比較すると、テーブルを直接削除する方が速い

これで、MySQL データベースのデータ テーブルの基本操作に関するこの記事は終了です。MySQL データ テーブルの基本的な操作の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL データベース ターミナル - 一般的な操作コマンド コード
  • Python MySQL データベースの基本操作とプロジェクト例
  • MySQL データベースの集計クエリと結合クエリ操作
  • MySQL データベースの操作とデータ型
  • MySQL学習データベース操作DML初心者向け詳細解説
  • 初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習
  • MySQL データベース データ テーブル操作

<<:  Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

>>:  HTML ページ内の js および css ファイルのキャッシュを自動的にクリーンアップします (バージョン番号を自動的に追加します)

推薦する

MySQL ストアド プロシージャの使用例の分析

この記事では、MySQL ストアド プロシージャの使用方法について説明します。ご参考までに、詳細は以...

SpringBootはActiviti7実装コードを統合する

Activiti7 の正式リリース以降、SpringBoot2.x との統合開発を全面的にサポートし...

MySQL クエリのパケットが大きすぎる問題と解決策

問題の説明:エラーメッセージ:原因: com.mysql.jdbc.PacketTooBigExce...

Linuxにgitをインストールする方法

1. はじめにGit は、規模の大小を問わずあらゆるプロジェクトを俊敏かつ効率的に処理するために使用...

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

Linux netfilter/iptables の知識ポイントの詳細な説明

ネットフィルターNetfilter は、パケット フィルタリング、転送、およびアドレス変換 NAT ...

デザインリファレンス 美しく独創的なブログデザイン

以下にリストされているすべてのブログはオリジナルであり、独自にデザインされています。これらは、他者が...

Nexus をベースに Alibaba Cloud プロキシ ウェアハウスを構成するプロセスの分析

Nexus のデフォルトのリモートリポジトリは https://repo1.maven.org/ma...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

JSで実現したページサイドバーの効果に関する研究

目次発見: ディスプレイアニメーションの応用実装:記事の1行目を表示する効果を実現する方法実際、その...

Dockerを使用してPythonランタイム環境の基本イメージを作成する方法

1. 準備1.1 Pythonインストールパッケージをダウンロードします(注:Pythonバージョン...

Vueで親子コンポーネント通信を実装する方法

目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...

VueはCanvasを使用してランダムなサイズで重なり合わない円を生成します

目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...