SQL(基礎編1)
おはようございます自由人たち!ちゃんと大掃除してますか?
今日は、SQLについて勉強します。何をしててもぶちあたる壁を、乗り越えていきたいと思います。
SQLとは
データの入った箱を操作することば。
何ができるのか
・クマの人形を全部出して。
・50cm以下の大きさのパンダを出して。
・コアラがいるか検索して。
・ゾウをサイと間違えて入力したので訂正して。
など。
レコード(Record)
データ(情報)は横一行にひとかたまりで入っています。
データは一行ずつ入ります。
この一行のことを「レコード」と言います。
フィールド(Field)
縦の「列(Column)」のことを「フィールド」という。
テーブル(Table):表
この一行ずつデータが入ったものひとかたまりを、テーブルという。
これなら社員というテーブル👇
データベース(Data Base)とは
データをお片付けして入れた箱のこと。
データーベース管理システム(DBMS)とは?
Date Base Manegement System
データーベースを管理するシステムのこと。
たくさんの種類があります。
・「MySQL」
・「Oracle」
・「PostgreSQL」
・「Microsoft SQL Server」
・「SQLite」
・「MariaDB」
SQL文とは
SQL言語でかかれた文。
SQL文を書いてみよう
・データベースをつくる(CREATE DATABASE)
CREATE DATABASE テーブル名;
CREATE DATABASE osaka;
osakaというデータベースを作成する。
・データベースをみる(SHOW DATABASE)
SHOW DATABASES;
どんなデータベースがある表示する。
osaka
・データベースをつかう(USE)
USE テーブル名
>use osaka
osakaというテーブルを使う。
・データベースの削除(DROP DATABASE)
DROP DATABASE soz;
・テーブルをつくる(CREATE TABLE)
CREATE TABLE テーブル名(
一列目の題 型,
二列目の題 型
);
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)
SHOW TABLES;
zoo
・テーブルの削除(DROP TABLE)
DROP TABLE zoo;
もしテーブルがある場合は削除する
DROP TABLE IF EXISTS zoo;
テーブルは削除せずに、中身のレコードだけ削除する
DELETE FROM zoo;
・どんな列があるかみる(DESCRIBE)
>DESCRIBE テーブル名;
DESCRIBE zoo;
id
price
テーブルの指定した行を取り出す(SELECT)
SELECT * FROM テーブル名:
SELECT * FROM zoo;
「 * 」は全部と言う意味
SELECT name, price FROM zoo;
zooテーブルからnameとpriceの列だけを取り出す
・LIMIT(レコード数を決める)
SELECT * FROM zoo LIMIT 3;
上から3表示する。
・WHERE (条件式)
SELECT * FROM zoo WHERE 300 >= price;
・文字列で検索
SELECT * FROM zoo WHERE name='パンダ';
・LIKE(あいまい検索)
SELECT * FROM zoo WHERE LIKE 'ラ';
SELECT * FROM zoo WHERE LIKE '%ダ';
・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(条件指定)
-ー単純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(並び替え)
SELECT * FROM zoo ORDER BY price desc;
asc(昇順) desc(降順)
・GROUP BY(グループ分け)
SELECT class, count( * ) FROM zoo GROUP BY class;
・AS(名前をつける)
SELECT name AS "名前" FROM zoo;
ちなみにASの後の名前のことを「エイリアス」という。「エイリアン」を美形にした名前やな。
複数のテーブルを使う
・結合(UNION)
SELECT
*
FROM
tb1
UNION
SELECT
*
FROM
tb2;
()でくくると見やすい👇
(SELECT * FROM tb1) UNION (SELECT * FROM tb2)
・結合(JOIN ON)
(SELECT * FROM tb1) JOIN tb2 ON tb1.class=tb2.id;
・内部結合(INNER JOIN)
(SELECT * FROM tb1) INNER JOIN tb2 ON tb1.class=tb2.id;
内部結合では、どちらかがない場合は表示されない。
・外部結合(LEFT JOIN)
SELECT
td1.type,
td2.name
FROM td1 LEFT JOIN td2
ON td1.id=td2.type_id;
メインの左を左のtd1にしているので左は全部でる。右にないものはNULL。
・外部結合(RIGHT JOIN)
SELECT
td1.type,
td2.name
FROM td1 RIGHT JOIN td2
ON td1.id=td2.type_id;
メインの右を右のtd2にしているので右は全部でる。右にないものはNULL。
■ 左も右も全部出したい場合は、「UNION」を使う。
データを削除する(DELETE)
DELETE FROM テーブル名 WHERE 条件
DELETE FROM zoo WHERE size <= 50;
データを挿入する(INSERT)
INSERT INTO テーブル名 VALUES (値 , 値)
INSERT INTO zoo VALUES (7, 'ウサギ', 500, 5)
データを更新する(UPDATE)
UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 WHERE id = 1
UPDATE zoo SET price=400 WHERE name="ゾウ";
つかれたー!
MySQLを実際使ってみます。
MySQLを使ってみよう
・モニターの起動
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;
肩こったー。もう途中から記憶ないわー。
間違ってるかもしれんわー。
今日はここまで!
続きはこちら👇
なにとぞ なにとぞー