DB(PHP)
エラーログの場所
C:\xampp\mysql\data mysql_error.log
xamppのmysqlのディレクトリの場所
C:\xampp\mysql\bin
パスワード設定
C:\Users\user>mysqladmin -u root password
今回のパスワードはroot
ログイン
mysql -u root -p
databaseのDB確認
show databases;
DB作成 selfphpを
create database selfphp character set utf8;
DBを使う use selfphp;
ログイン前だったら、mysql -u root -p selfphp
データベースアクセス用の新規ユーザを設定する 管理者用だとセキュリティ状好ましくない
selfpassユーザを作成
GRANT ALL PRIVILEGES ON selfphp.* TO 'selfpass';
テーブル作成 memberテーブル
今回の内容が、id int 会員ID(主キー)
nam varchar(255) 氏名
sex char(1) 性別(デフォルト男)
old int 年齢
enter date 入会日
memo varchar(255) 備考
create table member(id int primary key auto_increment, nam varchar(255) not null,sex char(1) default'男',old int not null,enter date not null,memo varchar(255) default null);
テーブル作成ができたら、show tables;
テーブルの構成を確認
show fields from member;
データを挿入
insert into member(id ,nam ,sex,old,enter,memo) values(1,'inu','男',20,'2021-03-01',null);
select文
挿入したデータの内容を表示する
select * from member;
特定の情報を取り出す memberテーブルのoldとnam
select nam ,old from member;
性別が男でかつ備考が空ではない
select nam,sex,memo from member where sex='男' and memo is not null;
年齢(old列が21以上の会員だけとりだす
select nam ,old from member where old >=21;
年齢について上順で、会員コードについて降順で並べた場合
select id , nam , old from member order by old, id desc;
update テーブル情報更新
メンバーテーブルの会員コード(id列)が1のレコードの年齢(old列)を21に更新する。
update member set old =21 where id =1;
delete 削除
メンバーテーブルの会員コード(id列)が1のものを削除する。
delete from member where id=1;
カラムが足りなくなったら
alter table テーブル名 add (新規カラム名 date)
例 alter table book add (published date)
参考
主な比較演算子
= 等しいnam='鈴木',
より大きい(old>21),
old<21(より小さい),
=以上old>=21,
<= 以下 old<=30,
<> !=等しくない nam <> '鈴木'
is[not]null である(でない) memo is null,
[not]like 指定パターンに含まれる(含まれない) old between 25 and 35
[not]in 候補地のいずれかである(いずれでもない) old in(20,30,40)
参考文
is not null 半角スベースあける
order by 半角スペース開ける
and使い方
・memberテーブルからnam,sex,memoをとってきて、その中の男性、memoがからではないもの
select nam , sex , memo from member where sex ='男' and memo is not null;
or使い方
・memberテーブルからnam,sex,memoをとってきて、その中の男性または、memoがからではない
select nam,sex,memo from member where sex='男' or memo is not null;
order by 並び変え、ASC〈昇順)DESCが降順
・年齢について昇順で,会員コードについて降順で並べ変えた場合
select id ,nam ,old from member order by old , id desc;
データ集計 グループ化 Groupby
集計関数
AVG(平均)count(件数)MAX(最大化) MIN(最小化) SUM(合計)
・年齢(old)の平均をだす(AVG)
select nam,avg(old) from member group by sex;
関数を使った後は別名をつけるのが、一般的です。どうするか?ASを使う
今回はold_avgという名前を付ける
select sex,AVG(old) AS old_avg from member group by sex;
注意・・select * from member;で検索してもold_avgテーブル名は出てこない。
例外処理
メソッド一覧 try ctach finallytry{
例外が発生する可能性があるコード
}catch(発生するかもしれない例外の種類 例外を受け取る変数){
例外発生時の処理
}finally{
例外有無でも実行する
}
phpからDB接続
$dsnでDB名に接続 $usr ユーザ名 $password でパスワード DBを作った後に、権限を作成
適当な変数に入れて、DBを取得
$db =getDb(); //接続確認する
<?php
function getDb() //DBのテーブル、ユーザ名 パスワードをいれる
{
$dsn = 'mysql:dbname=selfphp; host=localhost; charset=utf8';
$usr = 'selfusr';
$passwd = 'root';
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//
return $db;
}
feach セットから個々の行を取り出す事をfeachするという。結果をセットする
トランザクションとは、複数の処理をグループ化する事。トランザクションの処理を確定する事をcommitするという
トランザクションの処理を戻す事をロールバックという
トランザクションとロールバックを使ったサンプルコード
DBを消す。
DROP DATABASE [IF EXISTS] db_name;
データベースから特定のデータを取得する
参考
fetch(PDO::FETCH_ASSOC);
Discussion