ひよっこSEの備忘録

20卒の未経験エンジニアの日々の備忘録です。

【MySQL向け】SQLの基礎

今はMySQLよりMariaDBのが使われる?とか研修で聞きましたが、私は研修でMySQLを使ったのでMySQL目線のお話です。

 

データベースについては前記事をどうぞ。

nekomurasan.hatenablog.com

 

***

 

 

SQLとは

構造化問合せ言語(Structured Query Language)

RDBMSのデータを定義・操作・制御するための言語です。

データベースはそのままだと操作ができないので、それを解決するためのものです。

国際標準化されており、様々なデータベースで利用することができます。

Java等のプログラミング言語とは違った役割を持ち、データベースのみに使われるものです。

SQLの命令文には、DDL,DML,DCLの3種類があります。

 

SQLを用いてデータの操作ができるRDBMSは、MySQLMariaDBPostgreSQL等あります。

 

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)の立場の人だけが使う命令となります。