* 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]