コマンド プロンプトからMySQLを操作する

MySQLを利用する

ただし、CドライブのルートにMySQLをインストールしたとする(c:\mysql)
  1. MySQLサービスの開始(MySQLサーバの開始)
    コマンドプロンプトを起動し、
    cd c:\mysql\bin
    mysqld
  2. MySQLモニタを起動
    コマンドプロンプトを閉じないで、再度コマンドプロンプトを起動
    cd c:\mysql\bin
    mysql
  3. MySQLサーバをWindows起動時に自動実行するには
    PCを起動(再起動)し、コマンドプロンプト
    cd c:\mysql\bin
    mysqld-nt --install
  4. cd c:\mysql\binとしないでMySQLモニタを起動するには
    コントロールパネル→システム→詳細設定→環境変数→下の方のリストのPathを選択
    →「編集」ボタン→変数値の文末に「;c:\mysql\bin」を追記(元の文を消さないように!
    PCを再起動して、コマンドプロンプト→mysqlでMySQLモニタが起動すればOK
  5. rootユーザとしてMySQLモニタを起動
    コマンドプロンプト→mysql -u root
  6. ユーザやパスワードの管理データベース「MySQL」の表示(rootユーザでのみ表示される)
    データベースの表示:「MySQL」も表示される
    show databases;
    データベース「MySQL」を使う
    use mysql;
    userというテーブルからHostとUserというフィールドの内容を書き出す
    select Host,User from user;
  7. 匿名ユーザの削除
    delete from user where User='';  シングルクォート2つ
  8. Hostがbuildであるものの削除
    delete from user where Host='build';
  9. rootユーザにパスワードを設定する(xxxxxxは任意のパスワード)
    set password for root=password('xxxxxx');
  10. パスワードを付けたMySQLモニタに入る
    mysql -u root -p
    xxxxxx

データ型

  1. 文字型
    CHAR(半角255文字まで)・・・CHAR(120)というように示す
    TEXT(半角65535文字まで)
  2. 数値型
      整数型
    • INT(数値の範囲-231から231
    • TINYINT(数値の範囲-27から27
  3. 日付・時刻型
  4. リスト型

クエリの構文

  1. データベースやテーブルをつくるCREATE文
    • データベースをつくる
      create database データベース名;
      データベースのリストを表示させるには
      show databases;
      データベースを指定する(普通MySQLモニタを起動したら最初にすること)
      use データベース名;
    • テーブルをつくる
      create table テーブル名 (フィールド名1 そのデータ型, フィールド名2 そのデータ型,…);
      テーブルのリストを表示する
      show tables;
      テーブルのフィールドを表示する
      show fields from テーブル名;
  2. テーブルの構造を修正するALTER文
    • フィールド名と属性を修正する(テーブル名と型を一度に修正可能)
      alter table テーブル名 change 旧フィールド名 新フィールド名 型;
    • フィールドの属性(型)だけを修正する
      alter table テーブル名 modify フィールド名 新しい型;
    • フィールドを追加する
      alter table テーブル名 add 追加するフィールド名 その属性;
  3. テーブルにデータ(レコード)を追加するINSERT文
    • 新規レコードの追加(全フィールドのデータ入力する場合)
      insert into テーブル名 values (フィールド1の値, フィールド2の値,・・・);
    • 新規レコードの追加(必要なフィールドだけデータ入力する場合)
      insert into テーブル名 (フィールド名1, フィールド名2,・・・) values (フィールド名1の値, フィールド名2の値,・・・);
  4. テーブルからレコードを選び出すSELECT文(データを検索・表示)
    • 登録した全件(全フィールド・全レコード)を表示する
      select * from テーブル名;
    • フィールドを指定して表示する
      select フィールド名1,フィールド名2,・・・ from テーブル名;
    • 条件を指定して選択・表示する
      select 表示対象フィールド from テーブル名 where 条件式;
      • select * from テーブル名 where フィールド名 = xxxx;
      • select フィールド名1,フィールド名2,・・・ from テーブル名 where フィールド名 >= xxxx;
      • select * from テーブル名 where フィールド名 <> xxxx;  <>は等しくない
    • 部分的に条件に合致するものを選択・表示
      • フィールドからaで始まるものを検索 select * from テーブル名 where フィールド名 like 'a%';
        like '%a'   ←aで終わるものを検索
        like 'a%'   ←aで始まるものを検索
        like '%a%'   ←aを含むものを検索
      • 複合条件で検索
        例1)フィールド名1でaで終わり、かつフィールド名2でxxxx以上のものを検索し、表示する
        select * from テーブル名 where フィールド名1 like '%a' and フィールド名2 >=xxxx;
        例2)フィールド名1でaで終わるか、またはフィールド名2でxxxx以上のものを検索し、表示する
        select * from テーブル名 where フィールド名1 like '%a' or フィールド名2 >=xxxx;
    • 選択結果を並び替えて表示
      • 指定したフィールドによる昇順(1,2,3・・・、a,b,c・・・順)の並び替え
        select 表示したいフィールド from テーブル名 order by フィールド名;
        select 表示したいフィールド from テーブル名 order by フィールド名 asc;
      • 指定したフィールドによる降順(10,9,8・・・、z,y,x・・・順)の並び替え
        select 表示したいフィールド from テーブル名 order by フィールド名 desc;
    • 指定した数nだけレコードを表示する
      select 表示したいフィールド from テーブル名 limit 表示するレコードの数;
    • フィールド間の計算
      • フィールド1をフィールド2で割り、(降順)上位10位までを表示する
        select * from テーブル名 order by フィールド名1/フィールド名2 desc limit10;
  5. テーブルの内容を修正するUPDATE文
    • レコードを修正する(条件に当てはまるレコードの特定のフィールドの値を訂正する)
      update テーブル名 set フィールド名=修正したい値 where 条件式;
    • 全レコードを修正する(条件式がない場合、一気にフィールドの値が修正される)
      update テーブル名 set フィールド名=修正したい値;
    • フィールド名1の値をフィールド名2の値で置き換える
      update テーブル名 set テーブル名1=テーブル名2;
    • 各レコード値を四則演算した結果に置き換える
      update テーブル名 set フィールド名=フィールド名*2+500;
  6. テーブルやデータベースを削除するDROP文(注意して使用すること
    • テーブルをレコードごと破棄(削除)する
      drop table テーブル名;
    • データベースごと削除する drop databese データベース名;
  7. レコードを削除するDELETE文
    • 特定のレコードを削除する
      delete from テーブル名 where 条件式;
    • 全レコードを削除する(dropとは違ってテーブルの定義は残る)
      delete from テーブル名;
  8. ファイルからデータを一括して取り込むLOAD DATA INFILE文
    load data infile "テキストファイル名" into table テーブル名;
    • テキストファイルはテーブルと同じフィールド構造を持ち、1レコードが1行になっており、
      各フィールドの区切り(デリミタ)はタブコードになっていること
    • 「c:\mysql\data\データベース名」の中にテキストファイルを保存してLOAD DATA INFILE文を実行
  9. レコードに連番を振る
    [手順] @連番を入れるフィールドを作る
       →Aテーブルにインデックスを付加する
       →B連番フィールドをAUTO_INCREMENT属性に変更する
    
    	[注意]レコードの挿入:insert文では連番フィールドにも仮に数値0を入れておく必要があります
    
    • たとえばrenbanというフィールドを作る
      alter table テーブル名 add renban int;
    • テーブルにインデックスを付加する
      alter table テーブル名 add index インデックス名 (renban);
    • 連番フィールドrenbanの属性をAUTO_INCREMENT属性に変更する
      alter table テーブル名 modify renban int auto_increment;

PHPからMySQLを操作する

PHPのMySQL関数

  1. MySQLに接続する
    mysql_connect('ホスト名','ユーザ名','パスワード');
  2. データベースを指定する
    mysql_select_db('データベース名');
  3. 「クエリ文字列」を文字列として実行
    mysql_query("クエリ文字列");
  4. $変数(実行したクエリの結果を格納)に含まれる行数を返す
    mysql_num_rows($変数);
  5. $変数(実行したクエリの結果を格納)の内容を連想配列として返す
    mysql_fetch_array($変数);
  6. 実行した直近のMySQLクエリにエラーがあったとき、エラーメッセージを返す
    mysql_error();
  7. クエリを実行した結果、影響を受けたレコード数を返す
    mysql_affected_rows();

PHPからMySQLのセレクト文を実行する際のパターン

	<?php
	mysql_connect('ホスト名','ユーザ名','パスワード');
	mysql_select_db('データベース名');

	$sql = "MySQLクエリ文字列";
	$result = mysql_query($sql);
	$rows = mysql_num_rows($result);

	if($rows == 0){
		print "データがありません";
		exit;
	} else{
		while($row = mysql_fetch_array($result)){
		$変数1 = $row{"フィールド1"};
		$変数2 = $row{"フィールド2"};
		$変数3 = $row{"フィールド3"};
			¦
		}
	}
	?>

フォームから送られたデータをPHPを使って書き込むパターン

   <?php
   extract($_POST);  //method="get"で送信された場合、extract($_GET);
   mysql_connect('ホスト名','ユーザ名','パスワード');
   mysql_select_db('データベース名');
   
   $sql = "insert into テーブル名 values('$名前1', '$名前2', …, 0)";   
   mysql_query($sql);
   ?>
extract(連想配列);
インデックスキーを変数名にし、値を変数の値に展開します。
extract(連想配列,EXTRA_SKIP);とすると、上書きされません。
extract($_POST); ではPOSTで送られてきた
フォームの名前(name="名前1")を変数名($名前1)として値をその変数に格納する。
$名前1=$_POST["名前1"];$名前2=$_POST["名前2"];…と同じ結果。
0は連番フィールドが最後にある場合