0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-10

データベース: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のタブをクリックするとコードを書くことができる。
👇入力する

INSERT INTO users SET name="山田", 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」を変更する場合

UPDATE users SET email="cccc@vvvv.jp" WHERE id=1;

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

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

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

DELETE FROM users WHERE id=1;

#検索(SELECT)構文と WHEREの条件
id 35の方の名前を検索したい場合

SELECT id , name FROM users WHERE id=35;

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

SELECT * FROM users WHERE id=35;

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

SELECT * FROM users WHERE age<35;

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

SELECT * FROM users WHERE age IN (10, 20, 30);

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

SELECT * FROM users WHERE name LIKE '磯野%'

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

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

SELECT * FROM users WHERE name LIKE '%内%'

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

SELECT * FROM users WHERE name LIKE '%内%' AND age>=35;

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

SELECT * FROM users WHERE name LIKE '%内%' AND (age>=35 OR gender="女")

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

####sqlの演算子

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

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

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

#集計・並べ替え構文

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

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

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

SELECT gender, AVG(age) FROM users GROUP BY gender;

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

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

SELECT gender, COUNT(*) FROM users GROUP BY gender;

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

SELECT * FROM users ORDER BY name;

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

SELECT * FROM users ORDER BY name_kana;

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

SELECT * FROM users LIMIT 10;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?