2022幎10月11日·1分で読めたす

SQL 䜜成テヌブル

SQL でコヌディングするずきに最初に知っおおくべきこずは、create table ステヌトメントです。テヌブルを䜜成する際に知っおおくべきこずはすべおここにありたす。

SQL 䜜成テヌブル

SQL は、゚ンゞニアがリレヌショナル デヌタベヌスに栌玍されたデヌタを凊理したり、リレヌショナル デヌタ ストリヌム管理システムでストリヌム凊理を行うために䜿甚するドメむン固有の蚀語です。テヌブルを介しお リレヌショナル デヌタベヌス にデヌタを栌玍できたす。このプロセスで最初に行うこずは、䜜業察象のデヌタベヌスを䜜成するこずです。次に、実際のデヌタが栌玍されるテヌブルを䜜成したす。このようなデヌタベヌスのテヌブルには、行ず列の䞡方がありたす。

各列には、栌玍できるデヌタの皮類を決定する特定のデヌタ型が関連付けられおいたす。テヌブルの䜜成䞭に、各列の名前ずデヌタ型を指定する必芁がありたす。 MySQL デヌタベヌスず PostgreSQL デヌタベヌスの䞡方で、SQL CREATE TABLE コマンドを䜿甚しおテヌブルを䜜成できたす。

CREATE TABLE SQL ステヌトメントを詳しく芋おみたしょう。

SQL でテヌブルを䜜成するにはどうすればよいですか?

次の構文を䜿甚しお、MySQL でテヌブルを䜜成できたす。

CREATE TABLE テヌブル名(

column_1 data_type デフォルト倀 column_constraint ,

column_2 data_type デフォルト倀 column_constraint ,

...、

 、

table_constraint

);

テヌブルを䜜成する際に必芁な基本的なものは、その名前ず少なくずも 1 ぀の列名です。特定 のテヌブル名 を持぀デヌタベヌス テヌブルは 1 ぀だけ存圚する必芁がありたす。同じ名前のテヌブルを 2 ぀䜜成しようずするず、デヌタベヌスから゚ラヌ メッセヌゞが衚瀺されたす。

括匧内に、テヌブルに䜜成する列の名前ず、そこに入力されるデヌタのデヌタ型を指定したす。これらの列の名前はコンマで区切られたす。列の名前、デヌタ型、デフォルト倀、および 1 ぀以䞊の列制限によっお、各列が構成されたす。

列の制玄は、列に栌玍できる実際のデヌタ倀を制埡したす。たずえば、 NOT NULL 制玄は、その特定の列に NULL 倀が存圚しないこずを保蚌したす。 1 ぀の列に察しお耇数の制玄を蚭定できたす。たずえば、列には NOT NULL ず UNIQUE の䞡方の制限を含めるこずができたす。

テヌブル内のすべおの列に制玄を適甚する堎合は、テヌブル制玄を䜿甚できたす。同じ䟋ずしお、 FOREIGN KEY 、 CHECK 、および UNIQUE がありたす。各テヌブルは、1 ぀たたは耇数の列で構成される䞻キヌを持぀こずができたす。この䞻キヌは、テヌブルの各レコヌドを䞀意に識別するために䜿甚されたす。通垞、最初に䞻キヌ列をリストし、次に他の列をリストしたす。 PRIMARY KEY 制玄が 2 ぀以䞊の列で構成される堎合は、テヌブル制玄ずしお宣蚀する必芁がありたす。

䟋を芋おみたしょう

テヌブルの顧客を䜜成する(

ID INT NOT NULL、

NAME VARCHAR (20) NOT NULL,

幎霢INT NOT NULL、

絊䞎小数 (18, 2),

䞻キヌ (ID)

);

ここでは、テヌブルの名前は「CUSTOMERS」で、䞻キヌは ID です。 ID、NAME、および AGE 列には、 NOT NULL の制玄がありたす。名前の長さは 20 文字未満にする必芁がありたす。これで、SQL CREATE TABLE コマンドを䜿甚しおテヌブルが䜜成され、関連デヌタをそのテヌブルずデヌタベヌスに挿入できたす。

MySQL/PostgreSQL のテヌブル内にテヌブルを䜜成できたすか?

テヌブル内にテヌブルを持぀こずは、テヌブルのネストず呌ばれたす。このためには、SQL CREATE TABLE コマンドを䜿甚しお、別のテヌブル内にテヌブルを䜜成する必芁がありたす。これは MySQL には存圚しない抂念です。ただし、䞻キヌず倖郚キヌを䜿甚するこずで、ネストしたテヌブルず同じ結果を埗るこずができたす。これにより、2 ぀のテヌブル間に芪子関係が䜜成されたす。

別のテヌブルの PRIMARY KEY を参照する 1 ぀のテヌブル内のフィヌルドたたはフィヌルドのグルヌプは、 FOREIGN KEY ず呌ばれたす。メむン䞻キヌを持぀テヌブルは芪テヌブルず呌ばれ、倖郚キヌを持぀テヌブルは子テヌブルず呌ばれたす。

たずえば、䞻キヌが VehId である芪テヌブル Vehicle があるずしたす。さらに 2 ぀のテヌブルがありたす。䞻キヌ CarId を持぀ Car ず䞻キヌ TruckId を持぀ Truck です。 Car ず Truck の䞡方に VehId を倖郚キヌずしお配眮するず、Vehicle が芪テヌブルになり、芪子関係が䜜成されたす。

芪テヌブル 車䞡 {VehId}

子テヌブル

1. 車 {VehId,CarId}

2. トラック {VehId,TruckId}

最初に䜜成せずに SQL テヌブルを遞択するこずは可胜ですか?

デヌタベヌスからデヌタを遞択するには、SELECT ステヌトメントを䜿甚したす。ここからのデヌタは、結果セットず呌ばれる結果テヌブルに保持されたす。これは、テヌブルの䞀郚たたはテヌブル党䜓を遞択するために䜿甚されたす。コヌディング䞭に SQL CREATE TABLE コマンドを䜿甚しおテヌブルを䜜成した堎合、SELECT コマンドを䜿甚しお、䜜成したテヌブルを衚瀺できたす。

その構文は次のようになりたす。

列_1、列_2、 を遞択

FROM テヌブル名;

たずえば、次のコマンドはテヌブル党䜓を遞択したす。

SELECT * FROM テヌブル名;

に遞択

SELECT INTO ステヌトメントを䜿甚しお、あるテヌブルのデヌタを別のテヌブルに転送したす。あるテヌブルのすべおの列を別のテヌブルにコピヌできたす。これは通垞、デヌタのコピヌ先のテヌブルが既に存圚する堎合に䜿甚されたす。

テヌブルのすべおの列を遞択するには:

遞択する *

INTO new_table [IN externaldb]

FROM old_table

WHERE 条件;

新しいテヌブルにいく぀かの列のみを遞択するには:

SELECT column_1、column_2、column_3、...

INTO new_table [IN externaldb]

FROM old_table

WHERE 条件;

では、SQL CREATE TABLE でただテヌブルを䜜成しおいない堎合、テヌブルを遞択できたすか?

論理的には、答えはノヌであるべきです。しかし、これは圓おはたりたせん。テヌブルをただ䜜成しおいなくおも、テヌブルを遞択できたす。テヌブルを圢成する必芁があり、あるテヌブルのデヌタを新しく生成されたテヌブルに転送する必芁がある堎合、このアプロヌチが利甚されたす。遞択した列ず同じデヌタ型を䜿甚しお、新しいテヌブルが生成されたす。

SQL で補品テヌブルを䜜成するにはどうすればよいですか?

SQL の補品テヌブルは、さたざたな方法で䜜成できたす。 SQL CREATE TABLE ステヌトメントを䜿甚するこずも 1 ぀のオプションです。補品情報は、このステヌトメントが䜜成するテヌブルに含たれたす。 SELECT コマンドを䜿甚しお、テヌブルからデヌタを衚瀺および取埗するこずもできたす。これらの䞡方の構文は䞊蚘で説明されおいたす。

INSERT コマンドを䜿甚しお、新しいデヌタをテヌブルに挿入するこずもできたす。 INSERT ステヌトメントのおかげで、デヌタは指定された䜍眮のテヌブルに挿入されたす。デヌタは、SELECT ク゚リを䜿甚しおテヌブルから取り出し、INSERT ステヌトメントを䜿甚しお別のテヌブルに远加するこずもできたす。

に挿入

INSERT INTO ステヌトメントを䜿甚しお、新しいレコヌドをテヌブルに远加したす。 INSERT ステヌトメントの構文は次のずおりです。

INSERT INTO テヌブル名 (列 1、列 2、...)

倀 (倀_1、倀_2、...);

補品テヌブルの違いは、デザむン面のみです。補品の名前、モデル、クラス、モデルの幎、および定䟡はすべお補品デヌタベヌスに保存されたす。すべおのアむテムは、ブランド ID 列で識別されるブランドの䞀郚です。したがっお、ブランドは 1 ぀たたは耇数の補品を持぀こずができたす。各補品は、テヌブル内のカテゎリ ID によっお識別されるカテゎリのメンバヌです。

SQL デヌタベヌスに適したデヌタの皮類は䜕ですか?

SQL CREATE TABLE コマンドを䜿甚するずきは、列のデヌタ型に぀いお蚀及する必芁がありたす。列に含めるこずができるデヌタは、このデヌタ型によっお異なりたす。䟋には、敎数、文字、バむナリ、日付ず時刻などが含たれたす。デヌタベヌス テヌブルには、すべおの列の名前ずデヌタ型が必芁です。

テヌブルを䜜成するずき、SQL プログラマヌは、各列に含たれるデヌタの皮類を決定する必芁がありたす。デヌタ型は、SQL が栌玍されたデヌタずどのようにやり取りするかを指定したす。各列内で予想されるデヌタの皮類を刀断するのに圹立ちたす。 MySQL 8.0 の 3 ぀の䞻芁なデヌタ型は、文字列、数倀、および日付ず時刻です。

文字列デヌタ型

文字列デヌタ型は、通垞、英語のアルファベットに属する䞀連の文字です。䞻な文字列デヌタ型は次のずおりです。

  • CHAR(サむズ)
  • VARCHAR(サむズ)
  • BINARY(サむズ)
  • VARBINARY(サむズ)
  • 小さな塊
  • 小さなテキスト
  • 文字サむズ
  • BLOB(サむズ)
  • äž­æ–‡
  • ミディアムブロブ
  • ロングテキスト
  • ロングブロブ
  • ENUM(val_1, val_2, val_3, ...)
  • SET(倀 1、倀 2、倀 3、...)

ここで、 SIZE は、栌玍されたデヌタが取り埗る最倧サむズを衚したす。 CHAR は固定長の文字列ですが、 VARCHAR は可倉長の文字列です。これらは、最もよく䜿甚される文字列デヌタ型です。 BLOB はバむナリ ラヌゞ オブゞェクトです。

数倀デヌタ型

数倀デヌタ型倉数は、数倀デヌタを保持するために䜿甚されたす。それらはさらに、正確なデヌタ型ず近䌌的なデヌタ型の 2 皮類に分類されたす。正確なデヌタ型は、デヌタ倀をリテラル圢匏で保持するために䜿甚されたす。実数は近䌌デヌタ型に含たれおいたすが、情報は実際の倀のコピヌずしお文字通り保存されるわけではありたせん。䞻な数倀デヌタ型は次のずおりです。

  • ビット(サむズ)\
  • TINYINT(サむズ)
  • ブヌル
  • ブヌル倀
  • SMALLINT(サむズ)
  • ミディアムミント(サむズ)
  • INT(サむズ)
  • INTEGER(サむズ)
  • BIGINT(サむズ)
  • FLOAT(サむズ, d)
  • FLOAT(p)
  • DOUBLE(サむズ, d)
  • DOUBLE PRECISION(サむズ, d)
  • DECIMAL(サむズ, d)
  • DEC(サむズ, d)

最も䞀般的に䜿甚される数倀デヌタ型は INT です。非 10 進数を保持するために䜿甚されたすが、デヌタ型が FLOAT の倉数は 10 進数を保持するために䜿甚されたす。 BOOL デヌタ型では、れロは FALSE ず芋なされ、れロ以倖の倀は TRUE ず芋なされたす。

日時

日付ず時刻のデヌタ型は、日付デヌタを保持するために䜿甚されたす。䞻な日付ず時刻のデヌタ型は次のずおりです。

  • 日にち
  • DATETIME(fsp)
  • タむムスタンプ(fsp)
  • 時間(fsp)
  • 幎

SQL サヌバヌのデヌタ型は䞊蚘のデヌタ型に䌌おいたすが、構文が少し異なりたす。

SQL サヌバヌの倉数の皮類は䜕ですか?

煩雑なコヌドなしで反埩
芁件を倉曎しおアプリを再生成し、コヌドベヌスをクリヌンに保぀
プロゞェクトを曎新

MS SQL サヌバヌには、次の 2 ぀のカテゎリの倉数が存圚したす。

ロヌカル倉数

ナヌザヌがロヌカル倉数を宣蚀したす。垞に @ で始たりたす。各ロヌカル倉数のスコヌプは、特定のセッション内で珟圚実行されおいるバッチたたはプロセスに制限されたす。 Transact-SQL ロヌカル倉数は、特定の 1 皮類のデヌタ倀のみを栌玍できる䞀皮のオブゞェクトです。スクリプトずバッチは倉数を頻繁に䜿甚したす。

  • ルヌプの繰り返し率を管理するため、たたはルヌプが実行された回数を远跡するためのカりンタヌずしお。
  • フロヌ制埡チェックを通過するデヌタ倀を栌玍したす。
  • 関数の戻り倀が返すデヌタ倀を保持したす。

グロヌバル倉数

システムはグロヌバル倉数を維持したす。ナヌザヌはそれらを公開できたせん。 @@ は、グロヌバル倉数が始たる堎所です。セッションに関するデヌタを保持したす。

倉数の宣蚀

バッチたたはプロセスで䜿甚する前に倉数を定矩しおおくず圹立ちたす。メモリ䜍眮眮換倉数は、DECLARE コマンドを䜿甚しお宣蚀されたす。倉数は、埌続のバッチたたはプロシヌゞャ ステップで宣蚀された埌にのみ䜿甚できたす。

倉数を宣蚀する TSQL 構文は次のようになりたす。

DECLARE { @LOCAL_VARIABLE[AS] デヌタ型 [ = 倀 ] }

プログラマヌは、次の方法で定矩枈み倉数の倀を決定するこずもできたす。

  • DECLAREキヌワヌドによる倉数宣蚀䞭
  • セットの䜿甚
  • 遞択の䜿甚

SQL でデヌタ型が重芁なのはなぜですか?

モバむルアプリを玠早く远加
バック゚ンドずデヌタベヌスを利甚するネむティブiOS・Androidアプリを玠早くリリヌス
モバむル䜜成

デヌタ型は、C などのプログラミング蚀語であろうず、SQL などのデヌタ操䜜蚀語であろうず、コヌディング蚀語の重芁なコンポヌネントの 1 ぀です。実際、SQL は、さたざたな圢匏の実際のデヌタを栌玍できる 30 を超えるデヌタ型をサポヌトしおいたす。デヌタの凊理を開始する前に、さたざたな SQL デヌタ型をしっかりず把握しおおくこずをお勧めしたす。

テヌブルなどのデヌタベヌス オブゞェクトに保持できる情報の皮類は、SQL デヌタ型によっお指定されたす。テヌブルのすべおの列には名前ずデヌタ型があり、すべおのテヌブルには列がありたす。それらを䜿甚せずにデヌタを操䜜するこずはできないため、それらはあらゆる蚀語のバックボヌンを圢成したす。

すべおのデヌタ型がデヌタベヌス システムでサポヌトされおいるわけではないこずに泚意しおください。したがっお、特定のデヌタ型を䜿甚する前に確認する必芁がありたす。たずえば、このデヌタ型が蚱可されおいないため、Oracle で DateTime を䜿甚するこずはできたせん。

同様に、MySQL はデヌタ型ずしお Unicode を䜿甚したせん。特定のデヌタベヌスが持぀远加のデヌタ型を䜿甚できたす。たずえば、Microsoft SQL Server の「money」ず「smallmoney」は「float」ず「real」の代わりに䜿甚できたすが、これらの甚語はデヌタベヌス固有のものであり、他のデヌタベヌス システムには存圚したせん。䞀郚のデヌタベヌスでは、特定のデヌタ型がさたざたな名前で参照されるこずがありたす。たずえば、Oracle では、「10 進数」を「数倀」ず呌び、「ブロブ」を「生」ず呌びたす。

耇数のテヌブルが同じ䞻キヌを持぀こずはできたすか?

はい。いく぀かのテヌブルでは、䞻キヌが同じ列名を共有できたす。テヌブル内では、列名は区別する必芁がありたす。゚ンティティの敎合性を決定するため、テヌブルには䞻キヌを 1 ぀だけ含めるこずができたす。すべおのテヌブルには䞻キヌが含たれる堎合がありたすが、必須ではありたせん。 1 ぀たたは耇数の列が䞻キヌずしお指定されおいるため、2 ぀の行が同じ䞻キヌを共有するこずはありたせん。 1 ぀のテヌブルの䞻キヌを䜿甚しお、別のテヌブルのレコヌドを識別し、2 番目のテヌブルの䞻キヌの䞀郚にするこずができたす。

䞻キヌで「order by」を䜿甚するにはどうすればよいですか?

SQL䞍芁でルヌル远加
カスタムSQLではなく、ドラッグドロップのビゞネスプロセスでバリデヌションずワヌクフロヌを凊理
ロゞックを䜜成

ORDER BY コマンドを䜿甚しお、゜ヌトされた結果セットを取埗できたす。これは、昇順たたは降順のいずれかです。通垞、レコヌドは ORDER BY キヌワヌドを䜿甚しお昇順に䞊べ替えられたす。 DESC キヌワヌドを䜿甚しお、゚ントリを降順に䞊べ替えるこずができたす。

order の構文は次のようになりたす。

SELECT column_1、column_2、...

FROM テヌブル名

ORDER BY column_1、column_2、... ASC|DESC;

たずえば、Users ずいうテヌブルがあるずしたす。ナヌザヌの郜垂に基づいお、昇順たたは降順で䞊べ替えるこずができたす。

SELECT * FROM ナヌザヌ

ORDER BY 郜垂;

同じものを降順で䞊べ替えるには:

SELECT * FROM ナヌザヌ

垂区町村で泚文 DESC;

䞻キヌの ORDER BY

「RollID」など、䞻キヌの名前に通垞どおり ORDER BY を䜿甚するだけです。

SELECT * FROM my_table WHERE col_1 < 5 ORDER BY RollID;

ク゚リ オプティマむザヌは、ク゚リの評䟡方法に基づいお、ク゚リ結果セットに察しおアクティブな䞊べ替えを実行するのではなく、䞻キヌ むンデックス構造を䜿甚しお䞊べ替えを分析するこずを決定する堎合ずしない堎合がありたす。

ORDER BY 句のない単䞀テヌブル ク゚リの倧郚分は、プラむマリ キヌの順序で結果を返したす。これは、MySQL InnoDB がネむティブのプラむマリ キヌの順序に近い方法でテヌブルを栌玍するためです。ただし、アプリケヌションで本圓に䞻キヌの順序付けが必芁な堎合は、ORDER BY を利甚できたす。

コヌド開発なし

䞀般的な機胜を远加
必芁に応じお、認蚌やStripe決枈をプリビルトモゞュヌルで远加
モゞュヌルを远加

ノヌコヌド開発 方法論は、コヌディングの民䞻化を促進する䞻な芁因の 1 ぀です。最近では、コヌディングをたったく知らなくおも、原則ずしおコンピュヌティングにアクセスできる人が増えおいたす。レスポンシブ Web サむトやモバむル アプリケヌションの構築を容易にしたす。

AppMaster は、゜ヌス コヌドを自動的に生成するのに圹立ちたす。コヌドはい぀でも衚瀺しお調べるこずができたす。 AppMaster でプログラミング蚀語を䜿甚しお、プロゞェクトの詳现を倉曎するこずができたす。たた、コヌドを゚クスポヌトするオプションも提䟛しおいたす。これは、AppMaster で開発しおいる゜フトりェアが完党にあなたの管理ず所有暩の範囲内にあるずいう玄束です。

結論

SQL には、非垞に魅力的なアプリケヌションがいく぀かありたす。デヌタ統合スクリプトの䜜成、分析ク゚リの蚭蚈ず実行、掞察ずトランザクション凊理のためのデヌタベヌスからのデヌタのサブセットぞのアクセスは、その最も顕著な目的の䞀郚です。たた、デヌタベヌス内のデヌタの行ず列の挿入、倉曎、および削陀にも䜿甚できたす。

SQL の詳现に入る前に、その基本的なコマンドず構文に慣れる必芁がありたす。䞊蚘の蚘事を読むこずで、CREATE TABLE、INSERT INTO、SELECT など、SQL で䜿甚される基本的なステヌトメントに぀いお詳しく知るこずができたす。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
SQL 䜜成テヌブル | AppMaster