PDOオブジェクト データベースに接続するためのオブジェクトであり、query関数を使うことでクエリを実行し、PDO Statementオブジェクトを取得できる。 プレースホルダーを使用したクエリを実行するには、PDOオブジェクトを使用してPDOStatementオブジェクトを取得し、その後、それを使用してクエリを実行する。 以下例 PDO Statementオブジェクト PHPからSQLを実行す…Continue reading SQLの実行 PDOオブジェクト、PDO Statementオブジェクト
カテゴリー: SQL
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)でテーブルをコピーしたいとき 簡単な方法
sql 他のテーブルを参照したいとき テーブル結合するか、しないか
sqlでの条件指定や、updateなどで、他のテーブルを参照したいとき、 書き方としては2つある。 ・テーブルを JOINさせる方法 SELECT * テーブルA INNER JOIN テーブルB ON テーブルA.カラムC = テーブルB.カラムD WHERE テーブルB.カラムE= 値 このSQLの内容としては、 WHERE: この条件に当てはまるカラムを選択。 INNNER JOIN: テ…Continue reading sql 他のテーブルを参照したいとき テーブル結合するか、しないか