目次

データベースについて

データベースについて

データベースの種類は色々あるけど,ここでは「MySQL」をベースにまとめています. まぁ、基本的にコマンドは同じだから問題ないと思う.

参考サイト

インストール方法

sudo apt-get install mysql-server

ログイン方法

mysql -u ユーザ名 -p

ログインアウト方法

コマンド

3つの内いずれかを入力

mysql> \q / exit / quit

キーボード

「Control」押しながら「D」

ファイル構造

カラム:英語表記「Column」

行はレコードまたはRow

カラム  カラム  カラム  
レコード 
レコード フィールド
レコード 

コマンド一覧

参考サイト

ユーザの追加

「データベース名」「テーブル名」は「*」でもOK

mysql> grant all privileges on データベース名.テーブル名 to ユーザ名@'localhost' identified by 'パスワード';
mysql> FLUSH PRIVILEGES;

ネットワーク越しに接続する場合

ユーザ名の後に接続許可する「ドメイン名」「IPアドレスを」追記すればOK

mysql> grant all privileges on データベース名.テーブル名 to ユーザ名@'192.168.0.%' identified by 'パスワード' with grant option;
mysql> FLUSH PRIVILEGES;

特定の操作のみ許可する場合

mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO ユーザ名@"localhost" IDENTIFIED BY 'パスワード';
mysql> FLUSH PRIVILEGES;

ユーザ情報の反映

mysql> flush privileges;

データベースの作成

mysql> create database データベース名;

データベースの削除

mysql> drop database データベース名;

データベースの確認

mysql> show databases;

データベース名の変更(使えん)

mysql> rename database 変更前の名前 to 変更後の名前;

どのデータベースユーザとして接続しているか確認

mysql> select user();

データベースの選択

mysql> use データベース名

テーブルの作成

mysql> create table テーブル名 (
    -> フィールド名 型(領域),
    -> id int(10),
    -> memo char(140)
    -> );
  • MySQL 項目型
int / integer    4 バイト整数
smailint         2 バイト整数
bigint           8 バイト整数
float            浮動小数点
double / real    倍精度浮動小数点
date             日付
time             時間
datetime         日付時間
timestamp        日付時間(同レコードのフィールドが更新されると、同時に更新を行う)
char(文字数)     固定長文字列  (最大 256 文字)
varchar(文字数)  可変長文字列  (最大 256 文字)
text             ラージ文字列  (最大 65535 文字)
mediumtext       ラージ文字列  (最大 1677215 文字)
largetext        ラージ文字列  (最大 4294967295 文字)
blob             ラージバイナリ(最大 65535 bytes)
mediumblob       ラージバイナリ(最大 1677215 bytes)
largeblob        ラージバイナリ(最大 4294967295 bytes)
  • PostgreSQL 項目型
smailint / int2                     2 バイト整数
integer / int / int4                4 バイト整数
bigint / int8                       8 バイト整数
decimal(a, a) / numeric(a, s)       10 進型
real / float4                       6 桁単精度浮動小数点
double precision / float8           15 桁倍精度浮動小数点
serial                              4 バイト順序
bigserial                           8 バイト順序
date                                日付
time                                時間
datetime                            日付時間
timestamp                           日付時間(同レコードのフィールドが更新されると、同時に更新を行う)
char(文字数) / character            固定長文字列  (最大 4096 文字)
varchar(文字数) / charcter varying  可変長文字列  (最大 4096 文字)
text                                無制限テキスト
ラージオブジェクト                  oid 型 (???)
boolean / bool                      true / false

テーブルの削除

mysql> drop table テーブル名;

テーブルの確認

mysql> show tables;

テーブルのコピー

mysql> create table コピー先の名前 like コピー元の名前;
mysql> insert into コピー先の名前 select * from コピー元の名前;

テーブルの構造確認

mysql> describe テーブル名;

テーブルの中身確認

mysql> select * from テーブル名;

レコードの追加

  • 全てのフィールドに値を入れる場合
mysql> insert into テーブル名 values(データ1, データ2, データ3);
  • フィールドを指定して値を入れる場合
mysql> insert into テーブル名 (カラム名1, カラム名2, カラム名3)
    -> values(カラム名1のデータ, カラム名2のデータ, カラム名3のデータ)
    -> ;

※ 文字型のデータは「'」で囲む

※ 指定以外のフィールドには、defaultの値かnullが入る

レコードの削除

mysql> delete from テーブル名 [where 条件式];

※ 条件がない場合はすべてのレコードを削除する

レコードの修正

mysql> update テーブル名 set
    -> カラム名1 = ,
    -> カラム名2 = ,
    -> カラム名3 = 
    -> [where 条件式]
    -> ;

※ 条件がない場合はすべてのレコードのフィールドを更新する

カラムの追加

mysql> alter table テーブル名 add 追加するカラム名 データ型 [first/after カラム名];

※ firstかafterを指定することで、指定したカラムの前か後ろに挿入できる

※ PostgreSQLの場合は挿入位置を決めれず最後尾に付加される

カラムの削除

mysql> alter table テーブル名 drop カラム名;

カラム名の変更(使えん)

mysql> alter table テーブル名 rename 変更前カラム名 to 変更後カラム名;

カラムのデータ型の変更

mysql> alter table テーブル名 modify 変更するカラム名 新しいデータ型;

途中まで入力したSQL文をキャンセルする

「\c」を入力することでキャンセルできる

mysql> select *
    -> from テーブル名
    -> where カラム名 = 100
    -> \c
mysql>

カラムのコピー

mysql> update `テーブル名`.`テーブル名` set コピー先のレコード = コピー元のレコード;

データベースのバックアップ/リストア

バックアップ

  • すべてのデータベースのバックアップ
$ mysqldump -A -u root -p --opt > ダンプファイル名
  • 特定のデータベースのバックアップ
$ mysqldump データベース名 -u root -p --opt > ダンプファイル名

または

$ mysqldump --opt --password='パスワード' データベース名 -u ユーザー名 > バックアップファイル名

リストア

リストアするデータベースは事前に作成しておく必要あり => データベースの作成

  • すべてのデータベースをバックアップした場合
$ mysql -u root -p < ダンプファイル名
  • 特定のデータベースをバックアップした場合
$ mysql -u root -p データベース名 < ダンプファイル名

または

$ mysql -opt --password='パスワード' データベース名 -u ユーザー名 < バックアップファイル名

自動バックアップ

スクリプトの作成

[root@centos ~] vi backup4mysql.sh

#!/bin/sh

# バックアップファイルを何日分残しておくか
period=7
# バックアップファイルを保存するディレクトリ
dirpath='/home/batako/Backup/mysql/MyChannel'

# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
filename=`date +%Y%m%d%k%M%S`

# mysqldump実行
mysqldump --opt --password='][:@;plokijuhygtfrdeswaq' MyChannel -u root > $dirpath/$filename.sql

# パーミッション変更
chmod 700 $dirpath/$filename.sql

# 古いバックアップファイルを削除
oldfile=`date --date "$period days ago" +%Y%m%d%k%M%S`
rm -f $dirpath/$oldfile.sql

パーミッションの変更

chmod 755 backup4mysql.sh

cron登録

以下は毎日午前3時にバックアップをするように設定しているが間隔を変更したい場合は以下のリンクをみればおk

cron(クーロン)の設定 - プログラムを定期的に自動実行 [Fedora, RedHat, CentOS] - Linux

[root@centos ~] crontab -e
0 3 * * * ./backup4mysql.sh    ※左のように任意のフォーマットで記載したら:xで保存します
crontab: installing new crontab

メモ

複数条件並び替え(ソート)

select url, date from Come order by url, date desc;

mysqlのtimestamp型を使って更新日時と生成日時の両方を記録する

http://isoldeblog.blog93.fc2.com/blog-entry-14.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-16 (土) 18:03:30 (435d)