MySQL

MySQLとは

データベースを管理・運用するシステムのひとつ。

数あるSQLデータベースのなかで一番普及している。

Excelのようなデータの集合体をまとめて管理し、高速に検索することができる。

http://dev.mysql.com/downloads/

MySQLの記述例


CREATE TABLE records (
  id INT NOT NULL primary key AUTO_INCREMENT,
  user_id INT NOT NULL,
  tags VARCHAR(127),
  text TEXT,
	date TIMESTAMP
);
CREATE TABLE users (
  id INT NOT NULL primary key AUTO_INCREMENT,
  name VARCHAR(127),
);

┌────┬─────┬─────┐
│id      │name   │value     │
├────┼─────┼─────┤
│1       │aaaa   │bbbbb     │
├────┼─────┼─────┤
│2       │cccc   │ddddd     │
└────┴─────┴─────┘

MySQLコマンド

[ ] でくくられた対象はユーザが設定しているテーブル名やカラム名など。

ユーザーを作成する


GRANT ALL ON *.* TO [user] IDENTIFIED BY '[passsword]';

データベースを作成する


CREATE DATABASE [database_name];

データベースを削除する


DROP DATABASE [database_name];

データベースを選択する


use [database_name];

データベースの一覧を表示する


show databases

テーブルを作成する


CREATE TABLE [table_name] (id INT(11) NOT NULL,
	 name VARCHAR(32),
	 flag TINYINT(1) datetime DATETIME,
	 text BLOB
);

テーブルの一覧を表示する


show tables

テーブル名を変更する


ALTER TABLE [old_table_name] RENAME [new_table_name]

カラム名やデータ型を変更する


ALTER TABLE [table_name] CHANGE [old_column] [new_column]

データ型を変更する


ALTER TABLE [table_name] MODIFY [column] [data_type]

カラムを削除する


ALTER TABLE [table_name] DROP COLUMN [column]

テーブルのすべての内容を表示する

*にカラム名をカンマ(,)区切りで記入することで特定の列だけ見ることも可能

SELECT * [table_name];

where後に条件の内容に一致するもののみ、表示する


SELECT * [table_name] WHERE [];

IS NUILL
NOT NULL

column属性が****のレコードを検索する

%はワイルドカードの意

SELECT * [table_name] WHERE [column] LIKE '****';

column属性に****を含むレコードを検索する

%はワイルドカードの意

SELECT * [table_name] WHERE [column] LIKE '%****%';

AND検索


SELECT * [table_name] WHERE id > 20 AND id < 50;

OR検索


SELECT * [table_name] WHERE id < 20 OR id > 50;

レコードを追加する


INSERT INTO table SET 
  id = 7,
  name = 'aaaa',
  value = 'bbbb';

レコードを更新する


UPDATE [table_name] SET [column] = '[value]';

レコードの内容を置換する


UPDATE `records` SET text=REPLACE(text, "パターン", "置換後");

テーブルの情報を表示する


SHOW TABLE STATUS;

テーブルの作成時のSQL文を表示する


SHOW CREATE TABLE [table_name];

バックアップと復元

バックアップ (ダンプファイル作成)


$ mysqldump -u root -x -all-databases > dump.sql # すべてのデータベースを対象
$ mysqldump -u root データベース名 > dump.sql # 特定のデータベースを対象

復元


$ mysql -u root -p < dump.sql # すべてのデータベースを対象
$ mysql -u root データベース名 < dump.sql # 特定のデータベースを対象

PerlでMySQLに接続する

DBIモジュールをつかった例


$dbname="database";
$dbhost="exsamplat.com";
$dbuser="user";
$dbpass="password";

sub db_connect{
    $dbh = DBI->connect("dbi:mysql:$dbname;host=$dbhost;",$dbuser,$dbpass);
    if(!$dbh){
        $DBI::errstr;
        print"接続失敗";
        exit;
    }
}

# データを表示する
sub db_show(){
    $sth = $dbh->prepare("select * from table_name;");
    
    $rs = $sth->execute();
    
    # 配列として出力
    while(@row=$sth->fetchrow_array){
			print "$row[0] $row[1]";
    }
    
    # 連想配列として出力
  	while ($rhash = $sth->fetchrow_hashref()){
  	  my %row_data;
  		print "$rhash->{'no'}";
  		print "$rhash->{'name'}";
  	}
}

sub getRecords{
  my $self = shift;
  my $dbh = $self->{dbh};
  #my $sth = $dbh->prepare("SELECT * FROM records ORDER BY no DESC LIMIT 20 OFFSET 0;");
  my $rs = $sth->execute();
  
  my @ary;
  while (my $hash = $sth->fetchrow_hashref()){
    push @ary,$hash;
  }
  return \@ary;
}



# レコードに追記
sub_insert(){
    $sth = $dbh->prepare("insert into $table (col1,col2) values($col1, $col2);");
    $rs = $sth->execute();
}



CREATE TABLE users (
  id INT(11) NOT NULL PRIMARY KEY,
  name VARCHAR(32),
  tags VARCHAR(255),
	flag TINYINT(1),
	datetime DATETIME,
	text BLOB
);

CREATE TABLE records (
  id INT(11) NOT NULL PRIMARY KEY,
  text VARCHAR(32),
	user_id TINYINT(1),
	hide INT(1),
	datetime DATETIME
);


INSERT INTO records SET 
  id = 1,
  text = 'aaaa',
  user_id = 1,
  hide = 0
;

INSERT INTO records SET 
  id = 2,
  text = 'bbbb',
  user_id = 2,
  hide = 0
;

INSERT INTO records SET 
  id = 1,
  text = 'cccc',
  user_id = 2,
  hide = 0
;

INSERT INTO users SET 
  id = 1,
  name = 'tacshiss',
  flag = 0
;


INSERT INTO users SET 
  id = 2,
  name = 't_hida',
  flag = 0
;

DBIx:Class

PerlでMySQLにアクセスするためのO/Rマッパーモジュール。

phpMyAdmin

PHPでつくられたMySQLを操作するためのWEBアプリケーション。

http://www.phpmyadmin.net/

コマンドプロンプトで操作

mysql