見出し画像

SQL(基礎編1)

おはようございます自由人たち!ちゃんと大掃除してますか?

今日は、SQLについて勉強します。何をしててもぶちあたる壁を、乗り越えていきたいと思います。

SQLとは

画像1

データの入った箱を操作することば。

画像2

何ができるのか

画像3

・クマの人形を全部出して。
・50cm以下の大きさのパンダを出して。
・コアラがいるか検索して。
・ゾウをサイと間違えて入力したので訂正して。
など。

画像4

レコード(Record)

画像5

データ(情報)は横一行にひとかたまりで入っています。

画像6

データは一行ずつ入ります。

この一行のことを「レコード」と言います。

画像7

フィールド(Field)

画像8

縦の「列(Column)」のことを「フィールド」という。

画像9

テーブル(Table):表

画像10

この一行ずつデータが入ったものひとかたまりを、テーブルという。

これなら社員というテーブル👇

画像11

データベース(Data Base)とは

画像12

データをお片付けして入れた箱のこと。

画像13

データーベース管理システム(DBMS)とは?

画像14

Date Base Manegement System

データーベースを管理するシステムのこと。

画像15

たくさんの種類があります。

・「MySQL」
・「Oracle」
・「PostgreSQL」
・「Microsoft SQL Server」
・「SQLite」
・「MariaDB」

SQL文とは

画像16

SQL言語でかかれた文。

画像17

SQL文を書いてみよう

画像18

・データベースをつくる(CREATE DATABASE)

画像19

CREATE DATABASE テーブル名;
CREATE DATABASE osaka;

osakaというデータベースを作成する。

・データベースをみる(SHOW DATABASE)

画像20

SHOW DATABASES;

どんなデータベースがある表示する。

osaka

・データベースをつかう(USE)

画像21

USE テーブル名
>use osaka

osakaというテーブルを使う。

・データベースの削除(DROP DATABASE)

DROP DATABASE soz;

・テーブルをつくる(CREATE TABLE)

画像22

CREATE TABLE テーブル名(
    一列目の題 型,
    二列目の題 型
);

画像23

CREATE TABLE zoo(
    id INT PRIMARY KEY,
    price INT
);
zooというテーブルができた。

[ 型 ]
INT PRIMARY KEY➡️主キー
INT➡️数値
INT AUTO_INCREMENT PRIMARY KEY➡️一意の連番
VARCHAR(10)➡️10文字以内の文字(可変長)
TEXT➡️長い文字列(65535文字まで)
LONGTEXT➡️長い文字列(4294967295)

・どんなテーブルがあるかみる(SHOW TABLES)

画像24

SHOW TABLES;

zoo

・テーブルの削除(DROP TABLE)

画像24

DROP TABLE zoo;

画像48

もしテーブルがある場合は削除する

DROP TABLE IF EXISTS zoo;

テーブルは削除せずに、中身のレコードだけ削除する

DELETE FROM zoo;

画像47

・どんな列があるかみる(DESCRIBE)

画像25

>DESCRIBE テーブル名;
DESCRIBE zoo;

id
price

テーブルの指定した行を取り出す(SELECT)

画像56

画像27

SELECT * FROM テーブル名:
SELECT * FROM zoo;

「 * 」は全部と言う意味

画像28

SELECT name, price FROM zoo;

zooテーブルからnameとpriceの列だけを取り出す

画像29

・LIMIT(レコード数を決める)

SELECT * FROM zoo LIMIT 3;

上から3表示する。

画像50

・WHERE (条件式)

画像61

SELECT * FROM zoo WHERE 300 >= price;

画像30

・文字列で検索

SELECT * FROM zoo WHERE name='パンダ';

画像51

・LIKE(あいまい検索) 

SELECT * FROM zoo WHERE LIKE 'ラ';

画像53

SELECT * FROM zoo WHERE LIKE '%ダ';

画像53

・NOT LIKE(あいまい検索)〜を含まない

SELECT * FROM zoo WHERE NOT LIKE '%ダ';

・空の場合(IS NULL)

SELECT * FROM zoo WHERE price IS NULL;

・空でない場合(IS NOT NULL)

SELECT * FROM zoo WHERE price IS NOT NULL;

・複数条件(AND) 〜であり〜

SELECT * FROM zoo WHERE price>=50 AND price<800;

・複数条件(OR) 〜あるいは〜

SELECT * FROM zoo WHERE price<=50 OR price>800;

・CASE WHEN(条件指定)

画像61

-ー単純CASE式
SELECT
CASE color
   WHEN '赤' THEN 1
   WHEN '青' THEN 2
   ELSE 99
END
FROM soz

--検索CASE式
SELECT
CASE
   WHEN color = '赤' THEN 1
   WHEN color = '青' THEN 2
   ELSE 99
END
FROM soz

・ORDER BY(並び替え)

画像61

SELECT * FROM zoo ORDER BY price desc;
asc(昇順) desc(降順)

画像31

・GROUP BY(グループ分け)

画像61

SELECT class, count( * ) FROM zoo GROUP BY class;

画像32

・AS(名前をつける)

SELECT name AS "名前" FROM zoo;

画像33

ちなみにASの後の名前のことを「エイリアス」という。「エイリアン」を美形にした名前やな。

画像49

複数のテーブルを使う

画像61

・結合(UNION)

    SELECT
        *
    FROM
        tb1    
UNION
    SELECT
        *
    FROM
        tb2;

()でくくると見やすい👇

(SELECT * FROM tb1) UNION (SELECT * FROM tb2)

画像59

・結合(JOIN ON)

画像62

(SELECT * FROM tb1) JOIN tb2 ON tb1.class=tb2.id;

画像60

・内部結合(INNER JOIN)

画像63

(SELECT * FROM tb1) INNER JOIN tb2 ON tb1.class=tb2.id;

画像61

内部結合では、どちらかがない場合は表示されない。

・外部結合(LEFT JOIN)

画像64

SELECT
   td1.type,
   td2.name
FROM td1 LEFT JOIN td2
ON td1.id=td2.type_id;   

画像66

メインの左を左のtd1にしているので左は全部でる。右にないものはNULL。

・外部結合(RIGHT JOIN)

画像65

SELECT
   td1.type,
   td2.name
FROM td1 RIGHT JOIN td2
ON td1.id=td2.type_id;   

画像67

メインの右を右のtd2にしているので右は全部でる。右にないものはNULL。

■ 左も右も全部出したい場合は、「UNION」を使う。

データを削除する(DELETE)

画像56

画像35

DELETE FROM テーブル名 WHERE 条件
DELETE FROM zoo WHERE size <= 50;

画像36

データを挿入する(INSERT)

画像56

画像38

INSERT INTO テーブル名 VALUES (値 , 値)
INSERT INTO zoo VALUES (7, 'ウサギ', 500, 5)

画像39

データを更新する(UPDATE)

画像56

画像41

UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 WHERE id = 1
UPDATE zoo SET price=400 WHERE name="ゾウ";

画像42

つかれたー!

MySQLを実際使ってみます。

MySQLを使ってみよう

画像45

・モニターの起動

mysql -u root p

暗証番号を入力する。

・ユーザーを作成する

CREATE USER 'soz'@'localhost' IDENTIFIED BY '1234';

ユーザーの形式
・'◯◯'@'localhost'
・'◯◯'@'192.168.10.10'

・ユーザーの削除

DROP USER soz;

・ユーザー権限の確認

SHOW GRANTS FOR 'soz'@'localhost';

・ユーザー権限を設定する

SELECT UPDATE権限を与える
GRANT SELECT,UPDATE ON osaka.zoo TO soz; 
・全ての権限を与える(ALL)
・select、update、insert、delete、の組み合わせ
GRANT ALL ON osaka.zoo TO soz; 

肩こったー。もう途中から記憶ないわー。

間違ってるかもしれんわー。

今日はここまで!

画像43

画像44

続きはこちら👇

画像68










なにとぞ なにとぞー