1. ホーム
  2. SQL

SQL-初心者のためのベスト入門SQLクエリ I

2022-03-02 06:03:38
<パス

説明

初心者の方は、ネットでMysqlのインストールに関する記事を探してインストールし、navicatを使ってデータベースに接続し、後の例では基本的にmysqlデータベース管理システムを使用することをお勧めします。

II 前提条件を準備する

id、name、age、student information の列を持つ student テーブルを作成する必要があります。この例では、記事の長さを考慮して SQL コメントを省略しています。

テーブル構築文です。

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `info` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


テーブルの中のデータ。

INSERT INTO `springboot`. `student`(`id`, `name`, `age`, `info`) VALUES (1, 'youku1', 18, 'freshman');
INSERT INTO `springboot`. `student`(`id`, `name`, `age`, `info`) VALUES (2, 'youku2', 23, 'graduate');
INSERT INTO `springboot`. `student`(`id`, `name`, `age`, `info`) VALUES (3, 'jeff', 25, 'socialite');
INSERT INTO `springboot`. `student`(`id`, `name`, `age`, `info`) VALUES (4, 'smile', 17, 'senior');



III 基本検索

3.1 キーワードを選択する

sqlはいくつかのキーワードからなる文です。キーワードはデータベースの予約語であり、ユーザがテーブル名やフィールドなどとして使用することはできません。テーブルからのデータ検索では、データベーステーブルの情報を問い合わせるためにselectキーワードを冒頭で使用します。

3.2 単一のフィールドを取得する

例文です。

SELECT name FROM student 


クエリーの結果です。

youku1
youku2
jeff
smile


ステートメント分析。

selectはクエリ、nameはテーブルのフィールド、fromはどのテーブルから、studentはテーブルという意味で、これらを合わせると、クエリのフィールドはname、データはstudentというテーブルからということになります。

3.3 SQL文の注意点

一緒に実行される複数のsql文は終了記号(;)で区切られます。文を綴るとき、テーブルキーワードは大文字、テーブルフィールドとテーブル名は小文字を使うことをお勧めします。読みやすいようにsqlを複数行に分けることをお勧めします(記事の長さのせいではありません)。SQL言語も漢字ではなく英語のアルファベットで、見つけにくいシンボリックエラーが起こらないようにします。SQL文はデフォルトでケースインセンシティブ(非感受性)となっています。

3.4 複数のフィールドを取得する

例文です。

SELECT name,age FROM student;


ステートメントの結果。

youku1 18
youku2 23
jeff 25
smile 17


ステートメント分析。

テーブルstudentからフィールドName、ageを取得。複数のカラムはカンマ(,)で区切って取得。

3.5 すべてのフィールドを取得する

例文です。

SELECT * FROM student;


ステートメントの結果。

1 youku1 18 freshman
2 youku2 23 graduate
3 jeff 25 socialite
4 smile 17 seniors


ステートメント分析。

ワイルドカード (*) は、テーブルのすべてのカラムを返すことを示します。必要ない場合はワイルドカードを使用することは推奨されず、データベースのパフォーマンスに影響を与える可能性があります。

3.6 明確な

distinctは、取得した行が一意であり(重複を排除し)、列の先頭に置かれることを意味する。distinctというキーワードを使用すると、それに続くすべての列に適用される(この例のデータには重複する例はないので結果は不明)。

SELECT DISTINCT name, age FROM student;


ステートメントの結果。

youku1 18
youku2 23
jeff 25
smile 17


3.7 記事の数を制限する

アクセスおよびSQLサーバーを使用しています。

SELECT TOP 2 name FROM student


TOP 2は、最初の2行に限定して返すことを意味します。

postgresql、SQLite、mysql。

SELECT name FROM student LIMIT 2;


limit 2は、最初の2行のリターンを制限することを意味します。

DB2です。

SELECT name FROM student FETCH FIRST 2 ROWS ONLY


FETCH FIRST 2 ROWS ONLYは、最初の2行のデータのみを取得することを意味します。

ステートメントの結果

youku1
youku2


3.8 オフセット

SELECT name FROM student LIMIT 1 OFFSET 1;


ステートメント分析

は、クエリ列の名前が学生テーブルのものであることを示します。 制約 1、オフセット 1; つまり、学生テーブルのデータの 2 行目をクエリします。オフセットは、ジャンプまたはオフセットを示します。

mysqlとMariaDBを簡略化した形。

SELECT name FROM student LIMIT 1,2;


クエリフィールド名がstudentテーブルのものであることを示し、2つのエントリに制限され、1つずつオフセットされます。

ステートメントの結果。

youku2
jeff


IVソート検索

4.1 ORDER BY句について

SELECT name,age FROM student ORDER BY age


文の解析。

studentテーブルからフィールド名ageをカラムageでソートして取得します。デフォルトは昇順でORDER BY句は通常ステートメントの最後にあることに注意してください。

ステートメントの結果です。

smile 17
youku1 18
youku2 23
jeff 25


4.2 複数列の並べ替え

SELECT name,age FROM student ORDER BY age DESC, name ASC;


ステートメント分析。

クエリ名, 学生テーブルからの年齢, 年齢降順, 名前昇順でソート; キーワード DESC (descending) は降順、アルファベットデフォルト Z-A; ASC (ascending) は昇順、アルファベットデフォルト A-Z; 複数列の場合 DESC はカンマ (,) で区切って各列の後に指定、書かれていない場合デフォルト昇順.

ステートメントの結果です。

jeff 25
youku2 23
youku1 18
smile 17


4.3 位置による並べ替え

例文です。

SELECT name,age FROM student ORDER BY 2 DESC, 1 ASC;



位置によるクエリフィールドの位置、フィールド年齢が2、フィールド名が1;結果は4.2と同じです。

V フィルタリング検索

sql文のフィルタ条件を表すキーワードはWHEREで、テーブル名の後に使用します。

5.1 WHERE文の演算子

データベース管理システムによって、サポートされている演算子は若干異なるため、以下のより反復的な演算子は、使用するデータベース管理システムでサポートされている演算子に関する公式文書を参照する必要があります。

<テーブル 演算子 説明 = に相当する。 > より大きい < 未満 ! = とは一致しない <> とは一致しない >= 以上 <= 以下 !< 以下でないこと !> 以下でないこと 間 真ん中 IS NULL はNULL

5.2 シングル条件付きフィルタリング

SELECT * FROM student WHERE name = 'jeff';



ステートメント分析。

テーブル以外のフィールド、テーブル名、キーワードは2つのシングルクォート('')で囲まれており、入力したデータを保持していることに注意してください。

文の結果です。

3 jeff 25 socialite


5.3 多条件フィルタリング

AND句またはOR句を使用して多条件フィルタリングを行います。AND連結はフィルタリング条件がすべて真のデータであることを示し、OR連結はフィルタリング条件のいずれか1つにマッチすることを示します。

ANDの例です。

SELECT * FROM student WHERE age >= '18' AND age <= '23';



ステートメント分析。

学生の年齢が18歳以上、かつ学生の年齢が23歳未満であることを条件に、学生テーブルからすべてのフィールドを照会します。

ステートメントの結果

1 youku1 18 freshman
2 youku2 23 Graduate


ORの例です。

SELECT * FROM student WHERE age >= '18' OR age <= '23';



ステートメント分析。

学生の年齢が 18 以上の場合、または学生の年齢が 23 未満の場合、学生テーブルからすべてのフィールドを取得します。

ORとANDの例。

SELECT * FROM student WHERE age >= '18' AND (age <= '23' OR id >=2);



ステートメント分析。

OR と AND を使用する場合、フィルタ条件を指定してから括弧で囲む必要があります。データベース管理システムは順次実行されるため、括弧を使用しないとセマンティックエラーを引き起こしやすくなります;学生テーブルからすべてのフィールドを検索 フィルタ条件 年齢が18より大きく、かつ(年齢が23未満またはIDが2より大きい)

5.4 範囲指定クエリ

SELECT * FROM student WHERE age BETWEEN '18' And '23';



ステートメント分析

BETWEENは範囲クエリを示しており、studentテーブルのすべてのフィールドに、学生が18歳から23歳であるというフィルタ条件でのクエリを実行します。

ステートメントの結果

1 youku1 18 freshman
2 youku2 23 Graduate


5.5 Nullクエリ

SELECT * FROM student WHERE age IS NULL;



ステートメント分析。

Student age NULL というフィルタ条件を指定して、student テーブルからすべてのフィールドをクエリします。データベーステーブルには、デフォルトが NULL (ヌル) のデータは入力されませんが、もちろん指定した型の列に対してデフォルトを設定することはできます。

5.6 IN操作

SELECT * FROM student WHERE age IN (18,23,25);



ステートメント分析。

年齢18、23、25でフィルタリングしたstudentテーブルの全フィールドを問い合わせる。INは範囲問い合わせで、括弧で指定された任意の値にマッチし、ORと似ており、1つのINは複数のORと等価である。

文の結果です。

1 youku1 18 freshman
2 youku2 23 graduate
3 jeff 25 socialite


5.7 NOT演算子

SELECT * FROM student WHERE NOT age='25';



ステートメント分析。

NOT演算子表は否定的で、WHEREや<>などの関数に続くものです。

VI ワイルドカード検索

6.1 ワイルドカード入門

ワイルドカードは、マッチングパターンを構成する特別な文字列です。正規表現を使用したことがある場合、これはそれと似ています。ワイルドカードは、テキストを検索するためのキーワード「Like」の後に使用されます。

6.2 ワイルドカード %.

SELECT * FROM student WHERE name LIKE 'you%' ;



ステートメント分析。

フィルタ条件として、Student テーブルからすべてのフィールドをクエリします。 Name は、任意の文字の後に you で始まる文字列を続けたものにマッチします。

文の結果です。

1 youku1 18 freshman
2 youku2 23 Graduate


SELECT * FROM student WHERE name LIKE '%i%' ;



ステートメント分析。

生徒の名前の真ん中に一度だけiという文字があり、iの前後に任意の文字列が一致するというフィルタ条件付きで、生徒テーブルからすべての列を問い合わせる。

文の結果です。

4 smile 17 seniors


6.3 ワイルドカード

ワイルドカードの_は文字列のマッチを表します。Accessデータベースでは_ではなく、?

SELECT * FROM student WHERE name LIKE 'youku_' ;



ステートメント分析。

学生テーブルのすべてのカラムを問い合わせる。フィルタリングの基準は、学生名がパターンyoukuの後に任意の文字列が続くこと。

文の結果です。

1 youku1 18 freshman
2 youku2 23 Graduates


6.4 ワイルドカード []について

ワイルドカード[]は、指定した位置の文字にマッチすることを示します。内部に複数の文字を保持することができ、関係はorで、パターンマッチは1つの位置のみを占め、AccessとSQL SERVERでサポートされています。

VII フィールドの基本操作

7.1 フィールドスプライシング

SELECT concat('Hello there',name,'327 how are you feeling today') FROM student WHERE id = '1' ;



ステートメント分析。

concat関数は、複数の部分文字列を連結して1つの文字列にするものです。使い方はデータベース管理システムによって若干異なるので、公式ドキュメントを確認してください。
連結関数は、mysql; || postgresql; + Accessとsql serverで使用されています。

ステートメントの結果

Hello ah youku1327 how are you feeling today


7.2 空白文字列の削除

例文です。

SELECT RTRIM(' brother, full today ') FROM student WHERE id = '1' ;



ステートメント分析。

文字列の右側の空白文字を削除するRTRIM(STR)関数、文字列の両側の空白文字を削除するTRIM(STR)関数、文字列の左側の空白文字を削除するLTRIM(STR)関数です。

文の結果です。

      Brother, I'm full today


7.3 エイリアス

文例です。

SELECT name as student_name FROM student WHERE id = '1' ;



ステートメント分析。

エイリアスとは、フィールドやテーブルの別名を付ける機能です。複数テーブルの操作でフィールドが重複している場合に有効です。エイリアスはASキーワードを使用できます。これは省略可能ですが、通常は可読性を高めるために追加したほうがよいでしょう。

7.4 計算

<テーブル 演算子 説明 * 乗算 + 追加 - マイナス / ただし

例文です。

SELECT 2 * 8; 



ステートメントの結果。

16


VIII このチュートリアルのセット

このチュートリアルのセット
MYSQL入門(1)
MYSQL検索(2)
MYSQL検索(3)
MYSQLの挿入・更新・削除(4)
MYSQLの物(5)
MYSQLデータ型(6)
MYSQLテーブル構造操作(7)
MYSQLビュー(8)
MYSQLストアドプロシージャ(9)
MYSQLカーソルとトリガー (10)
MYSQLユーザー権限管理(11)
MYSQLlアーキテクチャ入門(12)
MYSQLのロック待ちとデッドロック (13)
MYSQLlでjsonを操作する(14)
MYSQLの実行計画(15)
MYSQLインデックス(16)