MySQLデータベース

  1. MySQLとは


    1. MySQLとは

      MySQlは、サーバークライアント型のリレーショナル(関係)データベースです。個人利用の場合、無料で利用できます。Windows、Linuxなど多くのプラットフォームで利用できます。

    2. 関係モデルとは

      関係モデルは、汎用的なデータベースの基本モデルです。論理的には、表処理(Excell)の表を巨大にしたような論理構造をもちます。データは二次記憶に展開されます。

  2. インストール


    1. ファイルの入手

      mysql-3.23.55-win.zip を取得し、解答します。これで、setupが可能になります。インストール先は、mysqlフォルダが標準で、これ以外に配置する場合、\winnt\my.ini ファイルへの設定が必要です。

    2. サーバーの起動

      サーバーとクライアントを1台のマシンで実行できます。mysql.bin にある mysqld がサーバー(デーモン)です。コンソールから次のコマンドを、サーバーにおくり起動します。
       >mysqld --standalone
      あるいは、winmysqladmin.exeを実行します。最初の実行の場合、利用者名とパスワードの入力が求められます。コマンドバーに信号機のロゴが現れ、緑のランプが点灯すると、起動しています。

    3. 終了

      終了するには、別のコンソールから
       >mysqladmin -p shutdown
      を実行します。-pはパスワードを指定することを意味します。サーバーからパスワードんpプロンプトがあります。
       あるいは、信号機のロゴを右クリックし、StopTheServiceを実行します。

    4. クライアント

       クライアントは,匿名ユーザにパスワードが設定されていない場合、
       >musql -u 利用者名 -p
      で起動し,サーバーに接続します。パスワードの入力が求められます。ログインできるとプロンプトが
       mysql>
      に変わります。パスワードが設定されている場合
       利用者名、パスワードが不明の場合、システムフォルダ my.ini を削除すると、新規の設定ができます。

  3. SQL


    1. SQL

       SQLは標準のデータベース操作言語で、多くのデータベースで同じ書式でデータベースを操作できます。複数の表に跨った検索や、一括データ更新などが可能です。

    2. ネットワーク

       mySQLはインストールしたホストのコマンドで利用できますが、ネットワークを経由してアクセスすることもできます。標準では、TCP/IPのポート3306 を利用します。直接ソケットを利用して接続するのでなく、接続用のドライバが jar(アーカイブ) として用意されています。これをりようすると、SQLコマンドの文字列をSQLサーバーに送ることにより、データベースのアクセスが可能になります。

  4. MySQLのコマンド


    1. MySQのLコマンド

      接続や終了、結果のファイル出力など、標準のデータベース操作言語であるSQLでは定義されていないコマンドがMySQLコマンドです。

      1. ?(help)
        ヘルプコマンドで、利用可能なコマンドが表示されます。

      2. exit
        クライアントを終了する
      3. use <データベース名>
        データベース名を指定しない場合に利用するデータベースを指定します。

      4. status;
        現在のサーバーの状態が表示されます。最後に ; が必要です。

    2. SQLコマンド


      1. show databases;
        データベースの一覧を表示します。

      2. show tables from <データベース名>
        データベース名のテーブル名(関係モデル)を一覧します。

      3. use <データベース名>
        データベースを選択します。

      4. show fields from <テーブル名>;
        テーブル内の項目(field)を表示します。選択している場合、from以下は不要です。

      5. select <項目名> from <テーブル名> <条件>;
        条件を満たすテーブルの項目名のデータを表示します。<条件>を指定しないとすべてのデータを表示します。<項目名>を * にすると、すべての項目名について表示します。

        1. 条件指定
          条件は、where句を用います。
           select Price,Title From Books where Price <=2000
          は、Booksテーブルから、Priceが2000以下のデータを探し、PriceとTitleを表示します。関係演算子は、C言語と異なり、等しい場合 =、等しくない場合 <> を利用します。
           文字列定数は ' で囲みます。
          複数の関係演算を and、or、not、で論理演算することもできます。

        2. パターン検索
          条件指定をするとき、先頭に like 付記すると、ワールドカード文字が利用できます。 % で0個以上の文字、_ で単一の文字を指定できます。 例えば、like 'a%' は、aで始まる任意の文字を意味します。

        3. 複合選択
          where句の中で、select 操作を行うこともできます。

          select * from books where books.PublisherID=
            (select publisherID from publishers where name='出版社名')

          booksには、出版社の番号(PublisherID)しか記録されていません。そこで、publishers から、出版社名に対応するPublisherIDを取り出し、この値で出版社の books データを検索します。
           このように、SQLでは複数の関係にまたがった検索が可能です。

  5. データベース作成


    1. 利用者

      root ユーザで作成可能です。
    2. データベースの作成

      データベースを作成します。
          create database <データベース名>

    3. 表の作成

      テーブル名とその構成を定義します。構成は、
       項目名 データ型 
      の並びです。
      create table <テーブル名> <テーブル定義>

      1. データ型
        利用できるデータ型を示します。bglobで画像データも扱うことができます。

        int        4バイト整数
        smallint     2バイト整数
        numeric(m,n)  合計m桁、小数部n桁の固定少数点数
        float(n)      n桁の浮動小数点数
        char(n)      n桁の文字
        varchar(n)    最大n桁の文字
        date        日付
        time        時刻
        bglob       バイナリ型の大きなデータ
        clob        文字型の大きなデータ


      2. CREATE TABLE address_book (
        -> customers_id int(5) DEFAULT '0' NOT NULL,
        -> address_book_id int(5) DEFAULT '1' NOT NULL,
        -> entry_gender char(1) NOT NULL,
        -> entry_company varchar(32),
        ......
        -> entry_postcode varchar(10) NOT NULL,
        -> entry_city varchar(32) NOT NULL,
        -> entry_state varchar(32),
        -> PRIMARY KEY (address_book_id, customers_id)
        -> );

    4. テーブルの変更

      テーブルを変更します。
          alter table <テーブル名> <変更指定>

      変更指定
      add [column] create_definition [first | after カラム名 ]
      or add [column] (create_definition, create_definition,...)
      or add index [インデックス名] (index_col_name,...)
      or add primary key (index_col_name,...)
      or add unique [インデックス名] (index_col_name,...)
      or add fulltext [インデックス名] (index_col_name,...)
      or add [constraint symbol] foreign key インデックス名 (index_col_name,...)
      [reference_definition]

      or alter [column] カラム名 {set default literal | drop default}
      or change [column] 古いカラム名 create_definition [first | after 新しいカラム名]
      or modify [column] create_definition [first | after カラム名]
      or drop [column] カラム名
      or drop primary key
      or drop index インデックス名
      or rename [to] 新しいテーブル名
      or order by col

    5. 挿入

      insert into <テーブル名> values <項目名=値>
      テーブルにデータを追加します。文字列は ' ' のように ' で括ります。

    6. 更新

      update <テーブル名> set <項目名>=<値> <条件>
      テーブルの<条件>を満たすデータを更新します。

      update Books set Price = price*0.9 where TiTle not like '%htm%'
      これは、htmを含まないTitleの本のPriceを、1割引にします。

    7. データ削除

      delete from <テーブル名> <条件>
      テーブル名で、条件を満たすデータを削除します。

    8. デーブル削除

      drop table <テーブル名>
      テーブルを削除します。

    9. データベース削除

      drop databese <データベース名>
      データベースを削除します。

  6. 利用者管理用SQLコマンド


    1. 接続

          >mysql -u <利用者名> -p <パスワード>
      ユーザ名とパスワードを指定して、データベースmysrlに接続します。

    2. 認可

      grant <権限> on <テーブル名> to <利用者名> identified by <パスワード>
      テーブルにアクセスできる利用者を指定できます。利用者名は 名前@ホスト名 で指定します。内部の場合、ホスト名は localhost になります。すべての権限を与える場合、 all privileges とします。
       利用者は mysql データベースの user テーブル に記録されます。一覧や削除は、SQLコマンドでで実行できます。
       初期状態では、root と '' (匿名ユーザ:名前なし)がパスワードなしで定義されています。

      1. 権限
        DELETE:DELETE構文を実行できる権限。
        INSERT:INSERT構文を実行できる権限。
        SELECT:SELECT構文を実行できる権限。
        UPDATE:UPDATE構文を実行できる権限。
        INDEX:インデックスの作成と削除が行える権限。
        REFERENCES:テーブルのリファレンスが参照できる権限。
        USAGE:すべての権限がない。("no privileges"と同義)


      2. 通常の利用者の設定
        mysql> GRANT SELECT,INSERT,UPDATE,DELETE
            -> ON データベース名.*
            -> TO ユーザID@localhost
            -> IDENTIFIED BY 'パスワード';
        mysql> FLUSH PRIVILEGES;
        利用者にすべてのデータベースのすべての権限を与える
        mysql> grant all on *.* to <利用者> identified by '<パスワード>'

    3. 取り消し

      revoke <権限> on <テーブル> from <利用者>
      利用者の権限を無効にします。

    4. 有効化

      flush privileges
      権限コマンドを有効にする。grant、revokeの後に必ず実行します。

    5. パスワード

      set password for <利用者名>=password(<パスワード>)
      利用者名にパスワードを設定します。