【データベース】「SQLの実践」簡単速習‼【①基本構文/MySQL】

SQL

こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。

本記事の目的は、「SQLの基本操作を知る」ことを目的としています。

【本記事のもくじ】

まず、「SQL」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。

  • 1.イントロダクション
  • 2. SQL実践

それでは、上から順番に見ていきます。
なお、本上記の方法を順番に抑えれば成果が出ます。

記事の内容は「転載 & 引用OK」問題ありません。

1.イントロダクション

SQL(Structured Query Language)は、リレーショナルデータベースを操作するための標準的なデータベース言語です。SQLは、データベースを検索、挿入、更新、削除するためのコマンドやクエリを提供します。また、SQLを使用することで、複数のテーブルから情報を取得したり、条件に基づいてデータをフィルタリングしたり、データを並べ替えたり、結合したりすることができます。

このSQL講座では、SQLの基本的な文法やコマンドを中心に学習していきます。具体的には、以下の内容をカバーします。

  • データベースとテーブルの作成
  • データの挿入、更新、削除
  • データの検索、フィルタリング、ソート、結合
  • 集計関数の使用
  • サブクエリの作成
  • テーブルの結合(JOIN)についての理解
  • ビューの作成と使用方法

この講座では、MySQLを使用して具体的な例を解説していきます。MySQLは、無料で利用できるオープンソースのリレーショナルデータベースであり、多くのWebアプリケーションやオンラインサービスで使用されています。また、MySQLは標準SQLに準拠しており、他のリレーショナルデータベースシステムと同様の文法を使用しています。

SQLの基本的な概念から、応用的なクエリまで学習できるよう、講座は簡単から難しい順に進みます。基本から学んで、実践的なスキルを身につけましょう。

DBについて

DBとは、データベース(Database)の略称で、様々な種類のデータを格納し、管理するための仕組みです。データベースには、データを保存するための構造(テーブル、フィールド、レコードなど)と、データを操作するための言語(SQLなど)があります。

データベースは、ビジネスアプリケーション、ウェブサイト、モバイルアプリケーションなど、様々なシステムで利用されています。データベースを使うことで、大量のデータを効率的に管理し、必要な情報を高速に取り出すことができます。また、データの整合性やセキュリティも確保することができます。

このように、データベースは現代社会において不可欠な存在となっています。SQLを使ったデータベース操作は、エンジニアやデータアナリストなどの多くの職種で必要とされるスキルの1つです。

DBとDBMSの違い

DB(データベース)は、データを組織化して格納するためのデータの集合体であり、DBMS(データベース管理システム)は、そのデータベースを管理するためのソフトウェアです。つまり、DBMSはデータベースを操作するためのソフトウェアであり、データベースはそのデータを格納するためのものであると言えます。DBMSは、データベースを作成・編集・削除・検索・更新するための機能を提供し、データの整合性やセキュリティの確保、バックアップやリカバリなどの機能を提供します。したがって、データベースを使用するためには、適切なDBMSを選択し、そのDBMSを使ってデータベースを操作する必要があります。

代表的なDBMS

代表的なDBMSには以下のものがあります。

  1. Oracle Database:世界中で広く使用されている、大規模かつ複雑なシステムのデータベース管理に向いている。
  2. Microsoft SQL Server:Windows環境での利用が多い、オンプレミスかクラウドのどちらでも使用可能。
  3. MySQL:オープンソースで無料で利用可能な、小規模なウェブアプリケーションなどでよく使用される。
  4. PostgreSQL:オープンソースで無料で利用可能な、高度な機能や拡張性に優れたDBMS。
  5. SQLite:ファイルベースの小規模なアプリケーションでの利用が多く、モバイルアプリやウェブブラウザで使用されることが多い。

RDBSとは

RDBMSとは、Relational Database Management System(リレーショナルデータベース管理システム)の略称で、リレーショナルデータベースを管理するためのソフトウェアです。リレーショナルデータベースは、テーブル形式でデータを管理し、複数のテーブルを関連付けることでデータの整合性を保ちながら、高速で柔軟性の高いデータの管理ができる特徴があります。RDBMSは、Oracle、MySQL、Microsoft SQL Server、PostgreSQLなどが代表的なソフトウェアです。

レコード カラム

レコードは、データベース内の一意のデータエンティティを表し、顧客、注文、在庫などの表形式のデータで表現されます。カラムは、レコード内の個々のフィールドまたは属性で、例えば、顧客テーブルの場合、名前、住所、電話番号などがカラムになります。

MySQLについて

MySQLは、オープンソースの関係データベース管理システム(RDBMS)の一つで、世界中で多くの企業やWebサイトで利用されている。MySQLは、高速な性能や安定性、拡張性、信頼性があることから、Webアプリケーションの開発や、データの蓄積・管理・分析などに広く利用されている。また、MySQLはSQL(Structured Query Language)と呼ばれる言語を使用してデータを操作することができるため、データの取得や操作が簡単に行えることも魅力の一つであります。MySQLは、オープンソースであるため、誰でも自由にダウンロードして利用することができます。

SQLについて

SQL(Structured Query Language)は、リレーショナルデータベースを操作するために使用される標準化された言語です。SQLは、リレーショナルデータベース内のデータを操作するためのさまざまな命令(クエリ)を提供します。これにより、データベース内のデータを抽出、挿入、更新、削除などを行うことができます。

SQLは、ISOとANSIによって標準化され、多くのDBMSで使用されています。SQLは、データ定義言語(DDL)とデータ操作言語(DML)の2つのカテゴリに分かれます。DDLは、データベースオブジェクトを作成、変更、削除するためのコマンドです。DMLは、データを操作するためのコマンドです。

SQLは、非常に柔軟でパワフルな言語であり、複雑なクエリを実行することができます。また、多くのDBMSに組み込まれているため、広く普及しています。

WindowsにMySQLをインストールする方法

WindowsにMySQLをインストールする方法を以下に示します。

  1. MySQLの公式サイトからインストーラーをダウンロードします。
  2. MySQLの公式サイトは以下のURLからアクセスできます。
    https://www.mysql.com/
  3. ダウンロードしたインストーラーを実行します。
  4. インストールウィザードに従って、必要な情報を入力します。例えば、インストール先のパスワード、MySQLサーバーのポート番号などです。適宜設定を変更し、「次へ」ボタンをクリックして進みます。
  5. インストールを進めていくと、データベースの管理者(root)のパスワードを設定するように求められます。パスワードを入力し、「次へ」ボタンをクリックします。
  6. インストールを続けると、MySQLサービスが自動的に開始されます。

以上で、WindowsにMySQLをインストールする手順は完了です。

dbeaverのインストール方法

DBEaverは、オープンソースのデータベースツールであり、多くの種類のデータベースに対応しています。データベースの接続、クエリの実行、テーブルの作成や編集など、多くのデータベース操作を行うことができます。また、ビジュアルツールを使用してデータベースのスキーマを設計したり、ER図を作成したりすることもできます。DBEaverは、Windows、macOS、Linuxなど、多くのプラットフォームで使用できます。

dbeaverのインストール方法は以下の通りです。

  1. dbeaverの公式サイトにアクセスします。
  2. dbeaverの公式サイトは以下のとおりです。

    https://dbeaver.io/

  3. ダウンロードページから、自分の環境に合わせたインストーラーをダウンロードします。
  4. ダウンロードしたインストーラーを実行します。
  5. インストーラーが起動したら、指示に従ってインストールを進めていきます。
  6. インストールが完了したら、dbeaverを起動します。

以上が、dbeaverのインストール方法になります。

MySQLの起動と停止方法

MySQLの起動と停止方法は、OSによって異なりますが、一般的な手順は以下の通りです。

Windowsの場合:

  • MySQLの起動:「スタートメニュー」→「すべてのプログラム」→「MySQL」→「MySQL Server 〇.〇」→「MySQL Server 〇.〇」
  • MySQLの停止:「スタートメニュー」→「すべてのプログラム」→「MySQL」→「MySQL Server 〇.〇」→「MySQL Server 〇.〇」→「MySQL Server 〇.〇の停止」

macOSやLinuxの場合:

  • MySQLの起動:ターミナルを開き、「sudo /usr/local/mysql/support-files/mysql.server start」を実行
  • MySQLの停止:ターミナルを開き、「sudo /usr/local/mysql/support-files/mysql.server stop」を実行

なお、MySQLには様々な起動・停止方法がありますので、環境によっては上記の方法が適用されない場合もあります。公式ドキュメントなどを参照して適切な手順を確認してください。

2.SQL実践

CRUD

CRUDとは、データベース管理システムにおいてデータの操作を行うための四つの基本的な機能であり、Create/INSERT(作成)、Read(読み込み)、Update(更新)、Delete(削除)の頭文字を取った用語です。これらの機能を使って、データの追加・変更・削除・参照を行うことができます。データベース管理システムのほとんどは、これらの基本操作をサポートしています。

INSERTでレコードを挿入する

INSERT文は、以下のような構文になります。

INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES (値1, 値2, ...);

例えば、employeesテーブルに新しいレコードを挿入する場合は、以下のようになります。

INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
VALUES (1001, 'John', 'Doe', '2022-03-01', 50000);

この例では、employeesテーブルにemployee_id、first_name、last_name、hire_date、salaryの5つのカラムに対して、新しいレコードを挿入しています。

employee_idには1001という値、first_nameには”John”という文字列、last_nameには”Doe”という文字列、hire_dateには”2022-03-01″という日付、salaryには50000という数値が設定されています。

なお、カラムの数とVALUES句で指定した値の数が合わない場合や、カラムのデータ型と値のデータ型が合わない場合はエラーが発生します。

また、INSERT文は一度に複数のレコードを挿入することもできます。その場合は、以下のようにINSERT文のVALUES句に複数の値を指定してカンマで区切ります。

INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
VALUES
(1002, 'Jane', 'Smith', '2022-03-01', 60000),
(1003, 'Mike', 'Johnson', '2022-03-02', 70000),
(1004, 'Sarah', 'Williams', '2022-03-03', 80000);

この例では、employeesテーブルに一度に4つのレコードを挿入しています。それぞれのレコードに対してemployee_id、first_name、last_name、hire_date、salaryの値が設定されています。

なお、INSERT文を実行する前に、対象のテーブルに対する適切な権限があることを確認してください。また、重複したレコードを挿入しようとする場合には、エラーが発生します。

SELECT, UPDATE, DELETE レコードの取り出し・更新・削除

MySQLでレコードの取り出し、更新、削除を行うには、それぞれSELECT、UPDATE、DELETE文を使用します。

  • SELECT文

SELECT文は、テーブルからレコードを取り出すために使用されます。以下は、peopleテーブルから全てのレコードを取り出す例です。

SELECT * FROM people;

SELECTの後に「*」を指定することで、テーブル内の全ての列を取り出します。また、「FROM」の後にテーブル名を指定することで、指定したテーブルからレコードを取り出します。

  • UPDATE文

UPDATE文は、テーブル内のレコードを更新するために使用されます。以下は、peopleテーブル内のidが1のレコードのnameを”Hiroshi”に変更する例です。

UPDATE people SET name = "Hiroshi" WHERE id = 1;

UPDATEの後に更新するテーブル名を指定し、SET句で更新したい列と値を指定します。また、WHERE句を使用することで、更新したいレコードを指定します。

  • DELETE文

DELETE文は、テーブル内のレコードを削除するために使用されます。以下は、peopleテーブル内のidが1のレコードを削除する例です。

DELETE FROM people WHERE id = 1;

DELETEの後にテーブル名を指定し、WHERE句を使用することで、削除したいレコードを指定します。注意点として、WHERE句を省略すると、テーブル内の全てのレコードが削除されます。

LIMIT, ORDER BY, DISTINCT

LIMIT、ORDER BY、DISTINCTは、SELECT文をより詳細に操作するために使用されるSQLキーワードです。

  • LIMIT

LIMITは、SELECT文で返される行の数を制限するために使用されます。 LIMITは、オプションでOFFSETを含むことができます。OFFSETは、最初のn行をスキップするために使用されます。

例えば、以下のクエリは、customersテーブルから3つの行を返します。

SELECT * FROM customers LIMIT 3;

また、以下のクエリは、customersテーブルから4番目から3つの行を返します。

SELECT * FROM customers LIMIT 3 OFFSET 3;
  • ORDER BY

ORDER BYは、SELECT文で返される行を並べ替えるために使用されます。 ORDER BYは、ASC(昇順)またはDESC(降順)の順序を指定できます。

例えば、以下のクエリは、customersテーブルから姓(last_name)を昇順で並べ替えた行を返します。

SELECT * FROM customers ORDER BY last_name ASC;

また、以下のクエリは、customersテーブルから年齢(age)を降順で並べ替えた行を返します。

SELECT * FROM customers ORDER BY age DESC;
  • DISTINCT

DISTINCTは、SELECT文で返される一意の値のみを返すために使用されます。DISTINCTは、1つまたは複数の列名に適用することができます。

例えば、以下のクエリは、customersテーブルから一意の国(country)の値のみを返します。

SELECT DISTINCT country FROM customers;

また、以下のクエリは、customersテーブルから一意の国(country)と都市(city)のペアの値のみを返します。

SELECT DISTINCT country, city FROM customers;

TRUNCATEでレコードを全削除する

TRUNCATE文は、指定したテーブルの全レコードを削除するSQL文です。DELETE文と同様に、テーブル内のデータを削除しますが、DELETE文とは異なり、TRUNCATE文はロールバックできないことに注意してください。また、TRUNCATE文はテーブルを削除せず、テーブルの構造は変更しません。

具体的には、以下のようにTRUNCATE文を使用します。

TRUNCATE TABLE テーブル名;

例えば、peopleというテーブルから全てのレコードを削除するには、以下のように記述します。

TRUNCATE TABLE people;

TRUNCATE文を実行すると、指定したテーブルの全てのレコードが削除されます。削除されたレコードは元に戻すことができないので、実行前に削除するレコードを確認してください。また、TRUNCATE文を使用する際には、テーブル内のデータをバックアップしておくことをおすすめします。

TRUNCATE文とDELETE文の違い

  • 動作速度:TRUNCATE文はDELETE文よりも高速に動作します。TRUNCATE文はテーブルのデータを直接削除するため、レコードが大量の場合にはDELETEよりも効率的です。

  • ロールバック:TRUNCATE文はロールバックできません。一方、DELETE文はトランザクション中にロールバックできます。

  • WHERE句:DELETE文にはWHERE句を使って特定のレコードを削除できますが、TRUNCATE文にはWHERE句がありません。TRUNCATE文はテーブル全体を削除するため、テーブルのデータを一部だけ削除する場合にはDELETE文を使用する必要があります。

  • AUTO_INCREMENT値:TRUNCATE文はテーブルを削除し、再作成するため、AUTO_INCREMENT値が初期化されます。一方、DELETE文はテーブルを削除せず、AUTO_INCREMENT値は初期化されません。

具体例として、以下のようなテーブルがあるとします。

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL
);

このテーブルから全てのレコードを削除する場合、DELETE文を使用することができます。

DELETE FROM users;

一方、TRUNCATE文を使用する場合は以下のようになります。

TRUNCATE TABLE users;

また、WHERE句を使って特定のレコードを削除する場合には、DELETE文を使用する必要があります。

DELETE FROM users WHERE id = 1;

というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。

コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。

それでは、以上です。

最新情報をチェックしよう!