CALENDAR
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< January 2008 >>
SPONSORED LINKS
ARCHIVES
CATEGORIES
RECOMMEND
ザッピング
ヤフーログール
あわせてよみたい
とらっくわーど
MOBILE
qrcode
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - | pookmark |
mysql 基礎-phpで実行
■接続・DB選択・SQL・切断
$s=mysql_connect("localhost","root","root") or die("接続失敗だ");
print "つながった";

mysql_select_db("db1",$s);
mysql_query('insert into tb1 values(¥'佐藤¥',20)');
//中のシングルクオーテーションを¥でエスケープするか、外をダブルクオーテーションにする
mysql_close($s);
?>

■mysqlで返された結果を文字にする
$re=mysql_query("select * from tb1");
$kekka=mysql_fetch_array($re){
print $kekka[0];
print ":";
print $kekka[1];
print ":";
print $kekka[2];
print "
";
}

■ヒアドキュメント
長い文字列を扱うとき、いちいちエスケープ処理をしたりクオーテーションで囲ったりするのが面倒な場合、ヒアドキュメントを指定すれば開始合図から終了合図までの間を文字列として扱ってくれる。
開始合図:<<<終了を表す文字列
終了合図:終了を表す文字列
例)
uriaが50以上で、bangごとのuriaの平均が120以上のものだけを、uriaの平均の多いものから表示する。
$s=mysql_connect("localhost","root","root") or die("接続失敗だ");
mysql_select_db("db1",$s);

$q=<< select bang,avg(uria)
from tb1
where uria>=50
group by bang
having avg(uria) desc;
eot;

$re=mysql_query($q);
while($kekka=mysql_fetch_array($re)){
print "社員番号:";
print $kekka[0];
print "売上平均:";
print $kekka[1];
print "
";
}
mysql_close($s);
?>
| MySQL | 00:59 | - | - | pookmark |
mysql 基礎-ファイルを使ったやりとり
■データをインポート
load data infile 'c:/data/t.csv' into table tb1 fields teminated by ',';
*フォルダのパスは"¥"を使わず"/"で指定
*lines terminated by 改行文字(デフォルトは"¥n") も指定可能
*ignore スキップする行数 lines(デフォルトは0) も指定可能

■データをエクスポート
select * into outfile 'c:/data/t.csv' fields teminated by ',' from tb1;

■コマンドをファイルから読み込んで実行
source c:/data/t.csv
*SOURCEはSQLコマンドではないので";"はつけない

■コマンドプロンプトからファイルを実行
mysql db1 -uroot -proot -e "source C:/data/sql/txt"
*コマンドプロンプトから実行できる命令は「.bat」という拡張子をつけてまとめて記述しておくと便利。mysqlへのパスを設定(マイコンピュータ>プロパティ>システムのプロパティ>詳細設定>環境変数>環境変数を設定。pathがある場合は現在の最後に;をつけてから、c:¥(xampp¥)mysql¥bin¥)しておけば、mysqlに対する操作ができる。
例:デスクトップに以下の内容のout_file.batを作成。
mysql db1 -uroot -proot -e "select * into outfile 'C:/data/out2.csv' fields terminated by ',' from tb1"
*必ず1行で記述

■リダイレクトで結果をテキストファイルに出力する
mysql db1 -uroot -proot > log.txt
use db1;
select * from tb1;
exit

■ソースを読み込んでテキストファイルに出力
mysql db1 -uroot -proot -e"source c:/data/sql.txt" > log.txt

■tee コマンドで書き出す
tee log.txt
use db1;
select * from tb1;
select * from tb2;
*ファイルは実行した場所に保存される

■ファイルへの出力を中止する
mysql > notee
outfile disabled.

■DBのバックアップ
mysqldump -u root -proot db1>db1_out.txt
■DBのリストア
mysqladmin -u root -proot create db2( --default-character-set=ujis)
mysql -u root -proot create db2 *エラーになったときはダンプ・リストアとも文字コードを指定して実行してみる
| MySQL | 00:32 | - | - | pookmark |
mysql 基礎-dbが複数の処理
【UNION】複数テーブルのデータを合わせる(↓)
■複数のテーブルデータを重複を省いて結合 ()はなくても可
(select * from tb1 where price>1000) union (select * from tb2 price>1000);

■複数のテーブルデータを重複を省かず結合
(select * from tb1 where price>1000) union all (select * from tb2 price>1000);

【JOIN】何らかのキーを使って内部結合する(↑)
■名前をキーにtb1とtb2を内部結合
selecgt * from tb1 join tb2 on tb1.name=tb2.name;
更に、性別と年齢を選んで表示
selecgt tb1.name,tb2.name,tb1.sex,tb2.age from tb1 join tb2 on tb1.name=tb2.name;

【サブクエリ】ネストできるようなもの。バージョン4.1以降
例)最大値を求める
select * from tb1 where price in(select max(price) from tb1);
例)平均年齢以上の社員を抽出
select * from tb1 where age>=(select avg(age) from tb1);
| MySQL | 23:17 | - | - | pookmark |
mysql 基礎-dbがひとつの処理
■文字コードを指定してtableを作成する
create table tbname(bang varchar(10),name varchar(10),age int) charset=sjis;

■ソースの履歴を表示する
「↑」「↓」「F7(履歴一覧)」

■tableをコピー
create table tb2 select * from tb1;

■指数表現
「○E+△」は「○*10の△乗」
一万は「1E+4」

■日付・時刻型
【DATETIME】 YYYY-MM-DD HH:MM:SS
【DATE】 YYYY-MM-DD
データは必ず""または''で囲む

■処理実行日時
insert into テーブル名(カラム名) values(now());

■カラム構造の変更
カラムの定義変更: alter table テーブル名 modify カラム名 データ型;
カラムの追加: alter table テーブル名 add カラム名 データ型;
カラムの名前と定義変更: alter table テーブル名 change カラム名 データ型;
カラムの削除: alter table テーブル名 drop カラム名 データ型;

■一意のカラム
auto にしなくても primary key だけ設定しておけば重複を弾く
create table tbname(id int primary key,name varchare(10));

■デフォルト値を設定
alter table tbname modify name varchar(10) default '氏名未入力';

■¥Gでカラムごとに表示
命令最後の;の代わりに¥Gを入力するとカラムごとに見やすく表示してくれる。status等に。

■レコードの全削除
テーブルは削除せずにレコードを全削除
delete from テーブル名;

■カラムの値を計算して表示
select price*1000 as 価格 from tablename;
select avg(price) as 平均価格 from tablename;

■DBの現状を表示
Mysqlサーバーのバージョン:select version();
現在のDB:select database();
現在のユーザー:select user();
引数で指定した文字の文字コード:select charset('この文字なぁに?');

■文字を結合
select contact(カラム名1,カラム名2,'億円') from tb1;

■数値の条件を指定して抽出
レコード数を限定:select * from tablename limit 10;
条件を限定:select * from tablename where age>=20;
除外条件を設定:select * from tablename where age<>20;
条件範囲を設定:select * from tablename where between 20 and 80;
除外範囲を設定:select * from tablename where not between 40 and 80;
条件を限定(複数);select * from tablename where age in (20,21);

■文字列の条件を指定して抽出
select * from tabelname where name = '佐藤';
select * from tabelname where name like = '佐%';

■複雑な抽出
selsect * from tabelname where name like = '佐%' and age=20 or term>=10;

■条件によって値を変更して表示
select id,price,
case
  when price>=10000 then '高い'
  when price>=5000 then '検討'
  else '即買い'
end as 評価
from tablename;

■並替え
安いものから(ASCは省略可)3件表示
select * from tablename order by price ASC limit 3;
高いものから(DESC)5件削除
delete * from tablename order by price DESC limit 3;

■グループ化
同じ名前のレコードが複数あった場合、それを名前でユニークにする(複数の中から勝手に選ばれたレコードが表示される)
select * from tablename group by name;

名前ごとに、何件レコードがあるかカウントして表示する
select name,count(*) as 件数 from tablename group by name;
同様に合計:select name,sum(price) as 合計 from tablename group by name;
同様に平均:select name,avg(price) as 合計 from tablename group by name;

更に条件をつける
select name,avg(price) as 合計 from tablename group by name having avg(price)>=1000;

■条件に一致したレコードのカラムを修正
update tablename set hyouka='長身3人組' order by tall limit 3;

■条件にあったレコードをコピー
create table satousan select * from tbname where name='佐藤';
| MySQL | 22:04 | - | - | pookmark |
フリーペーパー
フリーペーパーの衝撃

■フリーペーパー業界団体 日本生活情報誌協会 JAFNA
http://www.jafna.or.jp/

■「ぱど」は4万〜6万を一つのエリアとし、全国で200エリア展開。

■フィールド・メディア・ネットワークの考えるフリーペーパーのデリバリー・ミックスはクーポン情報誌の場合、
・ラック10%
・街頭配布10%
・職域80%

■フリーペーパーラック代金
・コンビニ 3万円
・JR東日本 3万〜40万円
 (リクルートなど契約8社から6500万円 計8億の収入)
・東京メトロ
 年3億を見込む
・都営地下鉄
 224ラック*16カゴ
 1カゴ使用料9000円
 年収4億以上
| 印刷 | 17:13 | - | - | pookmark |
トラックバックセンター
http://trackback.3co.jp/
http://honpo.seesaa.net/
http://www.blogmura.com/tb.html
http://blog.livedoor.jp/oidekite/
http://blog.livedoor.jp/blog_mtg/
http://www.blogpeople.net/TB_People/
| 妹尾作業記録 | 15:22 | - | - | pookmark |
ニュースサイト
【ニュースサイト】
ライブドアニュース
CNET
ZDNET
iza
Jcast
等にTB可能
| 妹尾作業記録 | 15:15 | - | - | pookmark |
関数内で使用する変数
関数内で外の変数を使用する時は
global $aaa;
global $bbb;
global $ccc;
と、グローバル変数であることを明記。

| php | 16:11 | - | - | pookmark |
mysql バージョン
4.0.25
| MySQL | 01:30 | - | - | pookmark |
my sql エンコード
my.conf が見つからなかったので WINDOWSにあるmy.iniを編集。
http://iandeth.dyndns.org/mt/ian/archives/000108.html

---
[mysqld]
default-character-set=ujis
//skip-character-set-client-handshakeを追加すると再起動不可であった
//ujis=EUC-JP
--
| MySQL | 01:30 | - | - | pookmark |
| 1/5PAGES | >>