おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

2020年3月 5日 (木)

【MySQL】テーブルカラムは大文字・小文字の区別が無いので注意が必要

とあるプログラム中で、テーブル作成では大文字でカラム名が定義されているカラムに対して、 データ取得(SELECT)で気が付かず小文字で書いてしまっていたのですが、 問題無く処理されていた様でした。
実は MySQL ではカラム名の記述で大文字・小文字の区別はしていないのです。

実際に処理を見てみます。 前回の記事で AUTO_INCREMENT に関することを書きましたが、そこでのテーブルを使用します。
テーブル作成のSQL文は以下の通りです。

このテーブルはカラムが大文字で宣言されていますが、以下カラムを小文字で取得する様にしてみます。

取得するカラム名が大文字、小文字のどちらであっても問題無く取得できます。

ただし、 PHP からデータを取得した時には、1行のデータを配列で扱いますが、 その時の指標として各カラム名を使ったりします。
PHP では配列の指標では大文字と小文字の区別されるため、どちらかに統一するほうが良いと思います。
(例えば $row["id"]$row["ID"] は異なります。)

■関連記事
【MySQL】テーブルカラムは大文字・小文字の区別が無いので注意が必要
【MySQL】テーブル作成時にカラムにAUTO_INCREMENTを設定する方法について
【MySQL】テーブルカラムに後からAUTO_INCREMENTを設定する方法について
【MySQL】文字列カラムに追加で更新する方法について(CONCAT)
【MySQL】既に存在するTABLEに複数カラムを位置指定で追加する方法について(ALTERTABLE)


楽天市場

2019年11月19日 (火)

【MySQL】テーブル作成時にカラムにAUTO_INCREMENTを設定する方法について

テーブル作成時に、カラムに主キーとして設定し AUTO_INCREMENT に設定する場合は以下のSQL文で作成できます。

AUTO_INCREMENT の設定されたテーブルへの追加は以下の様に行います。
AUTO_INCREMENT のカラムへ値を設定しなくても、自動で値が設定されていきます。

上の実行からも分かる様に、気をつけたいのは AUTO_INCREMENT のカラムへ途中で値を設定した場合には、その値から AUTO_INCREMENT の値が開始されます。



■関連記事
【MySQL】テーブルカラムは大文字・小文字の区別が無いので注意が必要
【MySQL】テーブル作成時にカラムにAUTO_INCREMENTを設定する方法について
【MySQL】テーブルカラムに後からAUTO_INCREMENTを設定する方法について
【MySQL】文字列カラムに追加で更新する方法について(CONCAT)
【MySQL】既に存在するTABLEに複数カラムを位置指定で追加する方法について(ALTERTABLE)

【MySQL】テーブルカラムに後からAUTO_INCREMENTを設定する方法について

仕事の中、テーブルカラムに主キーは設定していたのですが AUTO_INCREMENT に設定する 必要が出てきたので調べてみました。
以下のSQL文で設定できます。

但し、これは指定された「カラム名」が主キーの設定がされていないとエラーが発生しますので、 以下の様に主キーの設定も合わせて行います。


■関連記事
【MySQL】テーブルカラムは大文字・小文字の区別が無いので注意が必要
【MySQL】テーブル作成時にカラムにAUTO_INCREMENTを設定する方法について
【MySQL】テーブルカラムに後からAUTO_INCREMENTを設定する方法について
【MySQL】文字列カラムに追加で更新する方法について(CONCAT)
【MySQL】既に存在するTABLEに複数カラムを位置指定で追加する方法について(ALTERTABLE)


2019年10月 4日 (金)

【SQL-Server】WITH句を使った再帰処理で連番の生成

WITH句 の中で自分自身を読んでやれば再帰的に処理が行われる様です。 以下のSQLでは連番を生成する処理を再帰処理で行っています。

このSQLを実行すると以下の様になります。

With21


但し、このままでは100件までの再帰処理しかできない様で、「SEQNO < 102」と指定すると以下の様にエラーが発生します。
メッセージ 530、レベル 16、状態 1、行 1
ステートメントが終了しました。ステートメントの完了前に最大再帰数 100 に達しました。

With22

このエラーも OPTION (MAXRECURSION nnn) として指定し「nnn」に101以上を指定すればできることになります。
尚、 MAXRECURSION の範囲は「0」~「32767」で「0」指定は制限が無い様です。 制限無しでもあまりに大きい値は問題有りだとは思います。
楽天市場

【SQL-Server】WITH句を使って同一処理SQLを複数回利用する

SELECT文において副問合せを使うことはよくありますが、 全く同じ副問合せを何度も記述することはSQL的にも非効率です。
そこで WITH句 の登場なのですが、 この句を用いて何度も利用するSELECT文を宣言し、 それをその後に続くSQLの中の FROM句 の中で利用できます。
以下の様なテストテーブル「TEST1」があるとします。 このテーブルに対して WITH句 を使ってみます。

With10

TEST1のCODE2が「3」のデータを全て抽出するSELECTを WITH句 として宣言し、 さらにその WITH句 を2回使用するSQLが以下の様になります。

WITH句 では「CODE1」が「1」と「4」のデータを抽出します。 それ以降の SELECT文 では「CODE2」が「1」と「3」のものを UNION しています。 このSQLを実行すると以下の様になります。

With11


楽天市場