Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21109

初心者が月10万稼ぐ為の記録10 データベースの操作

$
0
0

データベース:MySQL
データベースを操作するツール:phpMyAdmin

(仮)会員を管理して会員が投稿したメッセージを管理するシステムを作成

テーブル作成とカラム作成

①新規作成→②データベース名→③作成ボタンを押す
utf8mb4_general_ciは文字コードの選択で日本語ならこれでOK

db1.png

テーブルを作成
テーブル名:users カラム数:10
エクセルでいうシートのイメージでカラムの数は後で変更できる。実行ボタンを押す
db2.png

テーブルを作成する際には
あらかじめ何を入れるか決めとく必要がある。
例えば今回なら会員メンバーを登録するので
それによって名前、データ型に何を入れるかかわってくる。

名前の欄に
name(名前)email(メール)gender(男、女)birth(誕生日)age(年齢)
データ型を入れる際の注意点
データ型に例えば名前なのにINT型にしてしまうと、そこには数字しか入らなくなるので考えて入れる。
名前だと文字なので文字列型を入れるんですが、TEXEでもいいのですが、TEXTだと6万5千文字ぐらい入る。
名前はせいせい20文字くらいなので文字列に制限がある文字列型にする方がよい。
制限がある文字列型だとCHAR、VARCHAR、TINYTEXT、LONGTEXTその他にも色々ある。
データベースは大量にデータがはってくるので余計な領域な取らないほうがいよい。
名前だとVARCHRがよい。

このように入れたら保存ボタンを押す。
db3.png

データが何も入ってない状態なので挿入ボタンを押してデータ入れる。
db4.png

本来はweb上で会員登録画面から入力してデータベースに登録する流れになるが
今回は仮ということで挿入ボタンから直接入力した。
db5.png

SQLの基本とINSERT(挿入)

挿入とか編集はボタンを押して簡単にできるが、
データベースをしっかり使いこなすには
SQL(お問い合わせ言語)が必要になってくるので
SQLの基本から学ぶ。

SQLのタブをクリックするとコードを書くことができる。
👇入力する

INSERTINTOusersSETname="山田",email="yamada@yn.jp",gender="女",birth="1999/11/23",age=35;

👇追加されている
db6.png

プライマリーキーの設定
現状だとこのように出ている。
このままだと、例えば、name、email、gender、birth、ageがまったく一緒の人が登録したら
どっちがどっちだかわからなくなる。
そのため、編集、コピー、削除がでいない。
まったく一緒の人でも区別をつける必要がある。
他のデータと絶対と絶対に重ならないデータが必要になる。
新しいカラムを追加する必要がある。

PRIMARYを設定する場合一度、操作タブからテーブルを空にするひつようがある。

構造タブ→カラム数を決めて→どの場所に追加するか決める。(今回は一番上)→実行ボタンをクリック

名前をidデータ型をINTにしてインデックスをPRIMARYにしてAIにチェックし設定して保存する。
AIとはオートインクルメントで自動でidをふってくれる。
自分でidをふることになると、まちがって同じidをふってしまうと登録できない。自動でふってくれるように設定しておけば防ぐことができる。

👇idというカラムが追加される。
db8.png

レコードの更新(UPDATE)と削除(DELETE)

今回のように仮で作成しテストでやってる場合は
たくさんデータを登録するさい大変なので
テストデータ生成のサイトで作成する
URL:https://tm-webtools.com/Tools/TestData

レコード更新(UPDATE)書き換え
id 1 方の メールアドレス「DtAPYxn@example.co.jp」を変更する場合

UPDATEusersSETemail="cccc@vvvv.jp"WHEREid=1;

id 1 の メールアドレス「cccc@vvvv.jp」に変更される。

WHEREはどのデータを書き換えますかという意味。

削除(DELETE)
id 1 方が退会して削除する場合

DELETEFROMusersWHEREid=1;

検索(SELECT)構文と WHEREの条件

id 35の方の名前を検索したい場合

SELECTid,nameFROMusersWHEREid=35;

id 35の方の全部の情報を知りたい場合「*」を使う

SELECT*FROMusersWHEREid=35;

年齢が35歳未満の方を検索したい場合

SELECT*FROMusersWHEREage<35;

かっこの中に複数条件を入れたいとき「IN」

SELECT*FROMusersWHEREageIN(10,20,30);

同じ苗字を検索したいとき「LIKE」

SELECT*FROMusersWHEREnameLIKE'磯野%'

「%」は例えば磯野の後に何が入っていてもよいという意味

部分一致にしたい場合
名前に「内」がはいってる人検索する場合

SELECT*FROMusersWHEREnameLIKE'%内%'

複数の条件を組み合わせる場合
論理演算子を使用する。
名前に「内」が入っていて、年齢が35歳以上の方を検索する場合

SELECT*FROMusersWHEREnameLIKE'%内%'ANDage>=35;

更に複数条件をつけるとき
名前に「内」が入っていて、年齢が35歳以上の方か、女性の方の場合
( )がないとORが優先されて前の条件は無視される。

SELECT*FROMusersWHEREnameLIKE'%内%'AND(age>=35ORgender="女")

注意点

例えば、「UPDATE」と「DELETE」使い複数条件で書き換えたり、削除したりする場合、条件を間違えて実行してしまうと間違った条件で書き換えたり、削除してしまうので、必ず、「SELECT」で確認して、その後に「UPDATE」と「DELETE」をした方が安全

sqlの演算子

演算子意味
=等しい
!= , <>等しくない
>より大きい
<より小さい
>=以上
<=以下
IN列挙した要素の中から探す
NOTIN列挙した要素以外のもの
BETWEEN範囲以内
LIKE文字列の部分一致

複数条件を「論理演算子」でつないで検索することもできる

演算子意味
NOT否定
ANDかつ
ORまたは

集計・並べ替え構文

先に
GROUP BY
指定したカラムを基準にしてグループを作ってその中で計算する。

ORDER BY
指定したカラムの値を対象にソートする

男性、女性の年齢の平均を調べたいとき

SELECTgender,AVG(age)FROMusersGROUPBYgender;

☝年齢というカラムを基準に平均を計算する

男性、女性の人数を調べたいとき

SELECTgender,COUNT(*)FROMusersGROUPBYgender;

名前をあいうえお順に並べたいときは

SELECT*FROMusersORDERBYname;

これだと、文字コード順に並んでしまう。
日本語には一つの漢字で複数の読み方がある。
「あいうえお」順に並べたいときは
「ふりがな」という」カラムを用意する。

SELECT*FROMusersORDERBYname_kana;

表示する件数を指定する場合は「LIMIT」

SELECT*FROMusersLIMIT10;

Viewing all articles
Browse latest Browse all 21109

Trending Articles