序文 この記事には 1. データベースのいくつかの主要な制約 制約: 主キー制約: 機能: データの妥当性と整合性を保証するために、MySQL でよく使用される制約: 主キー制約 (主キー)、一意制約 (一意)、空でない制約 (NULL ではない)、外部キー制約 (外部キー) 主キー制約: 変更されたフィールドは一意であり、空ではありません。注: テーブルには主キーを 1 つだけ設定できますが、複数のフィールドを含めることができます。方法 1: テーブルの作成時に制約を追加します。形式: フィールド名 フィールド タイプ 主キー 方法 2: テーブルの作成時に制約領域に制約を追加します。すべてのフィールドが宣言されたら、制約領域になります。形式: 主キー (フィールド 1、フィールド 2) テーブルpk01を作成します( id int、 ユーザー名varchar(20)、 主キー (ID) ); insert into pk01 values(1,'tom');-- 成功 insert into pk01 values(1,'tom');-- 失敗 キー 'PRIMARY' のエントリ '1' が重複しています insert into pk01 values(null,'tom');-- 失敗 列 'id' は null にできません テーブルpk01を作成します( id int 主キー、 ユーザー名varchar(20)、 主キー (ID) );-- エラー テーブルには主キーを 1 つしか持てません 方法3: テーブルを作成した後、テーブル構造を変更して制約を追加します。create table pk02( id int、 ユーザー名varchar(20) ); alter table pk02 主キーを追加します (フィールド名 1、フィールド名 2..) テーブル pk02 を変更し、主キー (id、username) を追加します。 insert into pk02 values(1,'tom');-- 成功 insert into pk02 values(1,'tomcat');-- 成功 insert into pk02 values(1,'tomcat');-- 失敗 ユニーク制約 変更されたフィールドは一意であり、nullでは機能しません。方法1: テーブルの作成時に制約を追加します。形式: フィールド名 フィールドタイプ 一意 テーブルを作成 un( id int ユニーク、 ユーザー名 varchar(20) 一意 ); insert into un value(10,'tom');-- 成功 insert into un value(10,'jack');-- エラー キー 'id' のエントリ '10' が重複しています un value(null,'jack') に挿入します。-- 成功 un value(null,'rose') に挿入します。-- 成功 方法 2: テーブルの作成時に制約領域に制約を追加します。すべてのフィールドが宣言された後、制約領域は一意になります (フィールド 1、フィールド値 2...) 方法 3: テーブルを作成した後、テーブル構造を変更して制約を追加します。 alter table table name add unique (field 1, field 2); -- ジョイントユニークを追加しました。 alter table table name add unique (field 1); -- 1 つにユニークを追加しました。 alter table table name add unique (field 2); -- 別のものにユニークを追加しました。 //////////////// テーブルun01を作成( id int、 ユーザー名varchar(20) ); テーブル un01 を変更し、unique(id,username) を追加します。 insert into un01 values(1,'tom');-- 成功 insert into un01 values(1,'jack');-- 成功 insert into un01 values(1,'tom');-- 失敗 キー 'id' のエントリ '1-tom' が重複しています 非 Null 制約 機能: 変更されたフィールドは空ではありません。方法: テーブルnnを作成( id int が null ではない、 ユーザー名varchar(20)がnullでない ); insert into nn values(null,'tom');-- エラー列 'id' は null にできません ケース1 1対多 – ユーザーテーブルを作成する テーブルユーザーを作成( id int 主キー auto_increment, ユーザー名varchar(20) ); -- 注文テーブルを作成する create table orders( id int 主キー auto_increment, 合計価格2倍、 ユーザーID int ); データの有効性と整合性を確保するには、制約 (外部キー制約) を追加します。 形式: 例えば: 外部キー制約を追加すると、次の機能が利用できるようになります。
開発における 1 対多の処理: ケース 2 1対多 – ユーザーテーブルの作成 -- 製品テーブルを作成する create table product( id int 主キー auto_increment, 名前varchar(20), 価格2倍 ); -- 中間テーブルを作成する create table orderitem( oid int、 pid 整数 ); – 外部キー制約を追加する 開発における多対多の処理: ケース3 - 複数テーブルクエリ デカルト積: 複数のテーブルの無条件の結合クエリ。意味がありません。 select a.*,b.* from a,b; 内部結合 形式 1: 明示的な内部結合 select a.*,b.* from a [inner] join b on ab join condition 形式 2: 暗黙的な内部結合 select a.*,b.* from a,b where ab join condition 外部結合 左外部結合: 結合条件で左[外部]結合bからa.*,b.*を選択します。 平均: まず、結合の左側のテーブル (a) のすべてのデータを表示し、次に結合の右側のテーブル (b) を条件に基づいてクエリします。条件が満たされている場合は表示します。満たされていない場合は、null 値として表示します。 右外部結合: b から a.*,b.* を右 [外側] から選択し、接続条件で a を結合します。 平均: まず結合の右側のテーブル (a) のすべてのデータを表示し、次に結合の左側のテーブル (b) を条件に基づいてクエリします。条件が満たされている場合はデータが表示され、そうでない場合は null 値として表示されます。 サブクエリ: 1 つのクエリは別のクエリに依存します。 以上が、私がご紹介したMySQLの基本操作の詳細な説明です。お役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、すぐに返信させていただきます。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)
目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...
今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...
オプションに属性 selected = "selected" を追加すると、それ...
1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...
序文Linux 環境で作業するエンジニアは、これらの面倒な命令とパラメータのコマンドラインにきっと驚...
サーバーにはNginx、データベースサポートにはMongo、Python言語のWebフレームワークに...
Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...
このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...
Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...
共有システムで作業しているときは、他のユーザーが自分のコンソールを覗き込んで、自分が何をしているか見...
目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...
目次序文動的プロパティとは何ですか?値のコピー値の種類を決定する要約する序文これは JavaScri...
Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...
Swarm クラスター管理導入Docker Swarm は Docker 用のクラスター管理ツールで...
通常、ユーザーがアップロードした写真はデータベースに保存する必要があります。一般的に、解決策は 2 ...