SQL道場

この記事は約6分で読めます。
スポンサーリンク

SQLとは

SQLとは「Structured Query Language」の略で「構造化問い合わせ言語」という意味です。SQLは、米国の米国の米国規格協会(ANSI)と国際標準化機構(ISO)で、リレーショナルデータベースの標準言語であることが認められています。

SQLにはデータ定義機能、データ操作機能、データ制御の3つの機能があります。

DDL
Data Definition Language
データ定義命令
データベース、表、ユーザー等の作成、変更、削除を行うCREATE、ALTER、DROPなど
DML
Data Manupilation Language
データ操作命令
データの検索、挿入、更新、削除を行うSELECT、INSERT、UPDATE、DELETEなど
DCL
Data Control Language
データ制御文
データの変更を確定、取り消すためのコマンド COMMIT、ROLLBACKなど

SQLの記述について

予約後の扱いについて

DMLの「SELECT」、「FROM」、「WHERE」、「INSERT」、「UPDATE」、「DELETE」など、DDLの「CREATE TABLE」、「DROP TABLE」命令、DCLの「GRANT」、「REVOKE」命令などの単語は予約語です。

予約語は表名(テーブル名)、列名(カラム名)などとして使用できません。しかし、どうしても予約語を表名や列名として使用した場合は、予約語を[]で囲んで指定します。

SELECT 
    [INSERT],
    [UPDATE]
FROM [UPDATE]
;

すなりん
すなりん

システム開発の現場では、予約語を表名、列名などとして使用することは紛らわしく、システムトラブルの温床となるため使用することはありません。

大文字と小文字の区別

SQL文では大文字と小文字は区別していません。以下のSQLはいずれも同じ結果が返ってきます。

SELECT * FROM COMMON;
SELECT * FROM common;
SELECT * FROM Common;

ただし、データベース製品によってはオブジェクト名(テーブルなど)は大文字と小文字を区別されることがあります。また、データベース内の文字列データは大文字と小文字を区別されます。ただし、これもデータベース製品や設定などによって区別されないこともあります。

SELECT * FROM COMMON WHERE NAME = 'parts';
SELECT * FROM COMMON WHERE NAME = 'Parts';

空白文字

空白文字とは半角スペース、タブ、改行などです。

SQL文内では空白文字が連続した場合でも1つの空白文字として扱われます。長いSQL文を記述する場合は、改行や空白を入れて整形すると読みやすくなります。

全角スペースは空白文字ではありません。

以下のSQLはいずれも同じ結果が返ってきます。

SELECT * FROM COMMON WHERE NUMBER = 1;
SELECT *     FROM    COMMON    WHERE    NUMBER = 1;
SELECT 
      *     
FROM COMMON    
WHERE NUMBER = 1;

コメントの記述

1行のコメントを記述する場合は「–」(マイナス記号を2つ連続)に続けて記述します。

複数行のコメントを記述する場合は、コメント文を「/*」(開始)と「*/」(終了)で囲みます。SQL文中であっても「/*」「*/」で囲みます。

1行コメント行

--SELECT * FROM COMMON WHERE NUMBER = 1;
SELECT *     FROM    COMMON    WHERE    NUMBER = 1;
SELECT 
      *     
FROM COMMON    
WHERE NUMBER = 1;

複数行コメント行

/*
SELECT 
      NUMBER,
      MAKER,
      ID,
      NAME
FROM COMMON    
WHERE NUMBER = 1
;
*/

文中コメント行

SELECT 
      NUMBER,
      /* MAKER,
      ID,
      NAME */
FROM COMMON    
WHERE NUMBER = 1
;

SQL文末のカンマ要否

MySQL、Oracle、PostgreSQL、SQL ServerともSQL文の入力の最後に「;」つけます。DB2は「ステートメント終了文字」の指定として「;」(セミコロン)または「@」などを指定しますがデフォルトでは「;」でプロシージャの終わりが「@」。

AccessはSQL文末に「;」をつけません。

SQLServerではコマンド入力の場合は改行して「GO」があればSQL文のおわりとみなされます。また、SQL文をスクリプトとして記述しない場合も「;」は不要です。SQLLiteをSQLLiteManagerから使う場合は、SQL文の入力の最後には「;」をつけてもつけなくてもどうちらもで構いません。

SQL基本操作

テーブルからデータ(レコード)を抽出する基本的なやり方

条件にマッチするレコードの検索方法

テーブルとテーブルを結合する方法

RDBは複数のテーブルを作成しそれぞれのキー同士を結合してデータを抽出するのが基本となります。テーブル同士を結合して抽出する方法を解説しています。

行を並び替え(ソート)して抽出する方法

データを登録する

データ更新する

データを削除する

お手軽テーブルバックアップ方法

テーブルを参照する必要がない関数やシステム日付を取得する場合(仮想表)

Oracle MySQL SQLServer

関数テストやDB日付の取得等、実テーブル参照をする必要がない場合は仮想表を使います。

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