コマンド プロンプトからMySQLを操作する
MySQLを利用する
ただし、CドライブのルートにMySQLをインストールしたとする(c:\mysql)
- MySQLサービスの開始(MySQLサーバの開始)
コマンドプロンプトを起動し、
cd c:\mysql\bin
mysqld
- MySQLモニタを起動
コマンドプロンプトを閉じないで、再度コマンドプロンプトを起動
cd c:\mysql\bin
mysql
- MySQLサーバをWindows起動時に自動実行するには
PCを起動(再起動)し、コマンドプロンプト
cd c:\mysql\bin
mysqld-nt --install
- cd c:\mysql\binとしないでMySQLモニタを起動するには
コントロールパネル→システム→詳細設定→環境変数→下の方のリストのPathを選択
→「編集」ボタン→変数値の文末に「;c:\mysql\bin」を追記(元の文を消さないように!)
PCを再起動して、コマンドプロンプト→mysqlでMySQLモニタが起動すればOK
- rootユーザとしてMySQLモニタを起動
コマンドプロンプト→mysql -u root
- ユーザやパスワードの管理データベース「MySQL」の表示(rootユーザでのみ表示される)
データベースの表示:「MySQL」も表示される
show databases;
データベース「MySQL」を使う
use mysql;
userというテーブルからHostとUserというフィールドの内容を書き出す
select Host,User from user;
- 匿名ユーザの削除
delete from user where User=''; シングルクォート2つ
- Hostがbuildであるものの削除
delete from user where Host='build';
- rootユーザにパスワードを設定する(xxxxxxは任意のパスワード)
set password for root=password('xxxxxx');
- パスワードを付けたMySQLモニタに入る
mysql -u root -p
xxxxxx
データ型
- 文字型
CHAR(半角255文字まで)・・・CHAR(120)というように示す
TEXT(半角65535文字まで)
- 数値型
整数型
- INT(数値の範囲-231から231)
- TINYINT(数値の範囲-27から27)
- 日付・時刻型
- リスト型
クエリの構文
-
データベースやテーブルをつくるCREATE文
-
データベースをつくる
create database データベース名;
データベースのリストを表示させるには
show databases;
データベースを指定する(普通MySQLモニタを起動したら最初にすること)
use データベース名;
-
テーブルをつくる
create table テーブル名 (フィールド名1 そのデータ型, フィールド名2 そのデータ型,…);
テーブルのリストを表示する
show tables;
テーブルのフィールドを表示する
show fields from テーブル名;
- テーブルの構造を修正するALTER文
- フィールド名と属性を修正する(テーブル名と型を一度に修正可能)
alter table テーブル名 change 旧フィールド名 新フィールド名 型;
- フィールドの属性(型)だけを修正する
alter table テーブル名 modify フィールド名 新しい型;
- フィールドを追加する
alter table テーブル名 add 追加するフィールド名 その属性;
- テーブルにデータ(レコード)を追加するINSERT文
- 新規レコードの追加(全フィールドのデータ入力する場合)
insert into テーブル名 values (フィールド1の値, フィールド2の値,・・・);
- 新規レコードの追加(必要なフィールドだけデータ入力する場合)
insert into テーブル名 (フィールド名1, フィールド名2,・・・) values (フィールド名1の値, フィールド名2の値,・・・);
- テーブルからレコードを選び出す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;
- テーブルの内容を修正するUPDATE文
- レコードを修正する(条件に当てはまるレコードの特定のフィールドの値を訂正する)
update テーブル名 set フィールド名=修正したい値 where 条件式;
- 全レコードを修正する(条件式がない場合、一気にフィールドの値が修正される)
update テーブル名 set フィールド名=修正したい値;
- フィールド名1の値をフィールド名2の値で置き換える
update テーブル名 set テーブル名1=テーブル名2;
- 各レコード値を四則演算した結果に置き換える
update テーブル名 set フィールド名=フィールド名*2+500;
- テーブルやデータベースを削除するDROP文(注意して使用すること)
- テーブルをレコードごと破棄(削除)する
drop table テーブル名;
- データベースごと削除する
drop databese データベース名;
- レコードを削除するDELETE文
- 特定のレコードを削除する
delete from テーブル名 where 条件式;
- 全レコードを削除する(dropとは違ってテーブルの定義は残る)
delete from テーブル名;
- ファイルからデータを一括して取り込むLOAD DATA INFILE文
load data infile "テキストファイル名" into table テーブル名;
- テキストファイルはテーブルと同じフィールド構造を持ち、1レコードが1行になっており、
各フィールドの区切り(デリミタ)はタブコードになっていること
- 「c:\mysql\data\データベース名」の中にテキストファイルを保存してLOAD DATA INFILE文を実行
- レコードに連番を振る
[手順] @連番を入れるフィールドを作る
→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関数
- MySQLに接続する
mysql_connect('ホスト名','ユーザ名','パスワード');
- データベースを指定する
mysql_select_db('データベース名');
- 「クエリ文字列」を文字列として実行
mysql_query("クエリ文字列");
- $変数(実行したクエリの結果を格納)に含まれる行数を返す
mysql_num_rows($変数);
- $変数(実行したクエリの結果を格納)の内容を連想配列として返す
mysql_fetch_array($変数);
- 実行した直近のMySQLクエリにエラーがあったとき、エラーメッセージを返す
mysql_error();
- クエリを実行した結果、影響を受けたレコード数を返す
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は連番フィールドが最後にある場合
|
|