ドットインストール学習日記:MySQL

今日のドットインストール学習記録。
MySQLの基礎 (全36回) と PHPの基礎 (全60回) の続き!

以下、学習内容メモ。

MySQLの基礎

データベースの操作
show databases; // データベースの一覧を表示
create database データベース名; //データベースを作成する
drop database データベース名; // データベースを削除する
use データベース名; // 作業するデータベースを選択する
一般ユーザーの作成
grant all on データベース名.* to ユーザー名@localhost identified by 'パスワード';

対象のデータベースのすべてのテーブルに対して権限を持つ、作業用の一般ユーザーを作る。
localhostからのアクセス時のみ有効。ユーザー名とパスワードは任意のもの。

テーブルの操作
show tables; // テーブルを表示
create table テーブル名 (フィールド名 データ型, ..., ...); // テーブルを作成する
desc テーブル名; // テーブル内の各フィールドの型を表示
drop table テーブル名; // テーブルを削除する
レコード
insert into テーブル名(フィールド名, ..., ...) values(1, 'aaa', ...); //レコードを挿入する
select * from テーブル名; // テーブルのすべてのレコードを確認
update テーブル名 set フィールド名1 = 新しい値 where フィールド名2 = 値; // フィールド2の値が指定したものと一致した場合、フィールド1の値を更新する
delete from テーブル名 where フィールド名 = 値; // 指定した条件に当てはまるレコードを削除
フィールドの追加と削除
alter table テーブル名 add フィールド名 データ型; // 対象のテーブルにフィールドを追加
alter table テーブル名 drop フィールド名; // 対象のテーブルからフィールドを削除
データ型
int // 整数
float // 浮動小数点数
double // 倍精度浮動小数点数 倍だからdouble(多分)
char(10) // 文字列(文字数固定)
varchar(255) // 文字列(文字数が固定されていな)
text // 長い文字列
date // 日付
datetime // 日付と時刻
enum('値1', '値2') // 列挙型 
オプション
NOT NULL // NULLはダメ
DEFAULT 'デフォルトの値' // 指定されなければデフォルトの値を入れる
インデックス
primary key // IDなど レコードを識別するときにもっとも適したもの
unique // email など 重複すると困るもの
KEY インデックス名 (インデックス対象) // 検索に使うもの
auto_increment // 自動で連番をふる
フィールドの変更
alter table テーブル名 change 現在のフィールド名 変更後のフィールド名 変更後のデータ型;
テーブル名の変更
alter table 現在のテーブル名 rename 変更後のテーブル名;
関数
replace(フィールド名, 現在の文字列, 置換後の文字列) // 指定したフィールドの特定の文字列を置換して表示
substring(フィールド名, 3, 4) // 指定したフィールドの3文字目から4文字切り出す(1文字目から始まる)

で、組み合わせて"個人情報保護のため一部を表示しておりません"って感じにしてみた。

select name, replace(email, substring(email, 3,4), 'xxxx') from users;
数学関数
ceil() // 切り上げ
floor() // 切捨て
round() // 四捨五入
rand() // 乱数を生成

実際にやってみたところ、四捨五入が正しくされないっぽい。

これじゃ五捨六入だ。どうにかしたらちゃんと四捨五入されるんだろうか…

日付関連の関数
now() // 現在時刻
datediff(日付1, 日付2) // 日付2から日付1までの経過日数

今日の感想と反省

MySQLは覚えることがいっぱいだった。でも関数や命令の組み合わせ次第で色々できるし面白い!
使いこなせたらかっこいい(?)し頑張ろう。

日曜日1日じゃ思ったほど進められなかったorz
続きはまた明日。