カテゴリ アーカイブ: SQL に関する書籍。 レッスン付きの初心者向け SQL の基礎 インタラクティブな SQL チュートリアル

ほとんどの最新の Web アプリケーションは、データベースと対話します。通常は、 SQL。 幸いなことに、この言語は非常に簡単に習得できます。 この記事では、シンプルに見ていきます SQL 要求し、それらを使用して対話する方法を学びます MySQL データベース。

あなたは何が必要ですか?

SQL (構造化照会言語) などのデータベース管理システムとやり取りするために特別に設計された言語 MySQL、オラクル、SQLite その他... 実行する SQL この記事のリクエストでは、インストールすることをお勧めします MySQL ローカル コンピューターに。 また、私は使用をお勧めします phpMyAdmin ビジュアルインターフェースとして。

これはすべて、みんなのお気に入りのデンバーで利用できます。 誰もがそれが何であるか、どこで入手できるかを知っておくべきだと思います:)。 できるそれ以外の場合は、WAMP または MAMP を使用します。

デンバーにはビルトインがあります MySQL コンソール。 使用します。

データベースの作成:データベースの作成

これが私たちの最初の要求です。 さらなる作業のために最初のデータベースを作成します。

開始するには、 MySQL コンソールとログイン。 為にワンプ デフォルトのパスワードは空です。 それは何もありません:)。 為に MAMP - 「ルート」。 デンバーは明確にする必要があります。

ログイン後、以下の行を入力してクリック入る:

CREATE DATABASE my_first_db;

他の言語と同様に、クエリの最後にセミコロン (;) が追加されることに注意してください。

また、SQLのコマンド 大文字と小文字を区別。 大文字で書きます。

オプション のみ: キャラクターセット 照合

インストールしたい場合文字セット (文字セット) と照合 (比較) が可能 次のコマンドを書きます。

CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

でサポートされている文字セットのリストを見つける MySQL。

データベースを表示:すべてのデータベースをリストします

このコマンドは、使用可能なすべてのデータベースを表示するために使用されます。

データベースを削除:データベースの削除

このクエリで既存のデータベースを削除できます。

このコマンドは警告なしで実行されるため、注意してください。 データベースにデータがある場合、それらはすべて削除されます。

使用する:データベースの選択

技術的には、これはクエリではなく演算子であり、最後にセミコロンは必要ありません。

それはMySQLに伝えます 現在のセッションでデフォルトで動作するデータベースを選択します。 これで、テーブルを作成し、データベースで他のことを行う準備が整いました。

データベース内のテーブルとは何ですか?

データベース内のテーブルを次のように表すことができます。エクセルファイル。

図のように、テーブルには列名、行、および情報があります。 使用することで SQL そのようなテーブルを作成できるクエリ。 また、情報を追加、読み取り、更新、および削除する場合があります。

テーブルの作成: テーブルを作成する

C このクエリを使用して、データベースにテーブルを作成できます。 残念ながらドキュメント MySQL このテーマの初心者にはあまり明確ではありません。 このタイプのリクエストの構造は非常に複雑になる可能性がありますが、簡単なものから始めましょう。

次のクエリは、2 つの列を持つテーブルを作成します。

CREATE TABLE ユーザー (ユーザー名 VARCHAR(20)、create_date DATE);

クエリを複数の行に記述し、インデント用のタブを使用できることに注意してください。

最初の行はシンプルです。 「users」というテーブルを作成するだけです。 次に、カンマで区切られた括弧内は、すべての列のリストです。 各列名の後に、VARCHAR や DATE などの情報タイプがあります。

VARCHAR(20) は、列が文字列型で、最大 20 文字の長さであることを意味します。 DATE は、「YYYY - MM-DD」の形式で日付を格納するために使用される情報タイプでもあります。

主キー ( 主キーh)

次のクエリを実行する前に、主キーとなる「user_id」の列も含める必要があります。 PRIMARY KEY は、テーブル内の各行を識別するために使用される情報と考えることができます。

CREATE TABLE ユーザー (user_id INT AUTO_INCREMENT PRIMARY KEY、ユーザー名 VARCHAR(20)、create_date DATE);

INT 32 ビットの整数型 (数値など) を作成します。自動増加 新しい価値を自動的に生成する ID 新しい情報の行を追加するたびに。 これは必須ではありませんが、プロセス全体が簡単になります。

この列は整数値である必要はありませんが、最も一般的に使用されます。 主キーを持つこともオプションですが、データベースのアーキテクチャとパフォーマンスのために推奨されます。

クエリを実行しましょう:

テーブルを表示:すべてのテーブルを表示

このクエリを使用すると、データベースにあるテーブルのリストを取得できます。

説明:テーブル構造を表示

このクエリを使用して、既存のテーブルの構造を表示できます。

列はすべてのプロパティとともに表示されます。

ドロップテーブル:テーブルを削除

DROP DATABASES と同様に、 このクエリは、テーブルとその内容を警告なしで削除します。

他の机: テーブルを変更

このクエリには、テーブルに加えられる変更が多いため、複雑な構造が含まれる場合もあります。 例を見てみましょう。

(最後のステップでテーブルを削除した場合は、テスト用に再度作成します)

列の追加

ALTER TABLE users ADD email VARCHAR(100) AFTER username;

SQL は可読性が高いので、詳しく説明しても意味がないと思います。 「ユーザー名」の後に新しい列「メール」を追加しています。

列の削除

それもとても簡単でした。 警告なしにデータが削除される可能性があるため、このクエリは注意して使用してください。

さらに実験するために、削除したばかりの列を復元します。

列を変更する

列のプロパティを変更したい場合がありますが、そのために列を完全に削除する必要はありません。

このクエリは、ユーザー列の名前を「user_name」に変更し、その型を VARCHAR(20) から VARCHAR(30) に変更しました。 このような変更によって、テーブル内のデータが変更されることはありません。

入れる: テーブルへの情報の追加

次のクエリを使用して、テーブルに情報を追加してみましょう。

ご覧のとおり、VALUES() にはコンマ区切りの値のリストが含まれています。 すべての値は単一の列で囲まれています。 また、値は、テーブルの作成時に定義された列の順序になっている必要があります。

「user_id」という PRIMARY KEY フィールドの最初の値は NULL であることに注意してください。 列には AUTO_INCREMENT プロパティがあるため、ID を自動的に生成するためにこれを行います。 初めて情報が追加されたとき、ID は 1 になります。次の行は 2 となります...

代替オプション

行を追加するための別のクエリ オプションがあります。

今回は、VALUES の代わりに SET キーワードを使用しており、括弧はありません。 いくつかのニュアンスがあります:

列はスキップできます。 たとえば、デフォルトで AUTO_INCREMENT 値を取得する「user_id」に値を割り当てませんでした。 VARCHAR 列を省略すると、空の文字列が追加されます。

各列は名前で参照する必要があります。 このため、以前のバージョンとは異なり、任意の順序で言及できます。

代替案 2

別のオプションがあります。

ここでも列名への参照があるため、任意の順序で値を指定できます。

LAST_INSERT_ID()

このクエリを使用して、現在のセッションの最後の行の AUTO_INCREMENT であった ID を取得できます。

今()

今度は、クエリで MySQL 関数を使用する方法を示します。

NOW() 関数は現在の日付を返します。 したがって、新しい行を挿入するときに、列の日付を現在の日付に自動的に設定するために使用できます。

警告を 1 回受け取りましたが、無視してください。 これは、NOW() が一時的な情報を表示する役割も果たしているためです。

選択する: テーブルからのデータの読み取り

テーブルに情報を追加する場合、そこからそれを読み取る方法を学習することは論理的です。 ここで SELECT クエリが役に立ちます。

以下は、テーブルを読み取るための最も単純な SELECT クエリです。

この場合、アスタリスク (*) は、テーブルからすべてのフィールドを要求したことを意味します。 特定の列のみが必要な場合、クエリは次のようになります。

調子どこ

ほとんどの場合、すべての列に関心があるわけではなく、一部の列にのみ関心があります。 たとえば、ユーザー「nettuts」の電子メール アドレスのみが必要であるとします。

WHERE を使用すると、クエリで条件を設定し、詳細な選択を行うことができます。

等号は、プログラミングのように 2 つではなく、1 つの等号 (=) を使用することに注意してください。

比較を使用することもできます。

AND または OR を使用して条件を組み合わせることができます。

数値は引用符で囲んではならないことに注意してください。

の()

これは、複数の値をサンプリングする場合に便利です。

お気に入り

「ワイルドカード」リクエストを行うことができます

% 記号は「ワイルドカード」として使用されます。 つまり、その代わりに何でもかまいません。

調子オーダーバイ

何らかの基準で順序付けられた形式で結果を取得したい場合

デフォルトの順序は ASC (最小から最大) です。 逆の場合は、DESC が使用されます。

リミット ... オフセット ...

受け取る結果の数を制限できます。

LIMIT 2 は、最初の 2 つの結果のみを取得します。 LIMIT 1 OFFSET 2 は、最初の 2 の後に 1 つの結果を取得します。 LIMIT 2, 1 も同じことを意味します (オフセットが最初に来て、次に limit が来ることに注意してください)。

アップデート: 表の情報を変更する

このクエリは、テーブル内の情報を変更するために使用されます。

ほとんどの場合、特定の列に変更を加える可能性が高いため、WHERE 句と組み合わせて使用​​されます。 WHERE 句がない場合、変更はすべての行に影響します。

LIMIT を使用して、変更が必要な行数を制限することもできます。

消去: テーブルからの情報の削除

UPDATE と同様に、このクエリは WHERE で使用されます。

テーブルの内容を削除するには、次のようにします。

ユーザーから削除します。

でも使ったほうがいいトランケート

削除に加えて、このクエリは値もリセットします自動増加 行を再度追加すると、カウントダウンはゼロから始まります。消去 はこれを行わず、カウントダウンが続行されます。

文字列値と特殊語の無効化

文字列値

一部の文字は無効にする必要があります (エスケープ )、または問題がある可能性があります。

このために、バックスラッシュが使用されます。(\).

特別な言葉

なぜならMySQLでは 特殊な言葉が多い選択または更新 )、使用時のエラーを避けるために、引用符を使用する必要があります。 しかし、普通の引用ではありませんが、これらは(`).

つまり、「」という名前の列を追加する必要があります消去 "、次のようにする必要があります。

結論

最後までお読みいただきありがとうございます。 この記事がお役に立てば幸いです。 まだ終わっていません! つづく:)。

この記事では、すべての要点をまとめてみました トランザクション SQL初心者のデータベース プログラマーが言語を学び、Transact-SQL でクエリとアプリケーションを作成するのに役立ちます。

データベース プログラミング、より具体的には、Microsoft SQL Server を実行するデータベースは非常に人気が高まっています。そのため、すべての主要なポイントを説明と、もちろん例で見つけることができる一種のミニ リファレンス ブックを作成することにしました。

SQL クエリの記述またはデータベース オブジェクトの作成を練習するには、無料版の SQL Server Express を使用できます。このガイドの編集時点では、最新バージョンは Microsoft SQL Server 2014 Express です。

初心者向け Transact-SQL リファレンス - リファレンスの説明

このガイドは次のようになります。最初にナビゲーション付きの小さな目次を示し、次にガイド自体が始まります。各項目にはコメント、説明、および例があります。 また、サイトの資料のどこかでこれまたはそのオブジェクトまたはアクションをすでに詳細に調べたり使用したりした場合は、もちろんリンクを張って、詳細な例や、これまたはそのアクションを実際に使用する方法を確認できるようにします。 .

完全にすべてをカバーすることは単純に不可能であるため、ここで何かを見つけられなくても驚かないでください。 繰り返しになりますが、このガイドは初心者の Transact-SQL プログラマーと、SQL サーバーから定期的にデータをアップロードする必要がある単純な管理者を対象としています。

T-SQL 言語の詳細な学習については、私の著書「The T-SQL Programmer's Way」を読むことをお勧めします。 Transact-SQL 言語チュートリアル」では、T-SQL 言語について、多数の例を使用して、可能な限り詳細に説明しています。

データベース

初心者の Transact-SQL プログラマーでも、データベースの作成方法やそのプロパティの変更方法を知っているはずです。そのため、テーブル、ビュー、関数、その他すべてを見る前に、Transact-SQL でデータベースを作成、変更、および削除するプロセスについて説明しましょう。 SQL。

創造

データベースを作成するには、次のクエリを実行する必要があります。

CREATE DATABASE テスト

ここで、test はデータベースの名前です。

SQL Server でデータベースを作成する方法の詳細については、MS Sql 2008 でデータベースを作成する方法の資料で説明しました。

除去

データベースを削除する必要がある場合は、次のクエリを使用できます。

DROP DATABASE テスト

変化する

データベース パラメーターを変更するには、すべてのパラメーターが詳細に説明されている Management Studio グラフィカル インターフェイスを使用するか、ALTER DATABASE クエリを送信して、たとえば、テスト データベースの自動圧縮を有効にし、次のクエリを使用することができます。

ALTER DATABASE テスト SET AUTO_SHRINK ON; --A ALTER DATABASE テストをオフにする SET AUTO_SHRINK OFF;

変更する ALTER DATABASE コマンド、変更するデータベースの名前をテストする、データベース パラメータを変更することを示す SET コマンド、パラメータ自体を AUTO_SHRINK する、パラメータ値を ON / OFF する、ということが明確であることを願っています。

データ型

最も一般的で頻繁に使用される

正確な数字

  • tinyint - 1 バイト
  • smallint - 2 バイト
  • int - 4 バイト
  • bigint - 8 バイト
  • 数値および小数( 精度と位取りが固定された型)
  • お金 - 8 バイト
  • スモールマネー - 4 バイト

おおよその数字

  • float [ (n) ] - サイズは n に依存します (n は 1 から 53 まで、デフォルトは 53 です)
  • 実数 - 4 バイト

日時

  • 日付 - 日付
  • 時間 - 時間
  • datetime は、1 秒未満の 24 時間形式の時刻を含む日付です。

文字列

  • char [ (n) ] は固定長の文字列で、n は文字列の長さ (1 ~ 8000) です。 ストレージ サイズは n バイトです。
  • varchar [ (n | max) ] は固定長の文字列で、n は文字列の長さ (1 から 8000) です。 max を指定すると、最大ストレージ サイズは 2 ^ 31-1 バイト (2 GB) になり、n を指定すると、入力されたデータの実際の長さに 2 バイトを加えた値になります。
  • text - 可変長文字列データ、最大サイズ 2,147,483,647 バイト (2 GB)。
  • nchar [ (n) ] は Unicode の固定長文字列で、n は文字列の長さ (1 ~ 4000) です。 ストレージ サイズはバイト単位で n の値の 2 倍です
  • nvarchar [ (n | max) ] は Unicode の固定長文字列で、n は文字列の長さ (1 ~ 4000) です。 max が指定された場合、最大ストレージ サイズは 2^31-1 バイト (2 GB) になり、n の場合、入力されたデータの実際の長さの 2 倍に 2 バイトを加えたものになります。
  • ntext - 最大文字列長が 1,073,741,823 バイトの可変長文字列データ。

バイナリデータ

  • binary [ (n) ] - 固定長のバイナリ データ。サイズは n バイトです。n は 1 ~ 8000 の値です。ストレージ サイズは n バイトです。
  • varbinary [ (n | max) ] - 可変長のバイナリ データ。n は 1 ~ 8000 の値を指定できます。max を指定すると、最大ストレージ サイズは 2 ^ 31-1 バイト (2 GB) になります。 n が指定されている場合、ストレージ サイズは、入力されたデータの実際の長さに 2 バイトを加えたものになります。
  • image - 可変長のバイナリ データ。サイズは 0 から 2^31 - 1 (2 147 483 647) バイトです。

他の

  • xml - xml データのストレージ。 これについては、Transact-sql の資料 - xml の操作で詳しく説明しました。XML とは何かをまったく知らない場合は、初心者のための XML の基礎の記事で説明しました。
  • table - 結果の行セットのストレージ。

テーブル

SQL に関連するほぼすべての記事でテスト テーブルの作成例を示しているため、このサイトにはテーブル作成の十分な例がありますが、知識を統合するために、テスト テーブルを作成、変更、削除してみましょう。 Transact-SQL のテーブルでフィールド データ型がどのように設定されるかを見てみましょう。

創造

CREATE TABLE test_table( IDENTITY(1,1) NOT NULL,--identifier, integer int, NULL 値不可 (50) NULL, --Name, string 50 文字長, NULL 値 NULL 可, --sum 、おおよその数値、NULL を許可 NULL, --日付と時刻、NULL を許可 (100) NULL --string 100 文字の長さ、NULL を許可) ON GO

列の追加

ALTER TABLE test_table ADD prosto_pole 数値(18, 0) NULL
  • test_table はテーブルの名前です。
  • add - 追加するコマンド;
  • prosto_pole – 列名;
  • 極数値(18, 0) – 新しい列のデータ型;
  • NULL – このフィールドに NULL 値を格納できることを意味するパラメーター。

データ型の変更

作成したばかりの新しいフィールド (prosto_pole) のデータ型を numeric(18, 0) から bigint に変更し、コメント フィールドの長さを 300 文字に増やしましょう。

ALTER TABLE test_table ALTER COLUMN prosto_pole bigint; ALTER TABLE test_table ALTER COLUMN コメント varchar(300);

ノート! これらのフィールドの値を変換できない場合、SQL Server はデータ型を変更できません。その場合、すべてのデータを含む列を削除し、すべてのデータを再度追加またはクリアする必要があります。このフィールド。

列の削除

特定の列を削除するには、drop コマンドを使用します。たとえば、prosto_pole フィールドを削除するには、次のクエリを使用します。

ALTER TABLE test_table DROP COLUMN prosto_pole

テーブルの削除

テーブルを削除するために、このような簡単なクエリを書きましょう。ここで、test_table は削除するテーブルです

DROP TABLE test_table

表現

データベースで非常に便利なオブジェクトは、ビュー (VIEW) です。私たちの意見では、単なるビューです。 誰も知らない場合、ビューは、テーブルと同じ方法でアクセスできる一種のストアド クエリです。 test_table テスト テーブルに基づいてビューを作成してみましょう。たとえば、条件によって合計が 1000 を超えるクエリを作成する必要が非常に頻繁にあるとします。そのため、毎回このクエリを作成しないようにするには、一度ビューを見て、その後、彼を参照します。

創造

CREATE VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1000 GO

通話例を見る:

SELECT * FROM test_view

変化する

ALTER VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1500 GO

除去

ドロップビュー test_view

システム ビュー

MS SQL Server DBMS には、システム ビューなどの非常に有用な情報を提供できるシステム オブジェクトもあります。 ここで、そのような表現をいくつか分析します。 通常のビューと同じ方法でアクセスできます ( 例: タイトルビューから * を選択)

  • sys.all_objects - 名前、タイプ、作成日などのパラメーターを含むすべてのデータベース オブジェクトが含まれます。
  • sys.all_columns - テーブルのすべての列を詳細な特性とともに返します。
  • sys.all_views - データベースのすべてのビューを返します。
  • sys.tables - すべてのデータベース テーブル。
  • sys.triggers - すべてのデータベース トリガー。
  • sys.databases - サーバー上のすべてのデータベース。
  • sys.sysprocesses - データベース内のアクティブなプロセス、セッション。

その数は実に多く、すべてを整理することは不可能です。 それらが実際にどのように使用できるかを確認したい場合は、たとえば、資料ですでにこれを行っています

機能

MS SQL Server では、特定のデータを返す関数を作成できます。つまり、複雑な計算や複雑なデータ サンプリングを必要とする値を取得する必要がある場合などに、ユーザー自身が関数を記述して後で使用できます。 関数呼び出しがさまざまな要求やアプリケーションで頻繁に必要な値を置き換えるときに、コードを削減するだけの場合もあります。

創造

CREATE FUNCTION test_function (@par1 bigint, @par2 float) RETURNS varchar(300) AS BEGIN DECLARE @rezult varchar(300) SELECT @rezult=comment FROM test_table WHERE id = @par1 AND summa > @par2 RETURN @rezult END
  • CREATE FUNCTION - 関数オブジェクトを作成するコマンド。
  • test_function - 新しい関数の名前;
  • @par1 と @par2 は入力パラメーターです。
  • RETURNS varchar(300) – 戻り型;
  • DECLARE @result varchar(300) – varchar(300) 型の変数の宣言;
  • この場合の select ステートメントは、関数のアクションです。
  • RETURN @result - 結果を返します。
  • BEGIN と END は、それぞれ関数コードの先頭と末尾です。

クエリでの使用例:

SELECT test_function(1, 20)

変化する

ALTER FUNCTION test_function (@par1 bigint, @par2 float) RETURNS varchar(300) AS BEGIN DECLARE @rezult varchar(300) SELECT @rezult=comment FROM test_table_new WHERE id = @par1 AND summa >= @par2 RETURN @rezult END

除去

DROP FUNCTION test_function

組み込み関数

SQL Server ではユーザー定義関数を作成できるだけでなく、DBMS 開発者が作成した組み込み関数を使用することもできます。 それらはたくさんあるので、最も一般的なものをグループに分けて簡単に説明しようとしました。

システム機能

ここでは、さまざまなシステム データを返す関数の例をいくつか示します。

  • @@VERSION - SQL サーバーのバージョンを返します。
  • @@SERVERNAME - サーバーの名前を返します。
  • SUSER_NAME() - サーバー上のユーザー ログイン名、つまり、このユーザーまたはそのユーザーがどのログインで動作しているか。
  • user_name() – データベースのユーザー名;
  • @@SERVICENAME は DBMS サービスの名前です。
  • @@IDENTITY は、テーブルに挿入された最後の識別子です。
  • db_name() は現在のデータベースの名前です。
  • db_id() はデータベース ID です。

集計関数

値のセット (グループ) に基づいて何らかの値を計算する関数。 これらの関数を呼び出すときに、結果を表示する列を指定する必要がある場合は、このフィールドでデータをグループ化 (group by) する必要があります。 この構造については、Transact-SQL のグループ化データ グループの記事で詳しく説明しました。

  • avg - 平均値を返します。
  • count - 値の数。
  • max - 最大値;
  • min – 最小値;
  • sum は値の合計です。

使用例:

SELECT COUNT(*) をカウント、SUM(summa) を合計、MAX(id) を最大、MIN(id) を最小、AVG(summa) を avg FROM test_table

文字列関数

このタイプの関数は、それぞれ文字列で機能します。

(文字列式, キャラクター) – 文字列の左から指定された数の文字を返します。

SELECT LEFT("左関数の例", 10) --「例」の結果

(文字列式, キャラクター) - 文字列の右から指定された数の文字を返します

SELECT Right("Right 関数の例", 10) -- "Right アクション" の結果

レン (ライン) - 文字列の長さを返します。

SELECT len("Len example") -- 結果 28

低い (ライン) - すべての文字を小文字に変換した文字列を返します。

SELECT lower("下の例") --result "下の例"

アッパー (ライン) - すべての文字が大文字に変換された文字列を返します。

SELECT Upper("Upper Example") --結果 "UPPER EXAMPLE"

トリム (ライン) - 先頭のスペースをすべて削除した文字列を返します。

SELECT ltrim(" ltrim example") -- 結果 "ltrim example"

Rトリム (ライン) - 右側のすべてのスペースを削除した文字列を返します

SELECT Rtrim (" Rtrim の例 ") -- 結果" Rtrim の例"

交換 (ライン, 私たちは何を探していますか, 何を置き換えますか) - 2 番目のパラメーターで指定された文字列式のすべての出現箇所を、3 番目のパラメーターで指定された文字に置き換えます。

SELECT Replace("Replace example", "at work", "REPLACE") -- Result "Example REPLACE function Replace"

複製する (ライン, 繰り返し回数) - 文字列 (最初のパラメーター) を 2 番目のパラメーターで指定された回数だけ繰り返します。

SELECT Replicate ("Example Replicate ", 3) -- 結果 "Example Replicate Example Replicate Example Replicate "

逆行する (ライン) - すべてを逆順に返します。

SELECT Reverse ("逆の例") -- 結果 "esreveR iiccnuf etobar op remirP"

スペース (スペース数) - 指定された数のスペースとして文字列を返します。

SELECT Space(10) -- 結果 " "

部分文字列 (ライン, 開始位置, 何文字) - 2 番目のパラメーターで指定された文字から始まる、3 番目のパラメーターで指定された数の長さの文字列を返します。

SELECT Substring("部分文字列関数の例", 11, 14) -- "関数演算" の結果

数学関数

ラウンド (番号, 丸め精度) – 数値式を 2 番目のパラメーターで指定された桁数に丸めます

SELECT Round(10.4569, 2) -- 結果 "10.4600"

(番号) - 切り捨てられた整数を返します。

SELECT Floor(10.4569) -- 結果 "10"

シーリング (番号) - 切り上げられた整数を返します。

SELECT Ceiling (10.4569) -- 結果 "11"

パワー (番号, 程度) - 2 番目のパラメーターで指定された乗数を返します。

SELECT Power(5,2) -- 結果 "25"

四角 (番号) – 数値の二乗を返します

SELECT Square(5) -- 結果 "25"

腹筋 (番号) – 正の絶対値を返します

SELECT Abs(-5) -- 結果 "5"

ログ(番号) は浮動小数点の自然対数です。

SELECT Log(5) -- 結果 "1.6094379124341"

円周率- パイ。

SELECT Pi() -- 結果 "3.14159265358979"

ランド- 0 から 1 までのランダムな浮動小数点数を返します

SELECT rand() -- 結果 "0.713273187517105"

日付と時刻関数

getdate()- 現在の日付と時刻を返します

SELECT Getdate() -- 結果 "2014-10-24 16:36:23.683"

(日付) は、日付から日を返します。

SELECT Day(Getdate()) -- 結果 "24"

(日付)*-日付から月番号を返します。

SELECT Month(Getdate()) -- 結果 "10"

(日付) - 日付から年を返します

SELECT year(Getdate()) -- 結果「2014」

DATEPART(日付セクション, 日付) - 日付 (DD、MM、YYYY など) から指定されたセクションを返します。

SELECT DATEPART(MM,GETDATE()) -- 結果「10」

日付 (日付) - 入力された式が日付かどうかをチェックします

SELECT Isdate(GETDATE()) -- 結果 "1"

関数変換

キャスト (データ型としての式) は、ある型を別の型に変換するための関数です。 例では、float 型を int に変換します。

SELECT CAST(10.54 as int) --結果 10

変換 – (データ型、式、日付形式) は、あるデータ型を別のデータ型に変換する関数です。 3 番目のオプション パラメータである日付形式を使用しながら、日付を変換するためによく使用されます。

SELECT GETDATE(), CONVERT(DATE, GETDATE(), 104) --結果 --2014-10-24 15:20:45.270 - 変換なし; --2014-10-24 変換後。

テーブル関数

それらは、テーブルからのようにデータを受け取るために作成されますが、さまざまな種類の計算の後に作成されます。 テーブル関数については、資料 Transact-sql - テーブル関数と一時テーブルで詳しく説明しました

創造

--関数の名前 CREATE FUNCTION fun_test_tabl (--受信パラメータとそのタイプ @id INT) --戻り値、つまり table RETURNS TABLE AS -- すぐに結果を返す RETURN (--クエリ自体またはいくつかの計算 SELECT * FROM test_table where id = @id) GO

変化する

--関数の名前 ALTER FUNCTION fun_test_tabl (--受信パラメータとそのタイプ @id INT) --戻り値、つまり table RETURNS TABLE AS -- すぐに結果を返す RETURN ( -- クエリ自体またはいくつかの計算 SELECT * FROM test_table where id = @id and summa > 100) GO

除去

DROP FUNCTION fun_test_table

ご覧のとおり、このような関数を作成、変更、または削除するには、通常の関数と同じ演算子が使用されます。唯一の違いは、関数が返す型です。

この関数の呼び出し例

SELECT * FROM fun_test_table(1)

手続き

手続き一度コンパイルされ、関数のようにさまざまなパラメーターを取ることができる SQL ステートメントのセットです。 計算を簡素化し、グループアクションを実行するために使用されます。

創造

CREATE PROCEDURE sp_test_procedure (@id INT) AS -- 変数の宣言 DECLARE @sum FLOAT --SQL ステートメント SET @sum = 100 UPDATE test_table SET summa = summa + @sum WHERE id = @id GO

変化する

ALTER PROCEDURE sp_test_procedure (@id int) AS -- 変数の宣言 DECLARE @sum float --SQL ステートメント SET @sum = 500 UPDATE test_table SET summa = summa + @sum WHERE id = @id GO

除去

DROP PROCEDURE sp_test_procedure

手続き呼び出し

たとえば、次のようにさまざまな方法で呼び出すことができます。

EXECUTE sp_test_procedure 1 -- または EXEC sp_test_procedure 1

ここで、EXECUTE および EXEC プロシージャ コール、sp_test_procedure はそれぞれプロシージャの名前、1 つのパラメータ値

システム手順

システム手順サーバー上のオブジェクトとサーバー自体の構成の両方で、さまざまな管理アクションを実行するための手順です。 これらは通常のプロシージャと同じ方法で呼び出されますが、任意のデータベースのコンテキストで呼び出されます。

たくさんありますので、ほんの一例をご紹介します。

sp_configure- DBMS カーネルの構成を表示および変更するための手順。 最初のパラメーターは構成パラメーターの名前で、2 番目のパラメーターは値です。

パラメータの値を変更します EXEC sp_configure "Ad Hoc Distributed Queries",1 reconfigure --apply EXEC sp_configure -- すべてのパラメータの値を表示します

ここで、「Ad Hoc Distributed Queries」はパラメーターの名前、1 はそれぞれ変更したい値、再構成は入力された値を適用します。

実際には、この手順を Transact-SQL のマテリアル クロスデータベース クエリに適用しました。

sp_executesql- 動的に生成できる Transact-SQL ステートメントまたは一連のステートメントを実行します。 この手順は、Transact-SQL のテーブルのマテリアル ログ データの変更で使用しました。

EXECUTE sp_executesql N"SELECT * FROM test_table WHERE id = @id", N"@id int", @id = 1

ここで、最初のパラメーターは sql ステートメント (Unicode 文字列)、2 番目は sql ステートメントに組み込まれたすべてのパラメーターの定義、3 番目はパラメーターの値です。

sp_help– データベース オブジェクトに関する詳細情報を返します。

EXECUTE sp_help "test_table"

sp_rename– データベース内のオブジェクトの名前を変更します。 テーブル、インデックス、テーブル内の列名の名前変更に使用できます。このプロシージャを使用して、ユーザー プロシージャ、トリガー、関数の名前を変更することはお勧めしません。

テーブルの名前変更の例

EXEC sp_rename "test_table", "test_table_new"

ここで、最初のパラメーターは古い名前のオブジェクトで、2 番目のパラメーターはオブジェクトの新しい名前です。

テーブル内の列の名前を変更する例

EXEC sp_rename "test_table.summa", "summa_new", "COLUMN"

3 番目のパラメーターは、列の名前が変更されていることを示します。

トリガー

引き金は通常の手順ですが、ユーザーではなくイベントによって呼び出されます。 たとえば、イベントには、テーブルへの新しい行の挿入 (insert)、テーブル内のデータの更新 (update)、テーブルからのデータの削除 (delete) などがあります。

創造

CREATE TRIGGER trg_test_table_update ON test_table for UPDATE -- AS BEGIN の削除、挿入も可能 -- UPDATE END GO の場合は sql ステートメント

変化する

ALTER TRIGGER trg_test_table_update ON test_table for insert -- 削除、更新も可能 AS BEGIN -- 挿入の場合の SQL ステートメント END GO

除去

DROP TRIGGER trg_test_table_update

有効化/無効化

--disable DISABLE TRIGGER trg_test_table_update ON test_table; --enable ENABLE TRIGGER trg_test_table_update ON test_table;

トリガーについては、記事「Transact-SQL でトリガーを作成する方法」で説明しました。

指数

これは、特定のフィールドでデータをソートすることにより、データ検索のパフォーマンスを向上させるデータベース オブジェクトです。 類推すると、たとえば、目次がない場合よりも、目次を使用して本の特定の情報を検索する方がはるかに簡単で高速です。 MS SQL Server DBMS には、次の種類のインデックスがあります。

クラスタ化されたインデックス- このインデックスを使用すると、テーブル内の行は指定されたキーでソートされます。 指定されたフィールド。 MS SQL Server のテーブルのこのタイプのインデックスは 1 つだけであり、MS SQL 2000 以降では、主キー (PRIMARY KEY) がテーブルで指定されると自動的に作成されます。

非クラスター化インデックス– このタイプのインデックスを使用する場合、インデックスには、行自体ではなく、指定されたフィールドでソートされた行インデックスが含まれます。これにより、必要な行がすばやく検索されます。 テーブルは、そのようなインデックスを複数持つことができます。

列ストア インデックス- このタイプのインデックスは、テーブル データを行の形式ではなく列の形式で格納するテクノロジに基づいており (名前の由来)、テーブルには 1 つの列ストア インデックスを含めることができます。

このタイプのインデックスを使用すると、テーブルはすぐに読み取り専用になります。つまり、テーブルのデータを追加または変更することはできなくなります。このため、インデックスをオフにし、データを追加または変更する必要があります。次に、インデックスをオンに戻します。

このようなインデックスは、ウェアハウスで使用される非常に大きなデータ セットに適しています。

グループ化を使用して集計関数を使用する操作は、そのようなインデックスが存在する場合、はるかに高速です (数倍!)。

列ストア インデックスは、Enterprise、Developer、Evaluation エディションの SQL Server 2012 以降で使用できます。

創造

クラスタ化されたインデックス

クラスター化されたインデックス idx_clus_one の作成 test_table(id) GO

ここで、CREATE CLUSTERED INDEX はクラスター化インデックスを作成するための命令、idx_clus_one はインデックスの名前、test_table(id) はそれぞれテーブルと並べ替えのキー フィールドです。

非クラスター化インデックス

CREATE INDEX idx_no_clus ON test_table(summa) GO

列ストア インデックス

CREATE columnstore INDEX idx_columnstore ON test_table(date_create) GO

シャットダウン

--disable ALTER INDEX idx_no_clus ON test_table DISABLE --enable、再構築 ALTER INDEX idx_no_clus ON test_table REBUILD

除去

DROP INDEX idx_no_clus ON test_table GO

カーソル

カーソル -これは、主にプロシージャとトリガーで使用される一種のデータ型です。 これは通常のデータセットです。 クエリ結果。

例 (すべてプロシージャー・コードにあります)

変数の宣言 DECLARE @id BIGINT DECLARE @fio VARCHAR(100) DECLARE @summa FLOAT -- カーソルの宣言 DECLARE test_cur CURSOR FOR SELECT id, fio, summa FROM test_table -- カーソルを開く OPEN test_cur -- カーソルの最初の行を読み取る-- そしてそれらを変数 FETCH NEXT FROM test_cur INTO @id、@fio、@summa に書き込みます -- カーソル内の行がなくなるまでループを実行します WHILE @@FETCH_STATUS = 0 BEGIN -- それぞれに対して SQL 命令を実行できますループの反復 -- .................SQL 文 ......... -- 次の行を読むカーソル FETCH NEXT FROM test_cur INTO @id , @fio, @summa END -- カーソルを閉じる CLOSE test_cur DEALLOCATE test_cur

Transact-SQL でのカーソルとループの使用に関する資料で、カーソルについて詳しく説明しました。

DML クエリ

DML (データ操作言語) は、データを操作する SQL ステートメントです。 これらには、選択、更新、挿入、削除が含まれます。

選択する

SELECT * FROM test_table

アップデート

データの更新に使用

テーブル内のすべての行が更新されます UPDATE test_table SET summa=500 -- ID が 10 より大きい行のみが更新されます UPDATE test_table SET summa=100 WHERE id > 10

入れる

データを追加する演算子

1行追加 INSERT INTO test_table (fio, summa, date_create, comment) VALUES ("フルネーム",100, "10/26/2014", "test entry") --クエリに基づく一括追加 INSERT INTO test_table SELECT fio, summa、date_create、comment FROM test_table

消去

この演算子を使用すると、データを削除できます。

テーブル全体をクリアする DELETE test_table -- 条件に一致する行のみを削除する DELETE test_table WHERE summa > 100

以上で、ガイドは終了です。 彼が何らかの形であなたを助けたことを願っています。 幸運を!

構造化照会言語 (構造化照会言語) または SQL- 準リレーショナル データベースで使用する宣言型プログラミング言語です。 SQL の元の機能の多くはタプル計算に引き継がれましたが、SQL への最近の拡張機能には、ますます多くのリレーショナル代数が含まれています。
SQL はもともと IBM によって作成されましたが、多くのベンダーが独自の方言を開発しています。 これは、1986 年に米国規格協会 (ANSI) によって、1987 年に ISO によって標準として採用されました。 SQL プログラミング言語標準では、ANSI は、SQL の正式な発音は「es cue el」であると述べています。 しかし、多くのデータベース スペシャリストは、言語の元の名前である Sequel を反映して、"スラング" の発音である "Sequel" を使用しましたが、IBM での商標と名前の競合により、後に変更されました。 プログラミング初心者向け。
SQL プログラミング言語 1992 年に改訂され、このバージョンは SQL-92 として知られています。 その後、1999年は再び改訂され、SQL: 1999 (AKA SQL3)になりました。 ダミーのためのプログラミング。 SQL 1999 は、以前は他のバージョンでサポートされていなかったオブジェクトをサポートしていますが、2001 年後半になって初めて、少数のデータベース管理システムのみが SQL 実装をサポートしました: 1999.
SQL は ANSI および ISO として定義されていますが、多くのバリエーションと拡張機能があり、そのほとんどは独自の特徴を持っています。たとえば、Oracle 社の「PL/SQL」実装や、「Transact-SQL」と呼ばれる Sybase および Microsoft の実装などです。ユーザーを混乱させる可能性があります. プログラミングの基本. また、商用の実装では、日付や時刻などのデータ型など、標準の主要な機能のサポートを省略し、独自の機能を優先することも珍しくありません。 その結果、ANSI C や ANSI Fortran は通常、大きな構造上の変更なしにプラットフォームからプラットフォームへ移植できますが、SQL プログラミング言語のクエリは、大幅な変更なしに異なるデータベース システム間で移植できることはめったにありません。 データベース分野のほとんどの人は、この相互運用性の欠如は、各開発者に独自のデータベース管理システムを提供し、顧客を特定のデータベースに結び付けるために意図的に行われていると考えています。
名前が示すように、SQL プログラミング言語は特定の限定された目的、つまりリレーショナル データベースに含まれるデータのクエリを実行するために設計されています。 そのため、C や BASIC などの手続き型言語ではなく、データ サンプルを作成するためのプログラミング言語命令のセットであり、はるかに広い範囲の問題を解決するように設計されています。 「PL/SQL」などの言語拡張機能は、SQL の利点を維持しながら SQL に手続き要素を追加することで、この制限に対処するように設計されています。 もう 1 つのアプローチは、SQL クエリに手続き型プログラミング言語コマンドを組み込み、データベースと対話できるようにすることです。 たとえば、Oracle などはデータベースで Java 言語をサポートしていますが、PostgreSQL では関数を Perl、Tcl、または C で記述できます。
SQL ジョークの 1 つ: 「SQL は構造化されているわけでも言語でもありません。」 冗談の要点は、SQL はチューリング言語ではないということです。 .

Tから*を選択
C1 C2
1 a
2 b
C1 C2
1 a
2 b
TからC1を選択
C1
1
2
C1 C2
1 a
2 b
C1=1 の T から * を選択
C1 C2
1 a

テーブル T を指定すると、Select * from T クエリは、テーブル内のすべての行のすべての要素を表示します。
同じテーブルから Select C1 from T クエリを実行すると、テーブル内のすべての行の列 C1 の要素が表示されます。
同じテーブルからクエリ Select * from T where C1=1 を実行すると、列 C1 の値が「1」であるすべての行のすべての要素が表示されます。

SQL キーワード

SQL ワードはいくつかのグループに分けられます。

最初のものは データ操作言語または DML(データ管理言語)。 DML は、データベースのクエリ、データの追加、更新、および削除に使用される言語のサブセットです。

  • SELECT は、最も一般的に使用される DML コマンドの 1 つであり、ユーザーは目的の結果の説明としてクエリをセットとして指定できます。 クエリは、結果の配置方法を指定しません。クエリをデータベースで実行できる形式に変換するのは、データベース システム、より具体的にはクエリ オプティマイザの仕事です。
  • INSERT は、行 (正式なセット) を既存のテーブルに追加するために使用されます。
  • UPDATE は、既存のテーブル行のデータ値を変更するために使用されます。
  • DELETE は、テーブルから削除する既存の行を指定します。

他に 3 つのキーワードが DML グループに分類されると言えます。

  • BEGIN WORK (SQL の方言によっては START TRANSACTION) を使用して、完全に実行されるか、またはまったく実行されないデータベース トランザクションの開始をマークできます。
  • COMMIT は、操作がコミットされた後のすべてのデータ変更が保存されることを示します。
  • ROLLBACK は、「ロールバック」としてデータベースにコミットされた時点まで、最後のコミットまたはロールバック以降のすべてのデータ変更を破棄することを指定します。

COMMIT と ROLLBACK は、トランザクション制御やロックなどの領域で使用されます。 どちらの命令も、現在のすべてのトランザクション (一連のデータベース操作) を完了し、テーブル内のデータの変更に関するすべてのロックを解放します。 BEGIN WORK または同様のステートメントの有無は、SQL の特定の実装によって異なります。

キーワードの 2 番目のグループは、次のグループを参照します。 データ定義言語または DDL (データ定義言語). DDLユーザーが新しいテーブルと関連要素を定義できるようにします。 ほとんどの商用 SQL データベースには独自の DDL 拡張機能があり、標準ではないが通常は特定のシステムの重要な要素を制御できます。
DDL の要点は、create コマンドと delete コマンドです。

  • CREATE は、データベースに作成するオブジェクト (テーブルなど) を指定します。
  • DROP は、データベース内の既存のオブジェクトのうち、通常は永続的に削除されるものを指定します。
  • 一部のデータベース システムでは、ALTER コマンドもサポートされています。これにより、ユーザーは、既存のテーブルに列を追加するなど、さまざまな方法で既存のオブジェクトを変更できます。

SQL キーワードの 3 番目のグループは、 データ制御言語または DCL (データ制御言語). DCLデータ アクセス権を管理し、ユーザーがデータベース内のデータを表示または操作するためのアクセス権を持つユーザーを制御できるようにします。 ここには主なキーワードが 2 つあります。

記事 SQL for Beginners の無料翻訳を紹介します

データベースとやり取りする最新の Web アプリケーションはますます増えており、通常は言語を使用しています。 SQL. 幸いなことに、この言語は非常に簡単に習得できます。 この記事では、SQL クエリの基本とデータベースとのやり取りについて学習を開始します。 MySQL.

何が必要

SQL (Structured Query Language) は、次のようなリレーショナル データベース管理システム (DBMS) とやり取りするために設計された言語です。 MySQL、オラクル、SQLiteその他。 この記事の SQL クエリを実行するには、次のことを前提としています。 MySQL. 私も使用をお勧めします phpMyAdminのビジュアルディスプレイとして MySQL.

以下のアプリで簡単にインストールできます MySQLphpMyAdminあなたのコンピュータに:

  • Windows用WAMP
  • MAMP for Mac

コマンドラインでクエリを実行してみましょう。 ワンプすでにコンソールに含まれています MySQL. 為に MAMPこれを読む必要があるかもしれません。

CREATE DATABASE: データベースを作成します

私たちの最初のリクエストです。 使用するデータベースを作成します。

まず、コンソールを開きます MySQLしてログインします。 為に ワンプ、デフォルトでは、空のパスワードが使用されます。 為に MAMPパスワードは「root」でなければなりません。

ログイン後、このリクエストを入力してクリックします 入る:

CREATE DATABASE my_first_db;

コードの行末と同様に、クエリの末尾にセミコロン (;) が追加されていることに注意してください。

同様に、キーワード データベースの作成のすべてのキーワードと同様に、大文字と小文字は区別されません SQL. ただし、読みやすくするために大文字で記述します。

注: 文字セットと照合順序

デフォルトの文字セットと照合順序を設定する場合は、次のようなクエリを使用します。

CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

サポートされている文字セットと照合順序のリストは、次の場所にあります。 MySQL.

SHOW DATABASES: すべてのデータベースのリスト

このクエリは、すべてのデータベースを表示するために使用されます。

DROP DATABASE: データベースを削除します

このクエリを使用すると、既存のデータベースを削除できます。

このクエリは警告を出力しないため、注意してください。 データベースにテーブルとデータがある場合、クエリはそれらすべてを瞬時に削除します。

技術的な観点からは、これは要求ではありません。 これは「演算子」であり、末尾にセミコロンは必要ありません。

彼は報告する MySQLデフォルトのデータベースを選択し、セッションが終了するまでそれを操作する必要があることに注意してください。 これで、テーブルとこのデータベースの残りの部分を作成する準備が整いました。

データベース テーブルとは

データベース内のテーブルは、通常のテーブル、または構造化データを含む csv ファイルと考えることができます。

この例のように、テーブルには行名とデータ列があります。 SQL クエリを使用して、このテーブルを作成できます。 データの追加、読み取り、変更、および削除もできます。

CREATE TABLE: テーブルを作成します

このクエリを使用して、データベースにテーブルを作成できます。 残念ながらドキュメント MySQL新しいユーザーにはあまり友好的ではありません。 このクエリの構造は非常に複雑になる可能性がありますが、単純なものから始めます。

次のクエリは、2 つの列を持つテーブルを作成します。

CREATE TABLE ユーザー (ユーザー名 VARCHAR(20)、create_date DATE);

クエリを複数の行に記述して使用できることに注意してください タブリトリート用。

すべてが最初の行で簡単です。 という名前のテーブルを作成します ユーザー. さらに、括弧内に、表の列がコンマで区切られてリストされています。 各列名の後にデータ型が続きます。たとえば、 VARCHARまた 日にち.

VARCHAR(20)列が文字列型で、長さが 20 文字を超えないことを意味します。 日にち- 日付を「YYYY-MM-DD」の形式で格納するためのデータ型。

主キー

このクエリを実行する前に、列を挿入する必要があります ユーザーIDこれが PRIMARY KEY になります。 あまり詳しく説明しなくても、主キーは、テーブル内のデータの各行を認識する方法と考えることができます。

リクエストは次のようになります。

CREATE TABLE ユーザー (user_id INT AUTO_INCREMENT PRIMARY KEY、ユーザー名 VARCHAR(20)、create_date DATE);

INT- 32 ビット整数型 (数値)。 自動増加データの行が追加されるたびに、新しい ID 番号が自動的に生成されます。 必須ではありませんが、あると便利です。

この列は、最も一般的なデータ型ですが、整数ではない場合があります。 主キー列は必須ではありませんが、データベースのパフォーマンスとアーキテクチャを改善するために推奨されます。

クエリを実行しましょう:

SHOW TABLES: すべてのテーブルのリスト

このクエリを使用すると、現在のデータベース内のすべてのテーブルのリストを取得できます。

EXPLAIN: テーブル構造を表示

このクエリを使用して、既存のテーブルの構造を表示します。

その結果、フィールド (列) とそのプロパティが表示されます。

DROP TABLE: テーブルを削除します

お気に入り データベースをドロップ、このクエリは、警告なしでテーブルとその内容を削除します。

ALTER TABLE: テーブルの変更

このようなクエリは、テーブルに複数の変更を加える可能性があるため、複雑な構造になる場合があります。 簡単な例を見てみましょう。

読みやすさから SQL、このリクエストは説明不要です。

取り外しも同様に簡単です。 リクエストは慎重に使用してください。データは警告なしに削除されます。

フィールドを再度追加する Eメール、後で必要になります。

ALTER TABLE users ADD email VARCHAR(100) AFTER username;

列のプロパティを変更する必要がある場合がありますが、列を削除して再度作成する必要はありません。

このクエリは、フィールドの名前を変更します ユーザー名ユーザー名からそのタイプを変更します VARCHAR(20)上で VARCHAR(30). このような変更は、テーブル内のデータには影響しません。

INSERT: テーブルへのデータの追加

クエリを使用してテーブルにレコードを追加しましょう。

ご覧のように、 値()コンマで区切られた値のリストが含まれます。 文字列値は一重引用符で囲みます。 値は、テーブルの作成時に指定された順序になっている必要があります。

最初の値は ヌルフィールドに名前を付けた主キー ユーザーID. フィールドが次のようにマークされているため、すべて 自動増加 id は自動的に生成されます。 データの最初の行の ID は 1 です。次に追加される行は 2 です。以降も同様です。

代替構文

行を挿入する別の構文を次に示します。

今回使ったキーワードは 設定それ以外の . いくつかのことに注意してください。

  • 列は省略できます。 たとえば、フィールドに値を割り当てていません ユーザーIDとマークされているので 自動増加. タイプのフィールドに値を割り当てない場合 VARCHARの場合、デフォルトで空の文字列の値を取ります (テーブルの作成時に別のデフォルト値が設定されていない場合)。
  • 各列は名前で参照できます。 したがって、前の構文とは異なり、フィールドは任意の順序で配置できます。

代替構文番号 2

別の例を次に示します。

以前と同様に、フィールドは名前でアクセスでき、任意の順序で表示できます。

このクエリを使用して、最後に挿入された行の ID を取得します。

今()

関数の使用方法をお見せする時が来ました MySQLリクエストで。

関数 今()現在の日付を返します。 タイプのフィールドに現在の日付を自動的に追加するために使用します 日にち.

から警告を受けました。 MySQL、しかし、それはそれほど重要ではありません。 その理由は、機能 今()実際に時間情報を返します。

フィールドを作成しました 日付を作成します、時刻ではなく日付のみを含むことができるため、データは切り捨てられています。 それ以外の 今()使用できます CURDATE()、現在の日付のみを返しますが、同じ結果になります。

SELECT: テーブルからデータを取得する

明らかに、書き込んだデータは、読み取れるようになるまで役に立ちません。 リクエストが救助に来る 選択する.

クエリを使用する最も簡単な例 選択するテーブルからデータを読み取るには:

アスタリスク (*) は、テーブルのすべての列を取得することを意味します。 特定の列のみを取得する必要がある場合は、次のようなものを使用します。

多くの場合、すべての行ではなく、特定の行のみを取得する必要があります。 たとえば、ユーザーの電子メール アドレスを取得してみましょう。 ネッツ.

これは IF 条件に似ています。 WHERE を使用すると、クエリに条件を設定して、目的の結果を得ることができます。

等価条件では、プログラミングで使用する可能性のある二重記号 (==) ではなく、単一記号 (=) を使用します。

他の条件も使用できます。

また条件を組み合わせるために使用されます。

数値は引用符で囲む必要がないことに注意してください。

の()

複数の値との比較に使用されます。

お気に入り

検索パターンを設定できます。

パーセント記号 (%) は、パターンを指定するために使用されます。

ORDER BY条件

結果をソートして返す場合は、次の条件を使用します。

デフォルトの順序は ASC(上昇)。 追加 説明逆順にソートします。

リミット … オフセット …

返される行数を制限できます。

リミット 2最初の 2 行を取ります。 リミット 1 オフセット 2最初の 2 行の後に 1 行を取ります。 リミット 2、1は同じことを意味し、最初の数値のみがオフセットであり、2 番目の数値は行数を制限します。

UPDATE: テーブルのデータを更新します

このクエリは、テーブル内のデータを更新するために使用されます。

ほとんどの場合 と一緒に使用 どこ特定の行を更新します。 もし条件 どこ設定しない場合、変更はすべての行に適用されます。

変更できる行を制限するには、次を使用できます リミット.

DELETE: テーブルからデータを削除します

お気に入り 、このクエリは条件と組み合わせて使用​​されることがよくあります どこ.

テーブルの切り捨て

テーブルからコンテンツを削除するには、次のクエリを使用します。

ユーザーから削除します。

パフォーマンスを向上させるには、 .

フィールドカウンターもリセット 自動増加であるため、新しく追加された行の id は 1 になります。 これは発生せず、カウンターは成長し続けます。

文字列値と特殊な単語のエスケープ

文字列値

一部の文字はエスケープする必要があります。そうしないと、問題が発生する可能性があります。

バックスラッシュ (\) はエスケープに使用されます。

これは、セキュリティ上の理由から非常に重要です。 ユーザー データは、データベースに書き込む前にエスケープする必要があります。 で PHP mysql_real_escape_string() 関数または準備されたクエリを使用します。

特別な言葉

なぜなら、 MySQLのような多くの予約語 選択するまた 、矛盾を避けるために、列名とテーブル名を引用符で囲みます。 また、通常の引用符ではなく、バッククォート (`) を使用する必要があります。

何らかの理由で、という列を追加したいとしましょう :

結論

記事を読んでいただきありがとうございます。 私はあなたにその言語を見せることができたことを願っています SQL非常に機能的で習得が容易です。

私のブログサイトへようこそ。 今日は初心者向けのSQLクエリについてお話します。 一部のウェブマスターから質問があるかもしれません。 なぜSQLを学ぶのですか? 通り抜けられない?

これでは、専門的なインターネット プロジェクトを作成するには不十分であることが判明しました。 Sql は、データベースを操作し、WordPress 用のアプリケーションを作成するために使用されます。 クエリの使用方法を詳しく見てみましょう。

それは何ですか

Sql は構造化クエリ言語です。 データの種類を判断し、それらへのアクセスを提供し、短時間で情報を処理するために作成されました。 インターネット プロジェクトで見たいコンポーネントまたはいくつかの結果について説明します。

簡単に言えば、このプログラミング言語を使用すると、データベース内の情報を追加、変更、検索、および表示できます。 mysql の人気は、データベースに基づく動的なインターネット プロジェクトの作成に使用されるという事実によるものです。 したがって、機能的なブログを開発するには、この言語を学ぶ必要があります。

できること

SQL 言語では、次のことが可能です。

  • テーブルを作成します。
  • 異なるデータの受信と保存を変更します。
  • 情報をブロックに結合します。
  • データを保護します。
  • アクセスでリクエストを作成します。

重要! SQL を扱ったので、複雑な WordPress 用のアプリケーションを作成できます。

どんな構造

データベースは、Excel ファイルとして表すことができるテーブルで構成されています。

彼女には、名前、列、および情報を含む行があります。 このようなテーブルは、SQL クエリを使用して作成できます。

知っておくべきこと


SQLを学ぶときのポイント

前述のように、クエリは、新しい情報を処理し、テーブルで構成されるデータベースに入力するために使用されます。 各行は個別のエントリです。 それでは、データベースを作成しましょう。 これを行うには、次のコマンドを記述します。

データベース「bazaname」を作成します

引用符で囲んで、データベースの名前をラテン語で書きます。 彼女にとって意味のある名前を考えてみてください。 「111」や「www」などのデータベースを作成しないでください。

データベースを作成したら、次をインストールします。

セット名「utf-8」

これは、サイトのコンテンツが正しく表示されるために必要です。

次に、テーブルを作成します。

CREATE TABLE 'バザネーム' . 'テーブル' (

ID INT(8) NOT NULL AUTO_INCREMENT プライマリ キー、

ログ VARCHAR(10)、

VARCHAR(10) を渡します。

日付 DATE

2 行目には、3 つの属性を記述しました。 それらが何を意味するか見てみましょう:

  • 属性 NOT NULL は、セルが空にならないことを意味します (フィールドは必須です)。
  • AUTO_INCREMENT の値はオートコンプリートです。
  • PRIMARY KEY は主キーです。

情報の追加方法

作成したテーブルのフィールドに値を入力するには、INSERT ステートメントを使用します。 次のコード行を記述します。

INSERT INTO 'テーブル'

(ログイン、パス、日付) 値

(「ヴァーサ」、「87654321」、「2017-06-21 18:38:44」);

括弧内に列の名前を示し、次の値を示します。

重要! 列名と値の順序に従ってください。

情報の更新方法

これには、UPDATE コマンドが使用されます。 特定のユーザーのパスワードを変更する方法を見てみましょう。 次のコード行を記述します。

UPDATE 'テーブル' SET pass = '12345678' WHERE id = '1'

パスワードを「12345678」に変更します。 「id」=1の行で変更が発生します。 WHERE コマンドを記述しないと、特定の行ではなく、すべての行が変更されます。

本を買うことをお勧めします ダミーの SQL "。 その助けを借りて、専門的にデータベースを段階的に操作することができます。 すべての情報は、単純なものから複雑なものまでの原則に基づいて構築されており、好評を博しています。

エントリを削除する方法

何か間違ったことを書いた場合は、DELETE コマンドで修正してください。 UPDATE と同じように機能します。 次のコードを書きます。

DELETE FROM 'テーブル' WHERE id = '1'

情報サンプリング

SELECT コマンドは、データベースから値を取得するために使用されます。 次のコードを書きます。

SELECT * FROM 'テーブル' WHERE ID = '1'

この例では、テーブルで使用可能なすべてのフィールドを選択します。 これは、コマンドにアスタリスク「*」を書き込むと発生します。 サンプル値を選択する必要がある場合は、次のように記述します。

ログを選択し、FROM テーブル WHERE id = '1' を渡します

データベースを操作する機能だけでは不十分であることに注意してください。 本格的なインターネット プロジェクトを作成するには、データベースからページにデータを追加する方法を学ぶ必要があります。 これを行うには、php Web プログラミング言語に慣れてください。 これはあなたを助けるでしょう ミハイル・ルサコフのクールなコース .


テーブルの削除

DROP 要求で発生します。 これを行うには、次の行を記述します。

DROP TABLE テーブル;

特定の条件に従ってテーブルからレコードを出力する

次のコードを検討してください。

SELECT ID、国、都市 FROM テーブル WHERE 人>150000000

人口が 1 億 5000 万人を超える国のレコードが表示されます。

協会

Join を使用して、複数のテーブルを一緒にリンクすることができます。 このビデオでその仕組みをご覧ください。

PHP と MySQL

繰り返しますが、インターネット プロジェクトを作成する際の要求は一般的なものであることを強調したいと思います。 それらを PHP ドキュメントで使用するには、次のアクションのアルゴリズムに従います。

  • mysql_connect() コマンドを使用してデータベースに接続します。
  • mysql_select_db() を使用して、目的のデータベースを選択します。
  • mysql_fetch_array(); でクエリを処理します。
  • mysql_close() コマンドで接続を閉じます。

重要! データベースの操作は難しくありません。 主なことは、リクエストを正しく書くことです。

初心者のウェブマスターは考えるでしょう。 そして、このトピックについて何を読むべきですか? マーティン・グレイバーの本をお勧めしたい」 ただの人間のための SQL "。 初心者がすべてを理解できるように書かれています。 参考書としてご利用ください。

しかし、これは理論です。 実際にはどのように機能しますか? 実際、インターネット プロジェクトを作成するだけでなく、Google と Yandex のトップに持ち込む必要があります。 ビデオ コースは、この問題を解決するのに役立ちます」 サイトの作成と宣伝 ».


ビデオ指導

まだ質問がありますか? オンライン ビデオをもっと見る。

結論

そのため、SQL クエリの記述を扱うことは、見かけほど難しくはありませんが、Web マスターはこれを行う必要があります。 上記のビデオコースはこれに役立ちます。 申し込む 私のVKontakteグループ 新しい興味深い情報を最初に知ることができます。