* MySQLの基礎 [#t338d3b1]

#contents

** 開発環境の準備 [#r6f32e30]
「mysql」へのログイン (パスワード未設定時)
 mysql -u root

「mysql」へのログイン (パスワード設定時)
 mysql -u root -p

パスワード「hoge」の設定方法
 mysql> SET PASSWORD FOR root@localhost=PASSWORD('hoge');

「help」の表示
 mysql> help;

ログアウト
 \q
 exit;

** 用語を理解する [#d2bdef52]
- データベース:excelにおけるbook
-- テーブル:excelにおけるsheet
--- フィールド:excelにおける列
--- レコード:excelにおける行

** データベースを操作する [#i856d890]
データベースを表示する
 mysql> show databases;

データベース「blog_app」を作成する ※データベース名は大文字/小文字を区別する
 mysql> create database blog_app;

データベース「blog_app」を削除する
 mysql> drop database blog_app;

** 一般ユーザーを作る [#o82f2864]
「blog_app」の全ての操作権限を持つ一般ユーザー「dbuser001」を作成する (アクセス元は「localhost」、パスワードは「dbpwd0001」)
 mysql> grant all on blog_app. * to dbuser001@localhost identified by 'dbpwd0001';

** テーブルを表示する [#vcfda37b]
一般ユーザー「dbusr001」でログイン
 mysql -u dbusr001;

データベース「blog_app」を使用する
 mysql> use blog_app;

テーブルを見る
 mysql> show tables;

** テーブルを作成する [#v0a22b88]
テーブル「users」を作成。フィールド(名)を追加しそのデータ型を指定する
 mysql> create table users (id int, name varchar(50), email varchar(255), password varchar(16));

テーブル「users」の中身を確認する
 mysql> desc users;

** テーブルを削除する [#qdc0b7cf]
テーブル「users」を削除する
 mysql> drop table users;

** レコードを挿入する [#s68e2b5e]
 mysql> insert into users (id, name, email, password) values (1, 'kimura', 'kimura@foo.com', 'xxxxx');
 mysql> insert into users (id, name, email, password) values (1, 'tanaka', 'tanaka@foo.com', 'xxxxx');
 mysql> insert into users (id, name, email, password) values (1, 'yoshida', 'yoshida@foo.com', 'xxxxx');

|id|name|email|password|
|1|kimura|kimura@foo.com|xxxxx|
|1|tanaka|tanaka@foo.com|xxxxx|
|1|yoshida|yoshida@foo.com|xxxxx|

レコードを確認する (「*」は全てのユーザー)
 mysql> select * from users;

** レコードを更新する [#laf98814]
「name」フィールドが「tanaka」の「id」フィールドを「2」に、~
「name」フィールドが「yoshida」の「id」フィールドを「3」に変更する
 mysql> update users set id = 2 where name = 'tanaka';
 mysql> update users set id = 3 where name = 'yoshida';

|id|name|email|password|
|1|kimura|kimura@foo.com|xxxxx|
|2|tanaka|tanaka@foo.com|xxxxx|
|3|yoshida|yoshida@foo.com|xxxxx|

** レコードを削除する [#q54b9ed6]
「id」フィールドが「3」のレコードを削除する
 mysql> delete from users where id = 3;

|id|name|email|password|
|1|kimura|kimura@foo.com|xxxxx|
|2|tanaka|tanaka@foo.com|xxxxx|

** レコードを扱えるデータ型について [#w5930746]
 create table users (
        id int, # 整数型
        weight floot, # 小数点(doubleも可)
        code char(10), # 固定長文字列
        name varchar(50), # 可変長文字列
        name text, # 可変長文字列 (最大値大)
        email varchar(255),
        password varchar(16),
        created datetime, # 日付型
        sex enum('male', 'female') # 列挙型
 );

** テーブル作成時のオプション (create table文) [#occ8f47b]
create table文のオプション
 create table users (
        id int NOT NULL, # NULLではない
        created datetime DEFAULT '2011-11-11 10:00:00', # デフォルト値を設定する
 );

** インデックスとは? (create table文) [#gdf8b89a]
インデックスをフィールドに設定すると検索が高速化する
 create table users (
        id int NOT NULL primary key, # idにふる
        email varchar(255) unique, # ユニークなフィールドにふる
        KEY code (code) # KEY インデックス名 (検索キーワード)
        /* 検索を高速化させたい対象にふる */
 );

** IDを自動でふる (create table文) [#obc6e2b4]
 create table users (
        id int NOT NULL primary key auto_increment, # 自動的にidを連番でふる
 );

「id」フィールドに「null」を入れても自動的に「id」が連番でふられる
 insert into users (id, ...) values (null, ...);
 insert into users (weight, ...) values (55.5, ...);
 */ 

** 表示するフィールドを指定する (select文) [#m4f65756]
フィールドを指定して表示させる (表示させる順番は変えることも可能)
 mysql> select id, name from users;

フィールドを縦に表示させる (フィールドが多い場合に使用する)
 mysql> select id, name from users\G;

** 表示する条件を指定する (select文) [#m9b7b4f2]
where句を活用する
 mysql> select * from users where id = 1;
 mysql> select * from users where id != 1;
 mysql> select * from users where id > 1;
 mysql> select * from users where name = 'yoshida';
 mysql> select * from users where name like = 'yoshi%'; # 部分文字列検索

** 表示する順番を指定する (select文) [#j21b92a3]
名前順にソート(昇順)
 mysql> select * from users order by name;

名前順にソート(降順)
 mysql> select * from users order by name DESC;

「wehre句」と「order by」を組み合わせる
 mysql> select * from users where id > 1 order by name DESC;

** 表示する件数を指定する (select文) [#oc640bea]
表示件数を2件に指定する
 mysql> select * from users limit 2;

「limit」と「order by」を組み合わせて「id」でソートした上位2件を表示させる
 mysql> select * from users order by id limit 2;

** フィールドを追加、削除する (alter table文) [#j7f92087]
フィールド「created」を追加
 mysql> alter table users add created datetime;

フィールド「created」を追加
 mysql> alter table users drop created;

** フィールドを変更する (alter table文) [#n38019c8]
現在のデータ型を確認する
 mysql> desc users;

「email」フィールドの名前・データ型を変更する
 mysql> alter table users change email email varchar(100);

** テーブル名を変更する (alter table文) [#x2e8a6f3]
テーブル名を「users」から「blog_users」へ変更
 mysql> alter table users rename blog_users;

** length関数を使う [#d5b9fbc0]

** replace関数を使う [#x0fa8d46]

** substring関数を使う [#f85cebdc]

** 数学関数を使う [#s30f164f]

** randを使う [#jde00856]

** 日付関数を使う [#jc657d71]

** 外部ファイルにSQLを記述する [#u2d6014b]

** 外部ファイルからSQLを実行する [#b4f9d8cd]

** 外部ファイルからデータを取り込む [#e56dafd7]

** 取り込んだデータを確認する [#g4829b8f]

** 複数のテーブルを準備する [#z01bb4ba]

** 複数のテーブルからselectする [#t4977236]

** 条件を組み合わせてselectする [#h4b331cb]

** group byを使う [#d9d0481e]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS