最近のトラックバック

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

おすすめ本

AccRanking

Ad

2019年11月19日 (火)

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

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

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

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

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

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

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


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

楽天市場

2019年9月25日 (水)

【SQL-Server】Oracleの「CREATE OR REPLACE TABLE」に変わる方法について

SQL-Server には Oracle の様に CREATE OR REPLACE TABLE がありません。
そこで以下の様に OBJECT_ID 関数でテーブルの存在確認をし、存在すればテーブルを削除(DROP TABLE)します。
その後で、テーブルの生成(CREATE TABLE)を行います。
このテーブルでは CODE1CODE2 を主キーとして設定する例を示しています。

楽天市場