MySQL

 Computer >> コンピューター >  >> プログラミング >> MySQL
  1. MySQLでNULLを許可しつつデフォルト値を空文字列(NULLではない)に設定したカラムを作成する方法

    NULLを許可し、デフォルト値が空文字列のカラムを作るにはテーブルに「NULLは許可するが、デフォルト値にはNULLではなく空文字列()を設定する」カラムを追加したい場合は、DEFAULTキーワードを使用します。構文は以下の通りです。ALTER TABLE テーブル名 ADD カラム名 データ型 NULL DEFAULT ;それでは、実際の例を見ていきましょう。1. サンプルテーブルの作成まず、動作を確認するためのテーブルを作成します。テーブル作成のクエリは以下の通りです。mysql> CREATE TABLE AllowNullDefaulNotNullDemo -> (

  2. MySQLで数字で終わるレコードの文字列を取得する方法(REGEXP活用)

    数字で終わる文字列を抽出するにはMySQLで「数字で終わる文字列」を持つレコードを取得したい場合は、正規表現によるパターンマッチングが可能な REGEXP 演算子を使用します。基本の構文は以下のとおりです。select * from テーブル名 where カラム名 REGEXP [[:digit:]]$;ここで [[:digit:]]$ は「文字列の末尾が0〜9のいずれかの数字であること」を意味する正規表現パターンです。それでは、実際にテーブルを作成して動作を確認してみましょう。サンプルテーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table St

  3. MySQLで1つのカラムに複数の値を一度に挿入する方法

    MySQLで単一カラムに複数行を挿入する基本構文MySQLでは、INSERT文を繰り返し実行しなくても、1つのクエリで単一のカラムに複数の値を挿入できます。基本的な構文は以下のとおりです。INSERT INTO テーブル名(カラム名) VALUES(値1),(値2),(値3),(値4),.........N;このように、VALUES句の後に複数の値セットを括弧で囲んでカンマ区切りで並べるだけで、1回の実行で複数行を登録できます。サンプルテーブルの作成それでは、実際に動作を確認するためにテーブルを作成してみましょう。テーブル作成のクエリは以下のとおりです。mysql> create tab

  4. TTL(Time to Live)の対象となるMySQLレコードの作成方法|イベントスケジューラで自動削除を実現

    MySQLデータベースでTTL(Time To Live:生存期間)を設定し、期限切れのレコードを自動的に削除したい場合は、MySQLイベントスケジューラ(Event Scheduler)を利用します。イベントスケジューラは、あらかじめ定義したスケジュールに従ってSQL処理を自動実行してくれる仕組みで、「毎日1回、有効期限を過ぎたレコードを削除する」といった運用を簡単に実現できます。全体の流れサンプル用のテーブルを作成するINSERT文でテストデータを登録するSELECT文で登録内容を確認する毎日実行される削除イベント(CREATE EVENT)を作成する手順1:サンプルテーブルを作成するまず

  5. MySQLのSELF JOIN(自己結合)の使い方をわかりやすく解説

    SELF JOIN(自己結合)とは、同じテーブル同士を結合するSQLのテクニックです。例えば、同一テーブル内のある行と別の行を比較したい場合や、組織図のように「上司と部下」の関係を調べたい場合などに活用されます。この記事では、実際にサンプルテーブルを作成しながら、MySQLでのSELF JOINの基本的な使い方を順を追って解説します。 サンプルテーブルの作成 まず、SELF JOINを試すためのテーブルを作成します。以下のCREATE TABLE文を実行してください。 mysql> create table SelfJoinDemo -> ( -> Id i

  6. MySQLでユーザーに権限を付与してもアクセス拒否される場合の対処法(FLUSH PRIVILEGES)

    MySQLで新しいユーザーのアクセスが拒否される原因MySQLで新しいユーザーを作成し、すべての権限を付与した後でも、そのユーザーでログインできない・アクセスが拒否されるというトラブルはよく発生します。この場合、多くの原因は権限情報がまだメモリに反映されていないことにあります。MySQLでは、ユーザーの作成や権限の付与を行った後、FLUSH PRIVILEGESを実行することで、権限テーブルの変更を再読み込みし、新しい設定を有効にする必要があります。FLUSH PRIVILEGESの構文構文は非常にシンプルで、以下の通りです。FLUSH PRIVILEGES;実際の操作手順ここでは、新しいユー

  7. MySQLで複数のSELECT結果を統合する方法:GROUP BY句とHAVINGの活用テクニック

    はじめにMySQLで複数のSELECT条件に一致するレコードをまとめて取得したい場合、GROUP BY句とHAVING句を組み合わせることで実現できます。本記事では、具体的なサンプルテーブルを作成しながら、その手順をわかりやすく解説します。サンプルテーブルの作成まずは、動作確認用のテーブルを作成しましょう。以下のSQLを実行して、部屋とサービスの関連情報を管理するテーブルを定義します。mysql> create table MergingSelectDemo -> ( -> RoomServicesId int, -> RoomId int,

  8. MySQLクエリ結果で列の値を列名として設定する方法(CASE文によるピボット変換)

    MySQLクエリ結果で列の値を列名として設定する方法 MySQLのクエリ結果において、列に格納された値そのものを列名(見出し)として表示したいケースがあります。これは「縦持ちデータ」を「横持ちデータ」へ変換する、いわゆるピボット(クロス集計)処理と呼ばれる手法です。SQL ServerなどにあるPIVOT句はMySQLには存在しないため、代わりにCASE文と集計関数を組み合わせて実現します。 基本構文 以下が基本的な書き方です。CASE文で条件に一致する行だけ対象の値を返し、MAX関数でNULL以外の値を集約することで、1行1列の形式に変換します。 select yourIdColumnNa

  9. MySQLでROW_NUMBER()の代替を実現する方法(ユーザー変数を活用)

    MySQLにおけるROW_NUMBER()の代替手法MySQL(8.0より前のバージョン)には、SQL ServerやPostgreSQLのようなROW_NUMBER()ウィンドウ関数が組み込みで存在しません。しかし、ユーザー定義変数を活用することで、ROW_NUMBER()と同等の連番を簡単に生成できます。基本的な構文は以下の通りです。SELECT (@yourVariableName:=@yourVariableName + 1) AS `anyAliasName`, yourColumnName1, yourColumnName2, ...N FROM yourTableName, (S

  10. MySQLでテーブルの全行数を正確にカウントする方法(COUNT(*)の使い方)

    MySQLでテーブル内のすべての行を正確にカウントしたい場合は、集計関数であるCOUNT(*)を使用します。COUNT(*)を使えば、NULL値が含まれる行や重複データも含めて、テーブル内の全行数を正確に取得できます。COUNT(*)の基本構文行数をカウントするための基本的な構文は以下のとおりです。select count(*) as 任意の別名 from テーブル名;サンプルテーブルの作成実際の動作を確認するために、まずサンプルテーブルを作成しましょう。テーブルを作成するクエリは次のとおりです。mysql> create table CountAllRowsDemo-> (-&g

  11. MySQLで文字列の最初の1か所だけを置換する方法(CONCAT・REPLACE・INSTR関数の活用)

    はじめにMySQLのREPLACE()関数は便利ですが、そのまま使うと文字列内に出現するすべての該当文字が置換されてしまいます。「最初に出現した1か所だけを置換したい」というケースでは、CONCAT()とREPLACE()関数を組み合わせることで実現できます。この記事では、ユーザー定義のセッション変数を使った具体的な手順を解説します。ステップ1:セッション変数に対象の文字列を設定するまず、テスト用の文字列をユーザー定義セッション変数に格納します。ここでは「Thks ks is a my string」という文字列を使用し、この中の最初の「k」だけを「i」に置換することを目標とします。mysql

  12. MySQLクエリでタイムスタンプの一部を抽出する方法|YEAR()関数の使い方を解説

    MySQLでタイムスタンプの一部を選択するには?MySQLのクエリでタイムスタンプから特定の部分(年・月・日など)だけを取り出したい場合は、YEAR() 関数を使用します。YEAR()関数は、TIMESTAMP型やDATETIME型のカラムから「年」の部分のみを抽出してくれる便利な関数です。基本構文SELECT YEAR(タイムスタンプカラム名) AS 別名 FROM テーブル名;実際に試してみよう:サンプルテーブルの作成それでは、上記の構文を理解するために、実際にテーブルを作成してみましょう。以下がテーブル作成用のクエリです。mysql> CREATE TABLE SelectPart

  13. JavaでMySQLに接続した際の「サーバーのID検証なしでSSL接続を確立することはお勧めしません」という警告を無効化する方法

    Javaからデータベースへ接続する際に表示されるSSL警告を無効化したい場合は、JDBC URLに autoReconnect=true&useSSL=false を追加します。基本的な記述方法autoReconnect=true&useSSL=falseJDBC URL全体の書式は以下のとおりです。yourJdbcURL = jdbc:mysql://localhost:yourPortNumber/yourDatabaseName?autoReconnect=true&useSSL=false;警告が表示される仕組みuseSSL=false を指定しない場合、以下の

  14. MySQLでサブクエリを正しく括弧で囲む方法

    MySQLでは、サブクエリを使用する際に必ず丸括弧( )で囲む必要があります。括弧で囲まれていないサブクエリは構文エラーになるため、注意が必要です。基本構文サブクエリを正しく囲むための基本的な構文は以下の通りです。select if((select count(*) from テーブル名), Yes, No) as 別名;この構文では、IF関数の中にサブクエリを配置しています。サブクエリの結果(レコード数)が0より大きければ「Yes」を、0であれば「No」を返します。動作確認用テーブルの作成実際に動きを理解するために、まずサンプルテーブルを作成しましょう。テーブル作成クエリは以下の通りです。m

  15. MySQLでタイムスタンプ値を昇順に並べ替える方法:TIMESTAMP()関数とORDER BYの使い方

    MySQLでは、TIMESTAMP()関数とORDER BY ASCを組み合わせることで、タイムスタンプ値を昇順(古い順)に並べ替えることができます。基本構文TIMESTAMP()関数を使って昇順にソートする場合の基本構文は以下の通りです。SELECT timestamp( yourTimestampColumnName ) as anyAliasName From yourTableName order by 1 ASCここで order by 1 の「1」は、SELECT句の1番目のカラム(この場合はエイリアスを付けたTIMESTAMP()の結果)を基準に並べ替えることを意味します。サンプ

  16. MySQLでLIMIT使用時に行の総数を取得する方法【SQL_CALC_FOUND_ROWS】

    MySQLでLIMIT句を使ったページネーションなどを実装する際、「LIMITを付けなかった場合の総行数」を知りたいケースはよくあります。そんなときに便利なのが、SELECT文に付加できるSQL_CALC_FOUND_ROWSオプションです。 SQL_CALC_FOUND_ROWSの基本構文 LIMIT使用時に行の総数を取得するには、次の構文を使用します。 select SQL_CALC_FOUND_ROWS * FROM yourTableName LIMIT 0,yourLastValue; SQL_CALC_FOUND_ROWSを指定すると、LIMIT句があっても、あたかもLIMITが存

  17. 【初心者向け】MySQLで外部キーを作成する構文を解説

    MySQLで外部キー(FOREIGN KEY)を作成する際の基本的な構文は、以下の通りです。 ALTER TABLE 子テーブル名 ADD CONSTRAINT 制約名 FOREIGN KEY(外部キー列名) REFERENCES 親テーブル名 (主キー列名); サンプルテーブルを作成して理解しよう 上記の構文を実際に理解するために、「部署テーブル」と「社員テーブル」の2つのテーブルを作成してみましょう。 1. 親テーブル(Department_Table)の作成 まず、親となる部署テーブルを作成します。使用するクエリは次の通りです。 mysql> CREATE TABLE Depart

  18. MySQLにシングルクォート(')などの特殊文字を挿入する方法

    MySQLにシングルクォート()のような特殊文字を挿入するには、エスケープ文字「\」を使用する必要があります。エスケープ処理を行わないと、文字列の区切りと誤認識され、構文エラーが発生してしまいます。基本構文insert into テーブル名(カラム名) values(値\s);実際の使用例それでは、具体的な例を見ていきましょう。まずはテスト用のテーブルを作成します。以下がテーブル作成のクエリです。mysql> create table AvoidInsertErrorDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY

  19. MySQLで1970年より前の日付を扱う方法|DATE型の範囲と使い方を実例で解説

    MySQLで1970年より前の日付を扱いたい場合は、DATE型を使用するのが効果的です。DATE型は西暦1000年から9999年までの日付を保存できるため、歴史上の日付や古い生年月日なども問題なく管理できます。ただし、DATE型は日付部分のみを扱うデータ型であり、時刻情報は保持しません。時刻も一緒に管理したい場合は、DATETIME型などの利用を検討してください。MySQLにおけるDATE型の基本仕様MySQLのDATE型は、次の形式で日付データを表現します。YYYY-MM-DD取り扱える日付の範囲は以下の通りです。開始日:1000-01-01終了日:9999-12-31この範囲を超える日付を

  20. MySQLでTIME型の値から秒を省いて表示する方法

    MySQLのTIME型カラムには「09:30:35」のように秒まで格納されていますが、画面表示などでは「9:30」のように時と分だけを扱いたいケースがよくあります。そのような場合は、DATE_FORMAT()関数を使うことで、秒を省いた形式に整形できます。DATE_FORMAT()の基本構文SELECT DATE_FORMAT(yourColumnName,%k:%i) as anyAliasName FROM yourTableName;フォーマット指定子として「%H:%i」を使っても同じ結果が得られます。「%k」は先頭のゼロなしの時(0〜23)、「%H」は先頭にゼロを付けた時(00〜23)

Total 4564 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:137/229  20-コンピューター/Page Goto:1 131 132 133 134 135 136 137 138 139 140 141 142 143