一、表的連線
首先表的連線分為兩種,一種是內連線一種是外連線。
1.內連線:內鏈結其實就是使用where語句形成笛卡兒積對錶的內容進行篩選,內鏈結在查詢中是使用最多的。
select 字段 from 表1 inner join 表2 on 連線條件 and 其他條件;
select 字段 from 表1 where 表1屬性=表2屬性;
2.外連線
(1)左外連線:如果我們使用聯合查詢,就會讓左側的表完全顯示。
select 欄位名 from 表1 left join 表名2 on 連線條件。
(2)右外連線:如果我們聯合查詢,右邊的表將完全顯示。
select 字段 from 表名1 right 表名2 on 連線條件;
二、索引特性(重點)
1.索引的概念
索引主要是在提高資料庫的效能,它不用加記憶體,不用改程式,不用調sql,只需要我們執行正確的create index,查詢速度就可以提高上百倍。但是任何乙個東西都是有利也有弊,索引也是一樣的,雖然它提高我們查詢資料的效能,但是它的更新、刪除的速度減慢了,這些操作增加了大量的io。所以索引的最大好處在於它可以提高檢索的效率。使用索引之所以會降低增加、刪除、更新這些速度,是因為檢索採用的是資料結構中的二叉樹,它的改變會引起這個搜尋二叉樹的序列變化,所以需要重新改變它的搜尋序,這樣就會降低速度高;而查詢之所以快是因為查詢的時候通過二叉樹採用的二分查詢,所以它的效率高。索引的原理說明:第一它占用磁碟空間;第二當增加一條記錄的時候,除了新增到表中還需要維護二叉樹;第三當增加乙個索引不能解決問題的時候,需要分別給字段建立索引;第四,索引是以空間換時間。索引主要用在海量資料的檢索;
2.常見索引
*主鍵索引(primary key)
*唯一索引(unique)
*普通索引(index)
*全文索引(fulltext)–解決中子文索引問題(只有mysiam儲存引擎支援)
3.建立索引
(1)建立主索引
第一種方式:建立表的時候,直接在字段後面指定primary key;
create table user1(id int primary key,name varchar(30));
第二種方式:在建立表的最後,指定某列或某幾列為主鍵索引;
create table user2 (id int,name varchar(30),primary key(id));
第三種方式:建立表以後再新增主鍵;
create table user3(id int,name varchar(30));
alter table user3 add primary key(id);
*主鍵索引的特點:
主鍵約束的特點+主鍵索引可以提公升檢索效率
(2)唯一索引的建立
第一種方式:在定義表時在某列後面直接用unique修飾;
create table user4(id int primary key,name varchar(30) unique);
第二種方式:建立表後在表的後面指定某列或某幾列為unique;
create table user5(id int name varchar(30),unique(name));
第三種方式:建立表以後再新增唯一鍵;
create table user3(id int primary key,name varchar(30));
alter table user3 add unique(id);
*唯一鍵索引特點:
多個乙個表中,可以有多個唯一索引,查詢效率高;如果在某一列建立唯一索引必須保證這列不能有重複資料;如果乙個唯一索引上指定not null,等價於主鍵索引。
(3)普通索引的建立
第一種方式:在表的最後定義,指定為某列的索引
create table user8(id int primary key,name varchar(30),email varchar(30),index(name));
第二種方式:建立表以後指定某列為普通索引
create table user9(id int primary key,name varchar(20),email varchar(30));
alter table user9 add index(name);
第三種方式:建立乙個索引名為什麼的索引;
create table user10(id int primary key,name vrchar(20),email varchar(30));
create index idx_name on user10(name);
*普通索引的特點:乙個表可以有多個普通索引,如果某列需要建立索引,但是該列有重複的值我們就使用普通索引。
(4)全文索引的建立
當文章需要對大量的文字進行檢索的時候,會使用全文索引。儲存引擎myisam會提供全文索引的功能,並且預設的全文索引支援英文,不支援中文。
檢視儲存引擎的型別:關鍵字為explaincreate table articles(
id int not null primary key,
title varchar(200),
body text,
fulltext(title,body)
)engine=myisam;
explain select * from articles where body like 『%database%』\g
注意:\g表示垂直展示
最後查詢出來的結果中type這一行表示索引的型別,對於全文索引就是full。
重點:資料庫的優化
對於資料庫的優化,需要用到索引,但是具體的使用方法是:先用explain關鍵字看一下該表中是否有用到索引,如果沒有那麼你就可以根據不同的需求新增不同的索引,比如需要多字段的檢索,那麼肯定就會使用到全文索引,如果是不重複用到唯一鍵索引等等,新增索引以後執行sql語句檢驗看是否有提高效率,如果沒有,那麼再使用explain關鍵字查詢看索引是否有生效。
4.索引的查詢
第一種方法:show keys from 表名
查詢的結果表示的意思:
第二種查詢方法:show index from 表名;
第三種查詢方法(資訊簡略):desc 表名;
5.索引的刪除
第一種方法——刪除主鍵索引:alter table 表名 drop primary key;
第二種方法——刪除其他索引:alter table 表名 drop index 索引名;
其中索引名就是show keys from 表名\g 中的key_name欄位;
第三種方法:drop index 索引名 on 表名
eg:drop index name on user8;
6.索引的建立原則
(1)同乙個表裡的索引名是不能重複的,但是在同乙個資料庫裡可以重複;
(2)在查詢欄位時查詢條件比較繁瑣的時候應該建立索引;
(3)唯一性太差的字段就算是頻繁查詢也不適合單獨建立索引;
(4)更新比較頻繁的字段也不適合建立索引,因為更新二叉樹需要花太多的時間;
(5)不會出現在wher這個e子句中的字段不應該建立索引(也就意味著這個欄位不需要進行查詢)。
mysql 表的連線方式 Mysql表的連線方式
mysql表的連線方式 1.交叉連線 笛卡爾積 交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。sql語句 select from 表1,表2 隱士笛卡爾積 select from 表1 crross join 表2 顯示笛卡爾積 不帶條件的內連線也是笛卡爾積...
mysql表連線sql表 MYSQL表連線查詢
表連線查詢 一 交叉連線 笛卡爾積 查詢teacher和course表中所有的資料 select from teacher,course select name,courseid,course.id,cname from teacher,course where teacher.courseid c...
mysql 表 索引 mysql 為表新增索引
索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1 1...