SQL コマンド 一覧 検索、追加、更新、削除からバックアップ・リストアまで
  • facebookページ
  • twitterページ
  • 2019.09.05

    SQL コマンド 一覧 検索、追加、更新、削除からバックアップ・リストアまで

    よく使うSQL文と、コマンドラインから使うSQLユーティリティについてご紹介します。

    よく使うSQLコマンド

    各SQLコマンドは、DBMS(データベース管理システム)ごとに一部、差異があります。下記は、MySQLを使った場合のサンプルコードです。

    データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    select データ取得

    selectはデータを取得するSQLです。検索条件指定での絞り込み、ソート、グルーピングによる小計の出力等が可能です。

    • where 検索条件を指定
    • order by ソート条件を指定
    • group by グルーピング条件を指定
    • limit 1クエリの取得件数を指定
    • ofset データ取得の開始位置を指定

    insert データ追加

    insertはデータを追加する命令です。

    • ON DUPLICATE KEY UPDATE すでに同一プライマリキーのレコードが存在する場合、updateを実行
    • LOW_PRIORITY テーブルロックの優先順位を低くする
    • HIGH_PRIORITY テーブルロックの優先順位を高くする

    関連)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.5 INSERT 構文

    update データ更新

    updateはデータを更新する命令です。

    • where 更新するレコードを指定するための条件
    • order by ソート条件
    • limit 1度のクエリの最大件数

    関連)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.11 UPDATE 構文

    delete データ削除

    deleteはデータを削除する命令です。

    • where 削除するレコードの条件。

    where句には、select文と同様の結合(inner join、left joinなど)が使えます。

    管理者向けのSQLコマンド

    管理者向けのSQLコマンドは、DBMSによって大きくことなります。下記は、MySQLを前提としています。

    create table テーブル作成

    テーブルを構成するカラムとデータ型、プライマリキーなどを指定します。必要に応じて、いかの

    • CHARACTER SET  文字セット
    • COLLATE 照合順序
    • COMMENT テーブルに対する注釈
    • ENGINE データベースエンジン名

    関連)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.17 CREATE TABLE 構文

    truncate table テーブルを高速に空にする

    トランザクションログを作らずにデータを高速削除します。

    一般に、delete文で大量削除を行う場合は、処理速度が遅くなるため、メンテナンス目的で大量削除を行う場合はtruncateを使います。

    drop table テーブルを構造ごと削除

    • RESTRICT 何もしない。
    • CASCADE 何もしない。

    RESTRICTとCASCADEオプションは、postgresqlのSQLとの互換用に用意されています。

    analyze table オプティマイザ用にデータを分析

    • NO_WRITE_TO_BINLOG  ログ出力の抑制
    • LOCAL ログ出力の抑制

    merge データが存在すれば更新、存在しなければ追加

    mergeはoracleで利用可能なSQLコマンド。

    データが存在すればupdate、存在しなければinsertを行います。

    例えば、MySQLでは、mergeは使えませんが、代わりにinsert文にon duplicate key udpate を指定することで、同様の動作が可能です。

    参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.2.1 ANALYZE TABLE 構文

    optimize talbe テーブルの最適化

    データベース領域のデフラグと、テーブルの最適化(Analyze)を行います。

    断片化したデータを最適化して、空き容量を可能な限り空けるために使います。断片化が起こると、テーブルフルスキャン(全件検索)する検索で性能が落ちます。

    具体的には、テーブルデータと関連するインデックスのデータ領域を再編成します。

    参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.2.4 OPTIMIZE TABLE 構文

    通常は、自動的に実行されますが、即時実行したい場合に使います。

    なお、実行中はテーブルがロックされる点に注意。

    MySQLの場合は、データベース領域がInnoDBか、MyISAMかによって処理内容が異なります。

    ユーティリティコマンド

    コマンドラインから実行できる、データベース関連のユーティリティコマンドです。

    バックアップ

    DBMSごとにコマンド、仕様とも異なります。SQL Serverはbcp、Oracleはexp、MySQLはmysqldumpというコマンドが用意されています。

    例えばMySQLのmysqldumpの場合は、全テーブルまたは指定テーブルのデータをエクスポートする機能があります。

    フォーマットはSQLやCSV、JSONなどが指定可能で、zip形式で圧縮できるため、ストレージ領域を節約できます。

    リストアを考慮すると、バックアップ用にはSQL形式&zip圧縮形式が使い勝手が良いでしょう。

    エクスポートしたSQLには、テーブル作成用のcarete table文、データを挿入するinsert文、インデックス追加用のSQLが含まれます。

    リストア

    エクスポートしたデータをインポートするコマンド。DBMSごとにコマンド、仕様とも異なります。SQL Serverはbcp、Oracleはimp、MySQLはmysqldumpで出力したSQLをmysqlコマンドで実行することでリストアを行います。

    例えば、MySQLでは、mysqlの–sql_mode(SQL互換モード指定)で、OracleやSQL Server、DB2など他のDBMSと互換性のあるSQLをインポート可能です。

    SQLコマンドのまとめ

    ポテパンダの一言メモ

    SQLの基本コマンドは、select,insert,update,delete

    SQLの管理者向けコマンドはDBMSによって差異が大きい

    データベースのバックアップは、コマンドラインで実行可能なユーティリティコマンドが用意されている。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件