MySQLデータベースの高度な操作(クエリ)

(1)エンティティ間には3つの対応があり、これらの関係も保存する必要があります。リレーショナルデータベースは主に関係を保存します。
(2)開発中、一部の保存データを処理する必要があり、一部の組み込み関数
( 3)ビューは、クエリステートメントのカプセル化を完了するために使用されます
(4)トランザクションは、mysqlデータを効果的にするための操作で、複雑な追加、削除、変更、およびチェック操作が確実に効果的であることを保証できます

関係の概要データベース、複数のデータで関係が非常に重要ですテーブル間のリレーションシップを使用すると、データのクエリにこの関係を使用することができますので、テーブルのリレーションは、いくつかのプロパティに対応することができ、そこにある
ID名:属性の学生テーブル
属性のスコア表:IDスコア
チャートのプロパティを:IDタイトル
スコアテーブルにはIDとスコアがあり、各スコアは複数の名前に対応し、各スコアは複数のサブジェクトにも対応するため、1対多の関係であるため、他のテーブルに接続するための外部キー、スコアテーブルを確立する必要があります学生テーブルと成績テーブルを接続するための外部キーを確立する必要があります

次のように文の写しを作成することである:
(表スコア作成
主キーAUTO_INCREMENT、int型上記のid上記
stuid int型、
サブID int型、
スコア進(5、2) )

外部キー
、外部キー制約によってデータのため:それの妥当性を確保するためにどのようにリレーショナルデータ検証の有効性、stuid、subidの外部キー制約を追加します。
テーブルスコアの作成(
id int主キーauto_increment、
stuid int、
subid int、
スコア10進数
(5、2)外部キー(stuid)が生徒(id)を参照
外部キー(subid)が主語(id)を参照
);

外部キーのカスケード操作
(1)学生テーブルのデータを削除するときに、このID値がすでにスコアに存在する場合、例外がスローされます
(2)テーブルの作成時にカスケード操作を指定するか、または後でテーブルを作成できます外部キーを変更するためのカスケード操作
構文:変更テーブルスコアは制約stu_sco外部キー(stuid)を追加します
外部キー操作は主に複数のデータテーブルを関連付けることです。

すべてのテーブルをまとめてクエリを実行し、同じ結果セットに結果を表示します
クエリ結果が複数のテーブルからのものである場合、結合クエリを使用する必要があります。キー:テーブル間の関係を見つけるには、現在の関係は次の
とおりです:学生テーブルid ------スコアテーブルのstidサブジェクトテーブルのid
----スコアテーブルのsubid

eg: select  students.name,subjects.title,scores.score  from  scores  inner join  students  on scores.stuid=students.id  inner  join  subjects on scores.subid=subjects.id;

結論:複数の関連テーブルをクエリする必要がある場合は、結合を使用する必要があります

クエリに参加する:
次のようにクエリを分類加わる
結果で生じ得る表Aおよび表Bマッチング挙動:表A内の表Bに参加
表B参加左表Aで:表Aおよび表Bの挙動が結果に表示される一致、プラス表Aデータ内の一意のデータ、対応しないデータはnullで埋められます
テーブルA右結合テーブルB:一致するテーブルAとテーブルBの動作が結果に表示されます。さらに、テーブルB内の一意のデータ、対応しないデータはnullで埋められます
クエリまたは条件では、「テーブル名。列名」構文を使用することをお勧めします。
複数のテーブルの列名が繰り返されない場合は、「テーブル名」の部分を省略できます。
テーブル名が長すぎる場合は、テーブル名の後に「as」の省略形を使用できます。名前、テーブルの一時的な短い名前

組み込み関数
(1)文字列関数:データ内の文字列を操作します
(2)数学関数:
–絶対値abs(n):select abs(-32)
– mの剰余をn mod(m、 n)、同じ演算子%:select mod(10、3); select 10%3–
–アドレスフロア(n)、
n以下の最大整数を表す–天井天井(n)、n以上の最大整数を表す
–丸められた値round(n、d)を見つけます。nは元の値を表し、dは小数点位置を表します。デフォルトは0で
xをyの累乗で求めます(x、y)-PIを取得
(PIを選択)、randを選択()

(3)日付関数
日付を照会するために使用します
select data_format( '2016-12-21'、 '%Y%m%d')
現在の日付:current_date()select current_date();
現在の時刻:current_time()select current_time() ;
現在の日付と時刻:今すぐ選択();

ビュー: SQLステートメントのカプセル化。結果は、テーブルの形式で
ビューの意味を提示ます。複雑なクエリの場合、複数回使用した後、メンテナンスは非常に厄介なことであり、ビューの本質を定義することはクエリのカプセル化です---クエリの結果は新しいテーブルに表示され
ますビューを定義します:ビューの名前を(クエリコード)
として作成します例:ビューの名前を選択して生徒を作成します*、scores.stuidのスコアの内部結合の生徒のスコアからのScores.score = students.id
------ビューを作成した後、必要がチェックする-と一般的なクエリーテーブルは同じです:
ビュー名からSELECT *

mysqlのトランザクション:ビジネスロジックが完了するために複数のsqlを必要とする場合、sqlステートメントの1つが間違っている場合は、操作全体を取り消し、トランザクションを使用して戻りの関数を完了し、ビジネスロジックの正確さを保証するために、次の
ことを覚えておく必要があります。 4つの特性(ACID)
アトミシティ(アトミシティ):トランザクションのすべての操作はデータベースで不可分であり、
一貫性はすべてまたはまったくない(一貫性):複数のトランザクションが並行して実行され、実行結果は特定の順序でのシリアル実行の結果と一致します。
分離:トランザクションの実行は他のトランザクションによって干渉されず、トランザクション実行の中間結果は他のトランザクションに対して透過的である必要があります
。持続性:コミットされたトランザクションの場合、システムは、データベースに障害が発生した場合でも、トランザクションがデータベースへの変更を失わないようにする必要があります。
トランザクションサポート:テーブルのタイプはinnodbまたはbdbです。

トランザクションステートメント:
open:beginはデフォルトで有効になっています
。Submit:commitは手動操作が必要です
Withdraw:SQLステートメントが不要な場合はロールバックを取り消すことができます。
これはPythonの相互作用でよく使用されます。

クエリの概要:
リレーショナルストレージ:外部キーの使用->接続の確立(複数のテーブル)、クエリ時に接続クエリを使用できます
接続クエリ:複数のシート間のクエリに使用
組み込み関数
ビュー:SQLステートメントに使用オペレーションのカプセル化
トランザクション:4つの特性、ビジネスロジックの正確性の維持

129の元の記事を公開 43のような 100,000以上を訪問

おすすめ

転載: blog.csdn.net/nbxuwentao/article/details/104435498