2010年12月22日水曜日

12/22覚書

☆MySQL基本操作
・XAMPP起動
・データベース作成
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
でコマンドラインでMySQL実行常態にする
・create database study;
データベース名studyでデータベース作成。
show databases;で作成確認。
・grant all on *.* to『ユーザー名』 @"localhost" identified by "パスワード";
でログイン用ユーザー名とパスワード作成
・flush privileges;
設定
・cd c:\pleiades\xampp\mysql\bin
mysql -u root ユーザー名 -p
パスワード要求出るので入力。
・show databases;で作成確認。
・statusでステ確認。
・create table member (id int not null auto_increment,name text,age int,primary kty (id));
テーブルにmemberって名前をつけて、
カラムはid(null無し、数値型)とname(文字列型)とage(数値型)にして、
idに主キーをつけるよ、と。

☆データベース操作一覧
・MySQLの実行(フォルダに移行してから)
mysql -u ユーザー名 -p
とパスワード入力。
・MySQLの終了
quit;かexit;
・データベース一覧表示
show databases; ←sがつくよ。
こんなの。

+--------------------+
| Database           |
+--------------------+
| information_schema |
| cdcol              |
| mysql              |
| phpmyadmin         |
| study              |
| test               |
+--------------------+


・データベース選択
use データベース名
・テーブル一覧表示
show tables; ←ここもs。

★データ入力
・カラムnameとageに自分の名前を入れてみるよ。
insert into member (name,age) values ('yamazaki','33');
テーブルmemberにカラムnameとageに入れるよ。
Query OKと出れば成功。

★セレクト
select name,age from member;
select 取得したいカラム from テーブル名; で名前と年齢がコマンドラインに出るよ。
こんな感じ
+----------+------+
| name     | age  |
+----------+------+
| yamazaki |   33 |
+----------+------+
1 row in set (0.00 sec)

★テーブル内全表示
select * from member;
ワイルドカードなのか~。

★更新
既存データ更新
update member set age =40
だと全員なっちゃう

※rollback; で戻る。

・条件付け更新。条件はwhereをつける。
update member set age = 20 where id = 5

・条件付け選択
select * from member where id = 1 or id = 2; 1番と2番
select * from member where id = 1 or || = 2; 1番と2番
select * from member where id <= 2; 2番目以降
select * from member where id >=2 2番目まで

・idが1番でyamazakiの条件に合うものを出す。
select * from member where id = 1 and name = 'yamazaki'; 

・何番目~何番目まで表示
select * from member where id >=4 and id < 9;


★空文字を入れてみるよ。
insert into member (age) values('');
・NULLを入れてみるよ
insert into member (age) values(null);

◆空文字とNULLは別物だよ。
上記の空文字だと文字列はNULL数字の場合はゼロ。
※ただしnullと入れればnullとして扱える
※※not null を作成時に指定した場合を除く

select * from member where name is null;
+----+------+------+
| id | name | age  |
+----+------+------+
| 15 | NULL |    0 |
+----+------+------+
1 row in set (0.00 sec)

・NULL以外を表示してみるよ
select * from member where name is not null;

★ソート
・ID昇順ソート
select * from member order by id asc;
・ID降順ソート
select * from member order by id desc;
・あわせてソート
select * from member order by name asc, id desc;

★パターン検索
・前方一致
aaa%

select * from member where name like 'yama%';
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | yamazaki |   33 |
+----+----------+------+
1 row in set (0.16 sec)

・後方一致
%aaa

select * from member where name like '%a';
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  3 | chihaya |   15 |
|  4 | haruka  |   16 |
| 10 | azusa   |   20 |
+----+---------+------+
3 rows in set (0.00 sec)

・すべて
%aaa%
select * from member where name like '%a%';
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | yamazaki |   33 |
|  2 | ai       |   15 |
|  3 | chihaya  |   15 |
|  4 | haruka   |   16 |
|  6 | makoto   |   16 |
|  8 | yayoi    |   14 |
| 10 | azusa    |   20 |
| 13 | ami      |   12 |
| 14 | mami     |   12 |
+----+----------+------+
9 rows in set (0.00 sec)

★行数だけ取得
select count(*) from member;

★ID指定で修正。カラム変えればおk。
update member set age = 20 where id =10;

・NULLの名前を修正
update member set name = 'takagi' where name is null;
・空文字の名前を修正
update member set name = 'takagi' where name = '';

・テーブル追加
alter table member add address text;
alter table テーブル名 add 追加したいカラム名 種別;

☆練習 アドレス帳
1.create文を作成。コピペ禁止
その場で作成→エラー→一旦memberのテーブルから出て作成→エラー→単純にスペース不足;
create table memberz (id int not null auto_increment,name text,
address text,tel text,up int,primary key ( id ));
zだけ追加w

2.各カラムのデータ型を考える
id int not null auto_increment,name text,address text,tel text,up int,
upを更新日にしたかったが、日付はまた別のタイプだとすっかり忘れ;
alter table memberz modify up data;
modifyでカラムタイプ変更。

Ex.カラムの後にカラムを追加し型指定。参考ここ
ALTER TABLE テーブル名 ADD 追加するカラム名 型 AFTER カラム名;

◆運用中のカラムに追加するのは大トラブルの元!◆
◆なので練習できるうちにたくさん失敗しておこう◆

3.insratでデータを自分で考える
mysql> insert into memberz (name,address,tel,up) values('haruka','yamanote','03-
1111-1111','2010/12/20');

んでこんなのできた。
+----+---------+-----------+--------------+------------+
| id | name    | address   | tel          | up         |
+----+---------+-----------+--------------+------------+
|  1 | haruka  | akasaka   | 03-1111-1111 | 2010-12-22 |
|  2 | thihaya | yamanote  | 03-7777-2222 | 2010-12-22 |
|  3 | rituko  | odaiba    | 03-1515-4545 | 2010-12-22 |
|  4 | ryo     | akihabara | 03-2525-4545 | 2010-12-22 |
+----+---------+-----------+--------------+------------+
4 rows in set (0.00 sec)

今日はなんかすんなりできた……。
関数がネックだというのがよ~~~~くわかりました;
1~100までのテストで後一歩まちがえたあああああああああ
丸暗記したと思ってたのに><
あああああ明日が怖ぇえええええええ







・・・・・・・・・・・・でも息抜きじゃねえっすYO;