テーブルとテーブルの間の関係
テーブルとデータのテーブル間の関係であるテーブルとテーブルの間の関係。
L-1の関係
実際には、開発中の一つの小さなアプリケーション、1がに表を作成することができますので、
L-多くの関係
外部キーの複数あります。
L注:
多くの関係と1人の関係を作成するには、唯一の違いは、外部キーが一意ではないということです、非常によく似ています。
L対多関係(テーブルの実装では、中間体が必要)
財受注の対応数、商品の受注に対応する数と
L注:
我々は、多くの関係を作成するために、テーブルの真ん中を完了する必要があります
多くの関係は、実際には2対多の関係の組み合わせです
外部キー
公開鍵は中関係にある場合、主キーは、公開鍵は別の外部キー関係と呼ばれています。したがって、外部キーは、2人の関係の間の関連接続を表します。別のテーブルへの外部キー関係のテーブルは、外部キーテーブルが、メインテーブルから呼び出された一次鍵マスターテーブルと呼ばれます。また、外部キーとして知られている外部キー。
クエリに関連したマルチテーブル
登録しよよる機能、次の3つのカテゴリに分類します:
Lクロス結合(クロスコネクト)
INNER JOINをL(または同等のコネクタに接続されています)。
OUTER JOINを(外部接続)
1.1 クロスコネクト
クロスコネクトキーワード:CROSS JOINを
クロスコネクトとも呼ばれるデカルト積接続
デカルト積は数学、二組を指すフルートカードX、またX * Yとして表さ直積として知らYミ物(デカルト積)、Xは、最初のオブジェクトのメンバーであり、第二の目的でありますこれらのすべてはYさんのメンバーのために注文することができます。
クロスコネクトの性能:掛けた行の数は、列の数が追加されます
暗黙的なクロスコネクトL
A、B SELECT * FROM
明示的なクロスコネクトL
A CROSS SELECT * FROM Bを登録しよう
1.1 エン
接続のキーワード:INNER JOINは
接続も呼ばれる等価な接続、合計値列に応じて、各テーブルの行に一致する比較表を使用して2つのカップリング。
コネクタL内の暗黙
A、B A.id = B.id SELECT * FROM
明示的な内部接続L
A INNER SELECT * FROM B ON A.id = B.idをJOIN
外部結合します
外部結合の外に残してもよい結合、右外側連結または完全外部ジョイン。外側に分割されていることを参加:左外部結合、右の外側に参加し、完全外部結合
外部接続が必要です主テーブルまたは予約テーブルの概念を。
で、 FROM句の外からの参加で指定した時間、以下のグループ内のキーワードのセットによって指定することができます。
Lは 、外側左: LEFT JOINまたはLEFT外部結合します
A LEFT SELECT * FROM B ON A.id = B.idをJOIN
リットル 右の外部結合 :: RIGHT JOINをJOINまたはRIGHT OUTER
A RIGHT SELECT * FROM B ON A.id = B.idをJOIN
L完全外部コネクタ(MySQLのサポートされていない): FULL FULL外部結合または結合します
A FULL SELECT * FROM B ON A.id = B.idをJOIN
外部接続の概要:
マスター表の分析から、ビジネスニーズによってリットル、
lの 場合は LEFT JOINは、それが主テーブルに残っています
lの 場合 RIGHTは、その右側に、マスターテーブルのJOIN
リットルのクエリ結果は、ベースの主テーブル、テーブルのレコードは、一致していませフィル、その後はnull
ページングクエリ
MySQLのページングキーワードです:LIMIT
LIMITキーワードはSQLではない92の提案された標準をキーワード、それは MySQLの独自の構文。
制限キーワード、MySQLは物理ページを実装しています。
論理ページと物理ページにタブ
そして、メモリにデータベースからクエリデータの後のページ:論理ページ。
物理ページ:を通じて、直接データベースタブLIMITのキーワード、データの確定申告、データのみをページング。
Lフォーマット:
テーブルLIMIT [SELECT * FROM オフセット、] 行
オフセット:コンパイル量を
行:行数を各ページ。
サブクエリ
リットル定義されました
これは、別のクエリその中にネストされたクエリのサブクエリを可能にします。
またに関して、内部問い合わせとして知られているサブクエリ、内部問い合わせ、内部照会を含むが呼び出される外部クエリ。
L場所
どこからで選択します。
MySQLのアーキテクチャ
ロジックチャート
実行フロー
ストレージエンジンの紹介
* 多存储引擎是mysql有别于其他数据库的一大特性;
* 存储引擎是针对表的
* MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB。
* 查看存储引擎:show engines;
Innodb |
Myisam |
|
存储文件 |
.frm 表定义文件 .ibd 数据文件 |
.frm 表定义文件 .myd 数据文件 .myi 索引文件 |
锁 |
表锁、行锁 |
表锁 |
事务 |
ACID |
不支持 |
CRDU |
读、写 |
读多 |
count |
扫表 |
专门存储的地方 |
索引结构 |
B+ Tree |
B+ Tree |
日志文件
MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志、中继日志等。
MySQL索引
1.1 介绍
* 使用索引的主要目的是为了优化查询速度
* 索引是一种特殊的文件或者叫数据结构(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
1.1 索引的分类
l 索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引
* MyISAM和InnoDB存储引擎:只支持BTREE索引, 也就是说默认使用BTREE,不能够更换 * MEMORY/HEAP存储引擎:支持HASH和BTREE索引
l 索引的分类
* 单列索引:
* 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
* 唯一索引:索引列中的值必须是唯一的,但是允许为空值,
* 主键索引:是一种特殊的唯一索引,不允许有空值。
* 组合索引
* 在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。
* 全文索引
* 全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。
* 空间索引:不做介绍,一般使用不到。
创建索引
1 CREATE INDEX index_name ON table(column(length)) 2 ALTER TABLE table_name ADD INDEX index_name ON (column(length)) 3 4 CREATE UNIQUE INDEX index_name ON table(column(length)) 5 CREATE FULLTEXTINDEX index_name ON table(column(length)) 6 7 ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))
删除索引
DROP INDEX index_name ON table