【SQL文入門】基本的な使い方まとめ

SQL文の基本的な使い方まとめについて紹介します。

【SQL文とは】よく使う構文一覧

機能 書式
SELECT文 カラムを取得 SELECT [カラム名] FROM [テーブル名]
INSERT文 カラムを追加 INSERT INTO [テーブル名] (カラム名1,カラム名2,‥) VALUES(要素Aに入れるデータ,要素Bに入れるデータ)
UPDATE文 カラムを更新・追加 UPDATE [テーブル名] SET [更新処理]
DELETE文 カラムを削除 DELETE FROM [テーブル名]
FROM文 テーブルを指定 FROM [テーブル名]
WEHRE文 テーブルデータの検索条件を指定 WHERE [検索条件]
ORDER BY ソート ORDER BY [ソートする要素名] [昇順・降順の指定]
BETWEEN WHERE文の検索条件で、「A~Bの間」を指定 WHERE [カラム名] BETWEEN [最小値] AND [最大値]
LIKE WHERE文の検索条件で「ワイルドカード」を指定 WHERE [カラム名] LIKE [ワイルドカード]
GROUP BY グループ化を行うために使用 GROUP BY [グループ化する要素名]
HAVING
DISTINCT
AND,OR,NOT 論理演算子
INNER JOIN テーブル同士の内部結合 SELECT [カラム名1, カラム名2, …] FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合の条件]
INNER JOIN テーブル同士の内部結合 SELECT [カラム名1, カラム名2, …] FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合の条件]
ツール
実行環境 rextester.com

【操作1】テーブルの作成、データの追加、要素の抽出

/* テーブルを作成 */
create table student(id int, class varchar(20), point int, rankId int);
 
/* テーブルにデータを追加 */
insert into student values(1, 'Archer', 90, 1);
insert into student values(2, 'Lancer', 75,2);
insert into student values(3, 'Saber', 60, 1);
insert into student values(4, 'Caster', 75, 2);
insert into student values(5, 'Asassin', 45, 3);
insert into student values(6, 'Berserker', 55, 3);
insert into student values(7, 'Ruler', 70, 1);

/* テーブルから全てのカラムを抽出 */
SELECT * FROM student;
SELECT * FROM rank; 


/* 抽出結果

    id  class   point   rankId
1   1   Archer  90  1
2   2   Lancer  75  2
3   3   Saber   60  1
4   4   Caster  75  2
5   5   Asassin 45  3
6   6   Berserker   55  3
7   7   Ruler   70  1
*/

/* テーブルstudentからカラム(class)を抽出 */
SELECT class FROM student;

/* 実行結果
    class
1   Archer
2   Lancer
3   Saber
4   Caster
5   Asassin
6   Berserker
7   Ruler
*/ 

/* テーブルstudentから複数のカラム(class、point)を抽出 */
SELECT class,point FROM student;

/*
    class   point
1   Archer  90
2   Lancer  75
3   Saber   60
4   Caster  75
5   Asassin 45
6   Berserker   55
7   Ruler   70
*/

内部結合は、それぞれのテーブルの指定したカラムの値が一致するものだけを結合します。
例えば「テーブル1からカラム1、カラム2を抽出し、結合の条件に従ってテーブル2から抽出したカラムとくっつけて、1つのテーブルにする」ことができます。
内部結合の場合、ベースとなるテーブルから、条件にマッチするレコードがないものは削除されます。

基本構文

SELECT [カラム名1, カラム名2, ...] FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合の条件] 

サンプルコード

/* テーブルを作成する */
create table student(id int, class varchar(20), point int, rankId int);
create table rank(rankId int, rankName varchar(20));
 
/* テーブルにデータを追加する */
insert into student values(1, 'Archer', 90, 1);
insert into student values(2, 'Lancer', 75,2);
insert into student values(3, 'Saber', 60, 1);
insert into student values(4, 'Caster', 75, 2);
insert into student values(5, 'Asassin', 45, 3);
insert into student values(6, 'Berserker', 55, 3);
insert into student values(7, 'Ruler', 70, 1);
 
/* テーブルにデータを追加する */
insert into rank values(1, 'RankA');
insert into rank values(2, 'RankB');
insert into rank values(3, 'RankC');

/* テーブルから全てのデータを抽出 */
SELECT * FROM student;
SELECT * FROM rank; 


/* 抽出結果

    id  class   point   rankId
1   1   Archer  90  1
2   2   Lancer  75  2
3   3   Saber   60  1
4   4   Caster  75  2
5   5   Asassin 45  3
6   6   Berserker   55  3
7   7   Ruler   70  1


    rankId  rankName
1   1   RankA
2   2   RankB
3   3   RankC
*/

/* テーブルstudentからclass要素を抽出 */
SELECT * FROM student
INNER JOIN rank ON student.rankId = rank.rankId;

/* 内部結合した結果
    id  class   point   rankId  rankId  rankName
1   1   Archer  90  1   1   RankA
2   2   Lancer  75  2   2   RankB
3   3   Saber   60  1   1   RankA
4   4   Caster  75  2   2   RankB
5   5   Asassin 45  3   3   RankC
6   6   Berserker   55  3   3   RankC
7   7   Ruler   70  1   1   RankA
*/ 
関連記事
MySQL入門 サンプル集
SQL/DB
技術雑記

コメント

タイトルとURLをコピーしました