カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

MySQL 4から5へバージョンアップ

今回はまたまたとある環境でMySQLのバージョンアップを行いました。
4.1.20から5.0.95へのバージョンアップです。

ソースをダウンロードして解凍し、該当ディレクトリへ移動します。

コンパイルとインストール

configureを実行

./configure --with-charset=utf8 --with-extra-charset=all --with-mysqld-user=mysql
make
make install

インストールされるファイルやディレクトリ
/usr/local/lib/mysql … データディレクトリ
/usr/local/bin … mysql等の実行ファイル、その他関連コマンド
/usr/local/share/mysql … 言語ファイルや起動用のシェルスクリプト等
/usr/local/include/mysql … ヘッダーファイル


MySQLを初期化

/usr/local/bin/mysql_install_db --user=mysql \
--basedir=/usr/local \
--datadir=/usr/local/lib/mysql

続きを読む…»

0
1,051 views

テーブルの内容を簡単置き換え【SQL】

MySQLテーブルのデータ内容をSQL文を使って簡単に書き換えることができます。

例えば、何らかのシステムの変更により、テーブルのとあるカラムの内容を
条件を付けて一括で置き換えたい、という場合に便利な方法です。

わざわざPHP等のプログラムを書いてサーバーに入れて処理…などとしなくても
SQLだけで短時間で処理できます。

例)exTableというテーブルのカラム「ex_column2」が「test」という文字列のレコードの
カラム「ex_column」にある「source」という言葉を「destination」に全て置き換えます。

UPDATE exTable SET 
ex_column = REPLACE(ex_column, 'source' , 'destination') 
WHERE ex_column2 = 'test' ;
0
1,605 views

MySQLデータベースにテーブルが存在するか確認する

データベースに指定した名前でテーブルが既に存在するかどうかを
確認することができます。

LIKE検索なので、テーブル名にはワイルドカード(%)を使用することができます。

ここでは例としてPHPを使って確認します。
実行しているのは単純なSQL文ですので、他の言語でも同様にできると思います。

<?php

$con = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $con);

$sql = "SHOW TABLES FROM [DATABASE_NAME] LIKE '[TABLE_NAME]';";
$rst = mysql_query($sql, $con);

if(mysql_num_rows($rst) == 0){
    print "テーブルが存在しません。";
} else {
    print "テーブルが存在します。";
}

?>
0
31,929 views

MySQL テーブルをコピー

テーブルをデータも含めて丸ごとコピーするには

create table new_example like example;
insert into new_example select * from example;

MySQL 4, MySQL 5で確認済

MySQL 3の場合、上記は利用できないので、以下のようにします。

create table new_example as select * from example;

※主キー・インデックス等はコピーできません。
続きを読む…»

0
1,630 views

テーブルの不一致データ参照

テーブルAにあってテーブルBにないデータを見つけたいとき、
ACCESSでいうところの「不一致クエリ」を使います。

select TABLE_A.* from TABLE_A 
left join TABLE_B on TABLE_A.ID = TABLE_B.ID 
where (TABLE_B.ID Is Null);
0
3,486 views

MySQL CSVファイルの入出力

一発で出来て便利な方法を見つけたので、書いておきます。
ただ、入力の場合、フィールド数は同じである必要があります。

【出力】
書式

SELECT * FROM [TABLE] INTO OUTFILE "[ファイルのパス]" FIELDS TERMINATED BY "[区切り文字]" OPTIONALLY ENCLOSED BY '[囲み文字]' LINES TERMINATED BY "[改行コード]";

MySQLで実行する場合

SELECT * FROM [TABLE] INTO OUTFILE "[ファイルのパス]" FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";

PHPで実行する場合(SQL文以外省略しています)

select * from [TABLE] into outfile \"[ファイルのパス]\" fields terminated by \",\" optionally enclosed by '\"' lines terminated by \"\r\n\"

【入力】

load data infile \"[ファイルのパス]\" into table [テーブル名] fields terminated by \"[区切り文字]\" enclosed by '[囲み文字]' lines terminated by \"[改行コード]\"

MySQLで実行する場合

LOAD DATA INFILE "/tmp/temporary.csv" INTO TABLE TABLE FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";

PHPで実行する場合(SQL文以外省略しています)

load data infile \"/tmp/temporary.csv\" into table TABLE fields terminated by \",\" enclosed by '\"' lines terminated by \"\r\n\"
0
3,371 views

ソートの複数指定 SQL

複数のフィールドでソートをしたい場合、order by句にカンマで区切り、指定します。

例)「field1」で昇順に並べ替え、「field1」が同じ値であれば「field2」を降順に並べ替えます。

select * from tablename order by field1, field2 desc

※昇順・降順はフィールド毎に指定する
上の例で「field1」も降順にしたい場合は

select * from tablename order by field1 desc, field2 desc

とする

0
1,493 views

MySQLコマンド

mysql -u root -pと入力し、パスワードを聞かれるので入力。
show databasesで情報を表示。
useコマンドでDBを選択。
show table statusでテーブル情報を表示。

0
1,453 views