六 6 4Mysql資料修改和索引

2022-08-28 13:24:19 字數 2666 閱讀 4599

mysql修改、刪除資料記錄

用update修改記錄

update table_name set field1=new-value1, field2=new-value2 [where clause]

update用於對滿足where條件的行進行修改,通過set之心column的新值

例如update student set age=29 where stdid=10001;

如果不帶where條件,將對全表更新

可以使用where_condition,結合order by和limit限定更新的行數

update 的limit一定要結合order by ,否則會導致資料不一致

delete語法

delete from table_name [where clause]

不帶where條件的delete是對全表進行刪除操作

可以結合order by和limit 做排序刪除

對比不帶where條件的delete,truncate table 和drop table

delete 不帶條件,逐行刪除記錄

tuncate table 整體刪除資料檔案,但是保留scheama資訊

drop table同時刪除資料檔案和schema

索引mysql索引的概念

索引是一種特殊的檔案(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。

索引類別

1.普通索引

普通索引(由關鍵字 key 或 index 定義的索引)的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(where column =)或排序條件(order by column)中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊、最緊湊的資料列(如乙個整數型別的資料列)來建立索引。

2.唯一索引

普通索引允許被索引的資料列包含重複的值。比如說,因為人有可能同名,所以同乙個姓名在同乙個「員工個人資料」資料表裡可能出現兩次或更多次。

如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字unique 把它定義為乙個唯一索引。這麼做的好處:一是簡化了 mysql 對這個索引的管理工作,這個索引也因此而變得更有效率;二是 mysql 會在有新記錄插入資料表時,自動檢查新記錄的這個欄位的值是否已經在某個記錄的這個欄位裡出現過了;如果是,mysql 將拒絕插入那條新記錄。也就是說,唯一索引可以保證資料記錄的唯一性。事實上,在許多場合,人們建立唯一索引的目的往往不是為了提高訪問速度,而只是為了避免資料出現重複。

3.主索引

在前面已經反覆多次強調過:必須為主鍵欄位建立乙個索引,這個索引就是所謂的「主索引」。主索引與唯一索引的唯一區別是:前者在定義時使用的關鍵字是 primary 而不是 unique。

4.外來鍵索引

如果為某個外來鍵字段定義了乙個外來鍵約束條件,mysql 就會定義乙個內部索引來幫助自己以最有效率的方式去管理和使用外來鍵約束條件。

5.復合索引

索引可以覆蓋多個資料列,如像 index (columna, columnb) 索引。這種索引的特點是 mysql 可以有選擇地使用乙個這樣的索引。如果查詢操作只需要用到 columna 資料列上的乙個索引,就可以使用復合索引 index(columna, columnb)。不過,這種用法僅適用於在復合索引中排列在前的資料列組合。比如說,index (a,b,c) 可以當做 a 或 (a,b) 的索引來使用,但不能當做 b、c 或 (b,c) 的索引來使用。

普通索引

建立索引

這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:

create index indexname on mytable(username(length));

如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length。

修改表結構(新增索引)

alter table tablename add index indexname(columnname)

建立表的時候直接指定

create table mytable(

id int not null,

username varchar(16) not null,

index [indexname] (username(length))

);

刪除索引的語法

drop index [indexname] on mytable;

唯一索引

它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:

建立索引

create unique index indexname on mytable(username(length))

修改表結構

alter table mytable add unique [indexname] (username(length))

建立表的時候直接指定

create table mytable(

id int not null,

username varchar(16) not null,

unique [indexname] (username(length))

);

MySQL 修改和刪除索引

mysql 中修改索引可以通過刪除原索引,再根據需要建立乙個同名的索引,從而實現修改索引的操作。當不再需要索引時,可以使用 drop index 語句或 alter table 語句來對索引進行刪除。1 使用 drop index 語句 語法格式 drop index 索引名 on 表名 語法說明如...

MySQL資料庫(六) 索引

索引是一種提高查詢效率的資料結構 b樹或雜湊結構 索引是建立在資料庫表中,對資料庫表中的一列或多列值進行排序的結果,好處是提高查詢效率。1 普通索引 無任何限制,可以給任意字段建立普通索引。2 唯一性索引 使用unique修飾的字段,值不可以重複。3 主鍵索引 使用primary key修飾的字段自...

Mysql索引(索引資料結構和分類)

索引在物理上的區分 聯合索引 mysql索引是一種資料結構,一種加快資料庫查詢的資料結構。來自於尚矽谷的mysql高階 當然,形象的理解就是一本字典的目錄,目錄又分兩種。一種拼音的,一種偏旁的。這個說這個因為後面有用。在我們設定mysql索引時,可以選擇索引型別為唯一索引,普通索引和主鍵索引。唯一索...