-
MySQLの主な機能とは?特徴をわかりやすく解説
MySQLは、データを効率的に保存・管理するためのデータベース管理システム(DBMS)です。データベースは一般的に、データを構造化された形式で格納します。MySQLはC言語とC++で記述されており、さまざまなコンパイラでテストが行われ、バグや不整合がないことが確認されています。ここでは、MySQLの主な機能について詳しく見ていきましょう。オープンソースMySQLはオープンソースソフトウェアであり、誰でも自由にダウンロード、利用、改変することができます。無料で使用でき、理解しやすいのも大きな魅力です。ソースコードは公開されているため、必要に応じて内容を確認したり変更したりできます。ライセンスには
-
MySQLの歴史を徹底解説:誕生からオラクル買収までの歩み
MySQLは、オープンソースのSQL(構造化問い合わせ言語)データベース管理システムです。データを効率的に保存・管理するために設計されており、データベースでは一般的にデータが構造化された形式で格納されます。 MySQLの歴史年表 1981年:MySQLのコードベースとなる「Unireg」の開発がスタートしました。 1995年:スウェーデンでMySQLが誕生しました。 2000年:MySQLがオープンソース化され、誰でも自由にアクセス・利用できるようになりました。 2001年:マーティン・ミコス(Marten Mickos)がMySQLのCEOに就任しました。 2002年:スウェーデン本社
-
MySQL 8.0の新機能とは?注目すべき7つのポイントを徹底解説
MySQLは単体でも非常に強力なデータベース管理システムであり、高価で高性能な商用データベース製品が備える機能の大部分をカバーしています。標準的なSQLデータ言語を採用しており、2018年4月19日にリリースされたMySQL 8.0は、現在8.0.23が最新バージョンとして提供されています。本記事では、MySQL 8.0に導入された主な新機能について、わかりやすく解説します。アトミックDDL(Atomic DDL)アトミックDDLステートメントにより、データディクショナリへの更新やストレージエンジンの操作などが、ひとつの不可分な処理として統合されました。これにより、DDL実行中に障害が発生した
-
MySQL 8.0の新機能まとめ:追加された7つの主要機能を解説
本記事では、MySQL 8.0で新たに追加された主要機能についてわかりやすく解説します。セキュリティ、パフォーマンス、文字セットなど多方面にわたる改善点を確認していきましょう。セキュリティレベルの強化MySQL 8.0ではセキュリティレベルが大幅に改善され、DBA(データベース管理者)はアカウント管理においてより柔軟な運用が可能になりました。これにより、きめ細かな権限設定や安全なユーザー管理が実現しています。リソースグループリソースグループの作成と管理が可能になり、サーバー内で動作するスレッドを特定のグループのリソースに割り当てられるようになりました。グループの属性を使用することで、リソースの
-
MySQL 8.0で非推奨になった機能とは?主な変更点と代替手段を解説
MySQLで非推奨(Deprecated)とされた機能の一部は、今後のバージョンで削除される可能性があります。アプリケーションが特定のバージョンで非推奨となった機能を使用している場合は、できるだけ早くコードを見直し、可能な限り代替機能への移行を進めることをおすすめします。 この記事では、MySQL 8.0で非推奨となった主な機能について、カテゴリ別にわかりやすく解説します。 MySQL 8.0で非推奨となった主な機能 文字セット・認証関連 utf8mb3文字セット:非推奨となりました。代わりにutf8mb4を使用してください。 sha256_password認証:このパスワード認証方式は
-
MySQL 8.0で削除された機能とは?主な変更点と代替手段を徹底解説
MySQL 8.0では、旧バージョンで提供されていた一部の機能が廃止され、削除されました。削除された機能に依存したアプリケーションやスクリプトを運用している場合は、後述する代替手段へ移行することで、アップグレード時のトラブルを回避できます。 InnoDB関連で削除された機能 システム変数「innodb_locks_unsafe_for_binlog」が削除されました。 代わりに、同様の動作をする分離レベル「READ COMMITTED」を使用できます。 MySQL 8.0.3以降へアップグレードした場合、以前のInnoDB INFORMATION_SCHEMAビュー名を参照しているスクリプ
-
MySQLで1日より古いタイムスタンプの行を取得する方法
MySQLで1日より古いタイムスタンプの行を取得する方法MySQLで、1日より古いタイムスタンプで更新された行を取得したい場合は、from_unixtime()関数とnow()関数を組み合わせて使用します。from_unixtime()はUNIXタイムスタンプを日時形式に変換する関数で、now()は現在の日時を返します。これらを組み合わせることで、指定した期間より古いレコードを簡単に抽出できます。それでは、実際にテーブルを作成して動作を確認していきましょう。テーブルの作成まず、サンプルデータを格納するテーブルを作成します。mysql> create table demo75 -&g
-
MySQLで一意の姓(ラストネーム)を持つユーザーをすべて検索する方法
MySQLで、姓(ラストネーム)が重複していない、つまり一意の姓を持つユーザーをすべて抽出したい場合は、GROUP BY句とHAVING句にCOUNT()関数を組み合わせることで実現できます。この記事では、実際にテーブルを作成し、サンプルデータを登録したうえで、一意の姓を持つユーザーを検索するクエリを段階的に解説します。1. サンプルテーブルの作成まず、名前(firstName)と姓(lastName)を格納するテーブルを作成します。mysql> create table demo76 -> ( -> firstName varchar(20), -&
-
MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説
MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (
-
MySQLで区切り文字としてカンマを使用して1つの列を2列に分割する方法
MySQLで区切り文字(カンマ)を使って1つの列を2列に分割したい場合、SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。SUBSTRING_INDEX() は、指定した区切り文字の出現位置を基準に、文字列の左側または右側の部分を抽出できる便利な関数です。まずはサンプル用のテーブルを作成してみましょう。テーブルの作成例mysql> create table demo79 -> ( -> fullname varchar(50) -> ); Query OK, 0 rows affected (0.64 sec)次に、INSE
-
MySQLデータベースで2020-04-30ではなく30-04-2020形式の日付を表示する方法
MySQLで日付を「2020-04-30」ではなく「30-04-2020」のような形式で表示したい場合は、DATE_FORMAT()関数を使用します。構文は以下のとおりです。select date_format(yourColumnName,%d-%m-%Y) as anyAliasName from yourTableName;テーブルの作成例まず、サンプル用のテーブルを作成しましょう。mysql> create table demo80 -> ( -> due_date date -> );Query OK, 0 rows affected (0.
-
MySQLでカンマ区切りの文字列から特定の値を検索・選択する方法
カンマ区切りで保存された文字列の中に、特定の値が含まれているかを確認して行を抽出したい場合があります。そのようなときは、MySQLの FIND_IN_SET() 関数を使用すると便利です。FIND_IN_SET() は、第1引数に検索したい文字列、第2引数にカンマ区切りの文字列を指定し、見つかった位置(1始まり)を返します。見つからない場合は0が返されるため、「0より大きい」という条件と組み合わせることで、該当するレコードだけを取得できます。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo81 -> ( ->
-
MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (
-
MySQLで同じIDの行を合計する方法:GROUP BYとHAVING句の使い方
MySQLで同じIDを持つ複数の行の値を合計したい場合、「GROUP BY」句と「HAVING」句を組み合わせて使用します。この記事では、テーブルの作成からクエリの実行まで、手順を追ってわかりやすく解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成しましょう。ここでは「id」と「price」という2つのカラムを持つシンプルなテーブルを用意します。 例 mysql> create table demo84 -> ( -> id int, -> price int -> ) -> ; Query OK,
-
MySQLでテーブルの単一行にNULL値が含まれているか確認する方法
MySQLでテーブルの行内にNULL値が含まれているかどうかを確認するには、「IS NULL」演算子を使用します。WHERE句と組み合わせることで、特定のカラムがNULLである行を簡単に抽出できます。ここでは、実際にテーブルを作成し、NULL値を含む行を検索する手順を順番に見ていきましょう。 サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 例 mysql> create table demo86 -> ( -> value1 varchar(20) -> , -> value2 varchar(20)
-
Javaを使用してMySQLテーブルの値を表示する方法
MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87 -> ( -> name varchar(20), -> age int -> )
-
MySQLのLIMIT句で範囲を指定して最初の3行だけを表示する方法
MySQLのLIMIT句で範囲を指定して最初の3行を取得するMySQLでは、LIMIT句に開始位置と取得件数を指定することで、テーブルから特定の範囲の行だけを取り出すことができます。最初の3行だけを表示したい場合は、以下のような構文を使用します。select *from yourTableName limit yourStartIndex,yourEndIndex;ここで、最初の引数(yourStartIndex)は取得開始位置のオフセット、2番目の引数(yourEndIndex)は取得する行数を表します。インデックスは0から始まるため、先頭から3行を取得するには「limit 0,3」と指定し
-
MySQLで複数の行レコードを1行にまとめる方法|CASE WHENを使ったクロス集計の基本
MySQLでは、複数の行に分かれているレコードを、条件ごとに1行へまとめて表示したいケースがあります。たとえば「同じ会社の従業員データを国別に横並びで表示したい」場合などです。こうした処理には CASE WHEN を使うのが定番の方法です。本記事では、実際にテーブルを作成し、複数の行レコードを1行に結合する手順をサンプルSQL付きで解説します。1. サンプルテーブルを作成するまずは、会社名・従業員名・国名を持つテーブルを作成します。mysql> create table demo68 -> ( -> id int not null auto_increment primary
-
MySQLでスラッシュより前の値だけを表示するためにvarchar列の行を一括更新する方法
MySQLで「John/Smith」のようにスラッシュ(/)で区切られた文字列から、スラッシュより前の部分だけを取り出して列全体を更新したい場合があります。このようなときは、UPDATEコマンドとSUBSTRING_INDEX()関数を組み合わせることで実現できます。本記事では、実際のサンプルを使いながら、varchar列に保存されたスラッシュ区切りの値を、スラッシュより前の値へ一括更新する手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table demo69 -> ( -> name varchar(40) ->
-
MySQLで行を取得する際のAND演算子とOR演算子の違いとは?
MySQLにおけるAND演算子とOR演算子の違いANDとORの違いは次の通りです。ANDは、指定された両方の条件がすべて真(true)でなければ、全体の条件が真になりません。一方、ORは、どちらか一方の条件が真であれば、全体の条件が真になります。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table demo70-> (-> id int not null auto_increment primary key,-> name varchar(20),-> age int-> );Query OK, 0 r