13プログラマーが知っておくべき最も重要なSQLコマンド

13プログラマーが知っておくべき最も重要なSQLコマンド

データベースは現代のウェブを動かします。すべての大規模または動的なWebサイトは、何らかの方法でデータベースを使用し、 構造化照会言語(SQL) 、データを操作する可能性は本当に無限大です。すでにSQLを知っている場合は、すべてのWebサイト開発者が知っておくべきこれらのプログラミングスキルを確認してください。





今日はあなたにいくつかをお見せします コアSQLコマンド あなたはプログラマーとして知る必要があります。





データベーステーブルから返されるデータには多くの名前があります。データは一般的に 記録 、 また タプル 。この記事では、これらの用語を同じ意味で使用します。





序文

今日のすべての例は、4つの架空の表に基づいています。 NS お客様 表には、顧客の名前と年齢が含まれています。

NS ハイツ 表には、任意の人物の名前と身長が含まれています。



NS スタッフ テーブルには、スタッフの名前と年齢が含まれています。これは、顧客テーブルとまったく同じです。

ファイナルテーブルは 顧客とスタッフのテーブルと同じように、人の名前と年齢が含まれています。





1.選択

NS 選択する ステートメントは最も単純であり、他のほとんどすべてのコマンドを支えているため、ステートメントを理解することが不可欠です。予約したSQLワードを大文字で記述することをお勧めします。これにより、コマンドが読みやすくなり、理解しやすくなります。

その名前が示すように、selectは 選択する データベースからのデータ。最も簡単な使用法は次のとおりです。





SELECT * FROM table;

これには2つの部分があります。最初の部分 ( 選択する * )選択する列を指定します。アスタリスクは、テーブル内のすべての列を選択することを示します。第二部( FROMテーブル )このデータを取得する場所をデータベースエンジンに指示します。 'table'をデータベーステーブルの名前に置き換えます。

この選択は「選択スター」として知られています。アスタリスクを使用することは、テーブル内のデータを把握するための良い方法ですが、本番コードにアスタリスクを使用することはお勧めしません。選択した星を使用する場合、必要なデータを提示するのはデータベースエンジン次第です。データが返される順序を制御することはできないため、誰かがテーブルに新しい列を追加すると、プログラミング言語の変数が正しいデータを表していないことに気付く場合があります。幸いなことに、解決策があります。

次のように、取得する列を明示的に指定できます。

SELECT age, name FROM people;

このクエリは、「people」テーブルから「age」列と「name」列を取得します。データが多い場合、これを明示的にするのは少し面倒ですが、そうすることで将来の問題が減り、将来のプログラマーがSQLを理解しやすくなります。

追加のデータを選択したいが、それがどのテーブルにも保存されていない場合は、次のように行うことができます。

SELECT age, '1234' FROM people;

列名と一致する代わりに、一重引用符で囲まれた文字列が返されます。

2.どこで

selectコマンドはデータの取得に最適ですが、結果をもう少しフィルタリングしたい場合はどうでしょうか。青い目をしている人だけを検索するのはどうですか? 1月に生まれ、メカニックとして働く人々はどうですか?これは、 どこ コマンドが入ります。これにより、selectに条件を適用し、ステートメントの最後に条件を追加するだけです。

SELECT age, name FROM people WHERE age > 10;

このクエリは現在、10歳以上の人に制限されています。を使用して複数の条件を組み合わせることができます オペレーター:

SELECT age, name FROM people WHERE age > 10 AND age <20;

NS コマンドは英語の場合とまったく同じように機能します。ステートメントに別の条件を適用します。この例では、返されるデータは10〜20歳のレコードです。一致する結果がないため、データは返されません。

ps4アカウントを削除する方法

これと組み合わせて使用​​できる別のコマンドは次のとおりです。 また 。次に例を示します。

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

このクエリは、年齢が10を超えるか、名前が「Joe」に等しいレコードを返します。等号が1つしかないことに注意してください。ほとんどのプログラミング言語は、等価性をチェックするために二重等価(==)を使用します。これは、大多数のデータベースエンジンには必要ありません(ただし、環境ごとに非常に多くなる可能性があるため、最初に再確認してください)。

3.注文する

NS 注文 コマンドは、返された結果を並べ替えるために使用されます。もう1つの使いやすいものです。ステートメントの最後に追加するだけです。

SELECT name, age FROM people ORDER BY age DESC;

列と順序を指定する必要があります。 ASC 昇順または DESC 降順。次のように、複数の列で並べ替えることができます。

SELECT name, age FROM people ORDER BY name ASC, age DESC

注文者 他のコマンドと組み合わせると、おそらく最も便利です。すべてのクエリが論理的または順序付けられた方法でデータを返すわけではありません。このコマンドを使用すると、データを変更できます。

4.参加する

NS 加入 コマンドはに使用されます 加入 1つ以上のテーブルに格納されている関連データ。君は 加入 2番目のテーブルを最初のテーブルに移動し、データの接続方法を指定します。基本的な例は次のとおりです。

アンドロイドのための最高の無料コンパスアプリ
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

ここで起こっていることがいくつかあります。 'LEFT JOIN'構文から始める必要があります。これは、left型の結合を使用してテーブルを結合することを指定します。次に、結合するテーブル(高さ)を指定します。 NS USING(名前) 構文は、列 'name'が両方のテーブルにあり、これをテーブルを結合するためのキーとして使用する必要があることを示しています。

各テーブルで列の名前が異なっていても心配しないでください。 「USING」の代わりに「ON」を使用できます。

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

onステートメントは、キー入力する列を明示的に示します。結合には多くの種類があり、それぞれの詳細を説明するのに長い時間がかかるため、それらの使用法の概要を以下に示します。

  • (内部)参加 -両方のテーブルで一致する行を返します。
  • 左(外側)結合 -左側のテーブルからすべての行を返し、右側のテーブルから一致するものを返します。一致するものがない場合でも、左側のテーブルレコードが返されます。
  • 右(外側)結合 -これは、左結合の反対です。右テーブルのすべての行が、左テーブルの一致とともに返されます。
  • 完全(外部)結合 -いずれかのテーブルで一致するレコードを返します。

'INNER'または 'OUTER'構文はオプションです。理解しやすくなりますが、ほとんどの場合、指定する必要はありません。

5.エイリアス

これで基本がわかったので、見てみましょう。 エイリアス 指図。これは、テーブルの名前を一時的に変更するために使用されます。この新しい名前は、実行している個々のトランザクション内にのみ存在するため、他の何よりもニックネームになります。使用方法は次のとおりです。

SELECT A.age FROM people A;

有効な名前はどれでも使用できますが、私はアルファベットの文字を使用するのが好きです。各列名の前に、エイリアスが接頭辞として付けられます。このエイリアスは、宣言された直後にテーブルに割り当てられます。これは、これを行うのとまったく同じです。

SELECT people.age FROM people;

長いテーブル名を入力する代わりに、シンプルで覚えやすい文字を入力できますが、ポイントは何ですか?複数のテーブルから選択している場合、どの列がどのテーブルに属しているかについて混乱しがちです。両方のテーブルに同じ名前の列がある場合、テーブル名またはエイリアスを明示的に参照しないと、データベースクエリの実行に失敗する可能性があります。次に、2つのテーブルを使用した例を示します。

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

そして、これがエイリアスを使用した同じクエリです。

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

スタッフテーブルには「A」のエイリアスが与えられ、顧客テーブルには「B」のエイリアスが与えられます。テーブルのエイリアシングは、コードを理解しやすくし、入力の量を減らすのに役立ちます。

'AS'コマンドを使用して、エイリアスを使用して列の名前を変更することもできます。

SELECT age AS person_age FROM people;

このクエリが実行されると、列は「age」ではなく「person_age」と呼ばれるようになります。

6.ユニオン

連合 素晴らしいコマンドです。これにより、行を相互に追加できます。一致する列を追加する結合とは異なり、unionは、列の数と名前が同じであれば、無関係の行を追加できます。使用方法は次のとおりです。

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

ユニオンは、2つのクエリの結果を組み合わせる方法と考えることができます。ユニオンは、2つのクエリの間に一意の行がある場合にのみ結果を返します。 'UNION ALL'構文を使用して、重複に関係なく、すべてのデータを返すことができます。

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

行の順序がどのように変化するかに注意してください。 Unionは最も効率的な方法で動作するため、返されるデータは順番が異なる場合があります。

和集合の考えられるユースケースは小計です。合計のクエリを特定のシナリオの個々の合計のクエリに和集合させることができます。

7.挿入

これで、データベースからデータを取得する方法についてすべて理解できましたが、データを挿入する方法についてはどうでしょうか。これは、 入れる コマンドが入ります。例を次に示します。

INSERT INTO people(name, age) VALUES('Joe', 102);

テーブル名(人)と使用する列(名前と年齢)を指定する必要があります。次に、「VALUES」構文を使用して、挿入する値を指定します。これらは、以前に指定された列と同じ順序である必要があります。

挿入にwhere句を指定することはできません。また、存在する必要なテーブル制約に従うようにする必要があります。

8.更新

いくつかのデータを挿入した後、特定の行を変更する必要があるのは当然です。これが アップデート コマンド構文:

UPDATE people SET name = 'Joe', age = 101;

変更するテーブルを指定してから、「SET」構文を使用して列とその新しい値を指定する必要があります。この例は良いですが、すべてのレコードを更新します。これは必ずしも望ましいとは限りません。

より具体的にするために、selectを実行するときと同じように「WHERE」句を使用できます。

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

'AND'および 'OR'を使用して複数の条件を指定することもできます。

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

括弧が条件を制約するためにどのように使用されているかに注意してください。

Steamのダウンロードを高速化する方法

9.アップサート

おっとっと 奇妙に聞こえる言葉ですが、それは信じられないほど便利なコマンドです。テーブルに制約があり、一意の名前のレコードのみが必要であると指定したとします。たとえば、同じ名前の2つの行を格納したくないとします。 'Joe'の複数の値を挿入しようとすると、データベースエンジンはエラーをスローし、それを拒否します(まったく正しく)。 UPSERTを使用すると、レコードがすでに存在する場合にそれを更新できます。これは信じられないほど便利です!このコマンドがないと、最初にレコードが存在するかどうかを確認し、存在しない場合は挿入し、存在しない場合は正しい主キーを取得してから更新するために、多くのロジックを作成する必要があります。

残念ながら、アップサートはデータベースエンジンごとに実装方法が異なります。 PostgreSQLは最近この機能を取得したばかりですが、MySQLはかなり前からこの機能を備えています。参考までに、MySQLの構文は次のとおりです。

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

これが本質的に更新と挿入ステートメントであり、「挿入が失敗した場合の更新」として要約できることに注意してください。

10.削除

消去 レコードを完全に削除するために使用されます-悪用されると非常に損害を与える可能性があります!基本的な構文は非常に使いやすいです:

DELETE FROM people;

他のほとんどのコマンドと同様に、これにより削除されます すべての ! whereを使用して、行数をもう少し適切な数に制限する必要があります。理想的には1つです。

DELETE FROM people WHERE name = 'Joe';

システムを開発している場合は、「ソフト削除」を実装するのが賢明な場合がよくあります。実際にdeleteコマンドを実行することはなく、削除された列を作成してから、selectでその列を確認します。削除されたと思われるレコードをすばやく簡単に取得できれば、多くの困惑を避けることができます。ただし、これは適切なバックアップに代わるものではありません。

11.テーブルを作成します

NS テーブルを作成する コマンドはテーブルの作成に使用されます。それは別の非常に単純なものです:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

列名と制約が括弧内にあり、列に適切なデータ型が指定されていることに注意してください。優れたデータベース設計で必要とされるように、主キーが指定されます。

12.テーブルを変更する

NS 他の机 コマンドは、テーブルの構造を変更するために使用されます。既存のデータが競合を引き起こす場合、たとえば文字列を整数に変更する場合、データベースではテーブルを変更できないため、これはわずかに制限されます。そのような場合は、最初にデータを修正してから、テーブルを変更してください。次に例を示します。

ALTER TABLE people ADD height integer;

この例では、整数型の「height」という列をpeopleテーブルに追加します。変更できるものに実際には制限はありません。

13.ドロップテーブル

最後のコマンドは ドロップテーブル 。これを削除と考えてください。ただし、単一のレコードを削除するのではなく、テーブルとともにすべてのレコードを削除します。使用方法は次のとおりです。

DROP TABLE people;

これは非常に抜本的なコマンドであり、システムにプログラムする必要がある理由はありません。ほとんどの場合、手動でのみ実行する必要があります。 とても 破壊的な。

それが今日のすべてです。私はあなたがいくつかの有用なトリックを学んだことを願っています!あなたは方法を学ぶことができます ウェブサイトを作る 、次に、新しく見つけたスキルを使用して動的にします。これらの間違いを犯したり、SQLインジェクションに対して脆弱なままにしないように注意してください。 SQLを学ぶ必要があるかどうかわからない場合は、静的サイトジェネレーターを検討しましたか?

お気に入りのSQLのヒントとコツを以下にコメントしてみませんか?

画像クレジット:HYS_NP / Shutterstock

共有 共有 つぶやき Eメール Windows 11にアップグレードする価値はありますか?

Windowsが再設計されました。しかし、それはWindows10からWindows11に移行するように説得するのに十分ですか?

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • SQL
著者について ジョーコバーン(136件の記事が公開されました)

Joeは、英国のリンカーン大学でコンピュータサイエンスを卒業しています。彼はプロのソフトウェア開発者であり、ドローンを飛ばしたり音楽を書いたりしていないときは、写真を撮ったりビデオを制作したりしていることがよくあります。

ジョーコバーンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください