こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムや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には以下のものがあります。
- Oracle Database:世界中で広く使用されている、大規模かつ複雑なシステムのデータベース管理に向いている。
- Microsoft SQL Server:Windows環境での利用が多い、オンプレミスかクラウドのどちらでも使用可能。
- MySQL:オープンソースで無料で利用可能な、小規模なウェブアプリケーションなどでよく使用される。
- PostgreSQL:オープンソースで無料で利用可能な、高度な機能や拡張性に優れたDBMS。
- 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をインストールする方法を以下に示します。
- MySQLの公式サイトからインストーラーをダウンロードします。
- MySQLの公式サイトは以下のURLからアクセスできます。
https://www.mysql.com/ - ダウンロードしたインストーラーを実行します。
- インストールウィザードに従って、必要な情報を入力します。例えば、インストール先のパスワード、MySQLサーバーのポート番号などです。適宜設定を変更し、「次へ」ボタンをクリックして進みます。
- インストールを進めていくと、データベースの管理者(root)のパスワードを設定するように求められます。パスワードを入力し、「次へ」ボタンをクリックします。
- インストールを続けると、MySQLサービスが自動的に開始されます。
以上で、WindowsにMySQLをインストールする手順は完了です。
dbeaverのインストール方法
DBEaverは、オープンソースのデータベースツールであり、多くの種類のデータベースに対応しています。データベースの接続、クエリの実行、テーブルの作成や編集など、多くのデータベース操作を行うことができます。また、ビジュアルツールを使用してデータベースのスキーマを設計したり、ER図を作成したりすることもできます。DBEaverは、Windows、macOS、Linuxなど、多くのプラットフォームで使用できます。
dbeaverのインストール方法は以下の通りです。
- dbeaverの公式サイトにアクセスします。
- dbeaverの公式サイトは以下のとおりです。
- ダウンロードページから、自分の環境に合わせたインストーラーをダウンロードします。
- ダウンロードしたインストーラーを実行します。
- インストーラーが起動したら、指示に従ってインストールを進めていきます。
- インストールが完了したら、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;
というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。