メモ begginTransaction()をつけるとインサートやアップデートで失敗する CREATEテーブルは遅いが、大量データのUPDATEやSELECTは早い 主な特徴・ポイント 1. メモリ最適化テーブル(Memory-Optimized Tables)
カテゴリー: SQL
SQLの実行 PDOオブジェクト、PDO Statementオブジェクト
PDOオブジェクト データベースに接続するためのオブジェクトであり、query関数を使うことでクエリを実行し、PDO Statementオブジェクトを取得できる。 プレースホルダーを使用したクエリを実行するには、PDOオブジェクトを使用してPDOStatementオブジェクトを取得し、その後、それを使用してクエリを実行する。 以下例 PDO Statementオブジェクト PHPからSQLを実行す…Continue reading SQLの実行 PDOオブジェクト、PDO Statementオブジェクト
SQL nullと文字列の比較
nullとの比較 SQLであるカラムと文字列を比較したとき、そのカラムがNullだと条件に当てはまらなくなる。 以上のような場合、CLMがNullだと当てはまらないのは当然だが、 以下はどうだろう? ‘a’ という文字列以外のなので、CLMがNullの行も取得できそうな気がする。 しかし、取得できない。 CLMがNullの場合、比較されないので、行は取得できない。 ISNU…Continue reading SQL nullと文字列の比較
SQLserverとMySQLの主なクエリの違い
使ってみて気づいた違いを書いていきます。 随時追加予定。 ISNULL -> COALESCE NULLのときの値置換 WITH (NOLOCK) 使えない のようなSQLを実行しないといけない。 VARCHARではなくCHARで指定 文字列を固定長でキャスト GETDATE()ではなくNOW() ほかにCURRENT_TIMESTAMP()がある。ほぼ同じ。 テーブル作成時、サーバー接続時…Continue reading SQLserverとMySQLの主なクエリの違い
SQL serverからMySQLへデータ移行(スクリプト化して移行が簡単)クエリでCSVインポート
MySQL WorkbenchやSQL Server Integration Servicesを使わずに、 スクリプトで移行する方法を試す。 データベースのスクリプト化 SQLserverにて、移行したいデータベースを右クリック「タスク」→「スクリプトの生成」→「次へ」→ データベース全体か特定のデータベースを選択 →テーブルを選択したら「次へ」→ 詳細設定の部分で、「スクリプトを作成するデータの…Continue reading SQL serverからMySQLへデータ移行(スクリプト化して移行が簡単)クエリでCSVインポート
SQL Server 複数の値をバインドするとき
PDOException: SQLSTATE[IMSSP]: Tried to bind parameter number 65536. SQL Server supports a maximum of 2100 parameters 何もせずにただbindValueを使って実行すると上記のエラーが出たり、訳が分からなかった。 解決方法 SQL serverにてプレースホルダー(名前付きバインドパ…Continue reading SQL Server 複数の値をバインドするとき
WHERE句内でCASE文を使うとき、THENには比較演算子は使えない (SQL Server)
タイトルの通り。 SQL Serverでは、WHERE句内でCASE文を使用する際に、THEN句内で比較演算子を直接使用することはできません。比較演算子を使用するためには、CASE文の結果を一時的な列に格納し、その列をWHERE句で使用する必要があります。 ChatGPT SQLのWHERE句内で条件分岐したいときがある。 通常下のように のような感じ書くことが多いだろう。 しかし、 GENDER…Continue reading WHERE句内でCASE文を使うとき、THENには比較演算子は使えない (SQL Server)
SQL Server サブクエリを使ったInsert
カラムの数は合わせる必要がある。 テーブル作成時にInsert 番号を順番に振ってアップデート すでにあるテーブルのデータのとあるカラムに上から順番に番号を振りたいとき まず順番に番号を振ったテーブルを作る このとき、アップデートしたいテーブルの何か一意のデータが必要。 方法はいろいろあるが、numberカラムにidentityをつける。 テーブルを右クリック、IDENTITY設定を「はい」にする…Continue reading SQL Server サブクエリを使ったInsert
SQLでの日付比較での注意点 うまく条件分岐できない、データが取れない
カラムの型を確認する SQLで日付比較をするときカラムがDate型でも、’2023/01/01’ というような文字列で渡していないだろうか? となるようなSQLだとうまく条件に当てはまらない日付がでることもある。 ほとんどのDBでは、カラムに対して、値が自動的に型変換される。 この場合、渡した’2023/01/01’が日付型に変換されるだろう。 0が…Continue reading SQLでの日付比較での注意点 うまく条件分岐できない、データが取れない
SQL Server 異なるサーバー間 (違うDB)でテーブルをコピーしたいとき 簡単な方法
別のデータベースのテーブルからデータをコピー (テーブル構造はコピーできない) 異なるサーバー、もしくは違うDBからいくつかのテーブル内のデータをコピーしたい場合。 自分の開発用と、共有の開発サーバーがあったとする。 共有サーバーから、更新されたテーブルを取得したいとき、 一番簡単な方法は、ウィザードを使う方法である。 データのインポート、エクスポートウィザードを使う この方法はテーブルのカラムに…Continue reading SQL Server 異なるサーバー間 (違うDB)でテーブルをコピーしたいとき 簡単な方法