ここは超初心者のためのSQLです。
では詳しく解説していきましょう。
SQLとは?
SQLはプログラミング言語の一つです。
データベースとは
検索や貯蓄が簡単にできるように、整理されたデータの集まりです。
本棚のように、ジャンル別に整頓して置いておくような場所のことです。
SQLでできること。
先述のデータベースを操作することができます。
大きく4つのことができます。
そしてよく使います。
- ①データの検索・抽出
- ②データの作成
- ③データの更新
- ④データの消去
詳しくは後ほど説明します。
SQLとMySQL
よくMySQLの略称がSQLと間違われますが、別物です。
SQLが言語であるのに対し、MySQLは、データベースを操作するツールです。
先ほどSQLはデータベースを扱う言語で、データベースは本棚とお話ししました。
それに対し、MySQLは、その本を取ってくれるモノです。
我々人間には、指令を出す脳があり、動かす手や足がありますが、PCの世界では、それぞれバラバラです。
SQLが指令を出す脳で、MySQLが手足です。
つまり、SQLという言語でMySQL内のデータを操作します。
SQL必要構文4選
先ほど軽く述べたように、
SQLを使いこなすために最低限覚えたいことは4つあります。
- ①データの検索・抽出
- ②データの作成
- ③データの更新
- ④データの消去
むしろこの4つのマスターで十分とも言えます。
一つずつ見ていきましょう
SELECT文
セレクト文は、データベースからデータを取り出すのに必要な構文です。
すべてのデータを取り出すのではなく、条件やキーワードなどを設定することで、求めているデータ単体を取り出すことができます。
まだ、データのイメージがついていない方はExcelを想像してください。
表があり、列と行に項目や数字が割り振られていますね。
このような表がたくさんあるのがデータベースです。
氏名 | 年齢 | 血液型 | 身長 | 体重 |
---|---|---|---|---|
山田太郎 | 20歳 | A型 | 170㎝ | 60kg |
佐藤花子 | 25歳 | O型 | 155cm | 45kg |
この表たちから必要な値を取り出すためには、3つのキーワードが主に必要になります。
①SELECT:どのデータを検索するか。
②FROM:どの表から検索するか。
③WHERE:どのような条件で検索するか。
プログラミングでは、自分で何かを実行するのではなく、
パソコンに命令を出して、なにかをしてもらいます。
なので、自分が分かるようにではなく、相手に伝わるように、というのが大事です。
簡単に例を挙げてみます。
①SELECT:子供用と書かれたタンスの
②FROM:Tシャツと書かれた引き出しの中から
③WHERE:赤色の服を取り出す
このような感じです。
今回は「人間」に指示を出すような命令文でしたが、
実際にPCに命令を出し、データを取り出してみましょう。
まず、このような表があるとします。
name | age | blood type | height | weight |
---|---|---|---|---|
山田太郎 | 20歳 | A型 | 170㎝ | 60kg |
佐藤花子 | 25歳 | O型 | 155cm | 45kg |
一番上の「name」「age」などは、ヘッダーで、その中身がいかに続いています。
①select
SELECT文では、名前・年齢・血液型・・・とある列の中からどの列を取り出すか決めることができます。
select name, age
上記のように記述すれば、name と ageの列を取り出すことができます。
しかし、このままでは、たくさんある表の中から、どの表の列を取り出せばいいのかわからないので、次のステップが必要になります。
※SELECT * と表記した場合、「すべての列」を取り出すという意味になります。
②from
②のFROMでは、どの表から取り出すのか設定できます。
表というのは一つだけとは限りません。
いくつもの表の中にいろんなデータが入っています。
team1,team2とあった場合、どの表から・・・
team1からなのかteam2からなのか指定することができます。
select name, age from team1;
上記のように記述します。
これだけでも、文は成立しますが、このままでは、すべての行の[name]と[age]を取り出すことになるので、細かな条件設定を最後にします。
感覚的に表の中に列があるので、
①表の名前
②列の名前
と指定したい気持ちですが、
①列の名前
②表の名前の順に指定します。
※理由はわかりません。列から指定することによって、複数の表に対応できる模様
③where
最後のWHEREでは条件を記述することができますので、下記で説明するコードはあくまで一例になります。
select name, age from team1 where age>'20';
上記のように記述すると、ageが20以上の人のデータを検索できます。
select age from team1 where name='山田太郎';
このようにして、山田太郎のageだけを取り出すこともできます。
以上がselect文の書き方と使い方でした。
CREATE・INSERT文
ここではCREATE文とINSERT INTO文の書き方を紹介します。
create文は新たに表を作成する構文で、
すでにある表にデータを追加するのが、insert文です。
用途が似ているので、一緒に覚えましょう。
CREATE文
CREATE文では、データの新規作成をすることができます。
TABLE以外にも作成することができますが、ここではよく使うであろう、TABLEの作成方法について解説していきます。
CREATE TABLE テーブル名(列名 データ型()・・・);
と書いていきます。
少しわかりにくいですが、「列名 データ型()」が必要な数だけ続いていきます。
SQLにおいてデータ型名は以下が主に使われますが、
詳しく説明しすぎても今は覚える必要もないので、覚えておくべきことだけ書いておきます。
数値型 | int |
decimal | |
money | |
float | |
文字列型 | char |
nchar | |
varchar | |
nvarchar | |
日付型 | datetime |
数値型では数字が格納できます。
文字列型では、文字列を格納できます。
char,nchar,varchar,nvarcharにおいては、文字数を設定することができます。
それぞれのデータ型の後に(数字)を入れることでその数字が文字数制限になります。
例:char(7)
これら4つにも微妙な違いがあります。
char | 文字数制限・半角推奨 |
nchar | 文字数制限・全角半角不問 |
varchar | 最大文字数制限・半角推奨 |
nvarchar | 最大文字数制限・全角半角不問 |
日付型では日付が格納できます。
name | age | blood-type | height | weight |
---|---|---|---|---|
山田太郎 | 20 | A | 170 | 60 |
佐藤花子 | 25 | O | 155 | 45 |
では、上記の表を作成したい場合は、以下のように書きます。(敢えて単位は外します。)
create table team1 (name nvarchar(10), age int, blood-type int, height int, weight int);
INSERT文
この構文では、データの追加をすることができます。
INSERT INTO 表名 (列名1,列名2,・・・) VALUES('値1','値2',・・・);
上記のように記述します。
テーブル(表)には、項目名(列)がありますので、列名を選択していき、その順番にVALUES()内で指定したデータが追加されていきます。
name | age | blood-type | height | weight |
---|---|---|---|---|
山田太郎 | 20 | A | 170 | 60 |
佐藤花子 | 25 | O | 155 | 45 |
この表に追加していきたい場合、
insert into team1 (name, age, blood-type,height,weight) values (田中一, 30, AB, 180, 70,);
上記のように書くと以下のようなテーブルに更新されます。
name | age | blood-type | height | weight |
---|---|---|---|---|
山田太郎 | 20 | A | 170 | 60 |
佐藤花子 | 25 | O | 155 | 45 |
田中一 | 30 | AB | 180 | 70 |
以下は作成中
UPDATE文では、UPDATE 表名 SET 列名 = 値,WHERE 条件上記のような構成になっています。
DELETE文 DELETE 表名 WHERE 条件 これだけです。
テーブルの削除というより行を削除します。
なので、whereに「年齢18歳以下」のコードを付与すれば、そのテーブルの中の18歳以下のデータを削除することができます。