【MySQL向け】SQLの基礎
今はMySQLよりMariaDBのが使われる?とか研修で聞きましたが、私は研修でMySQLを使ったのでMySQL目線のお話です。
データベースについては前記事をどうぞ。
***
SQLとは
構造化問合せ言語(Structured Query Language)
RDBMSのデータを定義・操作・制御するための言語です。
データベースはそのままだと操作ができないので、それを解決するためのものです。
国際標準化されており、様々なデータベースで利用することができます。
Java等のプログラミング言語とは違った役割を持ち、データベースのみに使われるものです。
SQLの命令文には、DDL,DML,DCLの3種類があります。
SQLを用いてデータの操作ができるRDBMSは、MySQLやMariaDB、PostgreSQL等あります。
DDL
データ定義言語(Data Definition Language)
データベースのテーブルの作成・削除など、テーブルを扱うことを目的とした命令文です。
代表的な命令文として、
CREATE:テーブルやデータベース等を作成
create user 任意のユーザ名 identified by '任意のパスワード'; --ユーザの作成
create database 任意のデータベース名; --データベースの作成
create table 任意のテーブル名; --テーブルの作成
DROP:テーブルやデータベース等を削除
drop table 任意のテーブル名; --テーブルの削除
ALTER:フィールドやテーブル等の内容の変更
alter table 任意のテーブル名 add 列名 型; --任意のテーブル名の列名に型を追加
alter table 任意のテーブル名 drop 列名; --任意のテーブル名の列名を削除
があります。
DML
データ操作言語(Data Manipulation Language)
データの追加や削除など、データを扱うことを目的とした命令文です。
代表的な命令文として、
SELECT:レコードの取得
select 列名 from テーブル名; --テーブル名から列名を取得する
select * from テーブル名; --テーブル名から全件取得する
UPDATE:レコードの更新
update テーブル名 set 列名1=値1,列名2=値2...; --テーブル名の列名を値に更新する
update テーブル名 set 列名1=900 where 列名2='2020-04-30'; --テーブル名の列名2の2020-04-30の列名1を900に更新する
DELETE:レコードの削除
delete from テーブル名; --テーブル名の情報を削除する
!whereで列指定をしないと情報全件消されてしまいます。
INSERT:レコードの挿入
insert into テーブル名 (列名1,...)values(値1,...); --テーブル名の列名1...に値1...を追加する
insert into テーブル名 values(値1,値2,...); --テーブル名の全列に値1,値2,...を追加する(値の記述は、テーブルの列と同じ順番にする必要がある)
があります。
DCL
データ制御言語(Data Control Language)
DDL,DMLの利用を制限する、制御を目的としたSQL命令文です。
権限の付与やトランザクション処理の決定・キャンセルを行います。
(DBMSによって、権限の付与・トランザクション処理の分類がDDLに分類されているものもあります)
代表的な命令文として、
GRANT:権限の付与
grant allprivileges on 任意のテーブル .* to 任意のユーザ名; --任意のユーザに全ての権限を付与する
REVOKE:権限の剥奪
grant allprivileges on 任意のテーブル .* from 任意のユーザ名; --任意のユーザから全ての権限を剥奪する
があります。
上記の2つは、データベースの全権を管理するデータベース管理者(DBA)の立場の人だけが使う命令となります。