1. 程式人生 > >MySql 給表新增一個聯合唯一索引

MySql 給表新增一個聯合唯一索引

做專案需要用到聯合唯一

例如,user表中有user_id,user_name兩個欄位,如果不希望有兩條一摸一樣的的user_id和user_name,需要給user表新增兩個欄位的聯合唯一索引:
alter table user add unique index(user_id,user_name);
這樣當向表中新增相同記錄的時候,會返回1062的新增失敗資訊。
但是有一種情況是表中已經有n個重複的記錄,這時候我們才想起來要新增唯一索引,再執行上面的操作時,資料庫會告訴你已經有重複的記錄了,建立索引失敗,這時候,我們可以用下面的操作:
alter ignore table user add unique index(user_id,user_name);


它會刪除重複的記錄(別怕,會保留一條),然後建立唯一索引,高效而且人性化。

尤其是綠色的那條sql,在建立索引的同時刪除了重複資料,相當有用。
檢視索引  show index from 資料庫表名
alter table 資料庫add index 索引名稱(資料庫欄位名稱)
PRIMARY KEY(主鍵索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`) 

INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
1.普通索引。
這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:
(1)建立索引:CREATE INDEX indexName ON  tableName(tableColumns(length));如果是CHAR,VARCHAR型別,length可以小於欄位實際長度;如果是  BLOB 和 TEXT 型別,必須指定length,下同。
(2)修改表結構:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length)) 
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;

2.唯一索引。
它與前面的”普通索引”類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:
(1)建立索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表結構:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));

3.主鍵索引
它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引:CREATE TABLE testIndex(i_testID INT  NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY  KEY(i_testID)); 當然也可以用ALTER命令。

相關推薦

MySql 新增一個聯合唯一索引

做專案需要用到聯合唯一 例如,user表中有user_id,user_name兩個欄位,如果不希望有兩條一摸一樣的的user_id和user_name,需要給user表新增兩個欄位的聯合唯一索引:alter table user add unique index(use

mysql 新增唯一約束、聯合唯一約束,指定唯一約束的名字

表結構 FIELD          TYPE          COLLATION       NULLKEYDEFAULT  Extra           PRIVILEGES            COMMENT   -------------  ------------  --------

mysql的欄位加索引

1、新增普通索引 ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 1 2、新增主鍵索引 ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )  1 3、新增唯

mysql新增聯合唯一索引

在開發過程中遇到了聯合索引的問題,現在總結一下: 開發具體環境是這樣的:我們有一個行業表,表中包含省份和城市兩個欄位。因此需要針對這兩個欄位建立聯合索引。 表名稱為:sc_blacklistcity 兩個欄位分別為:province  city 執行語句: alter ta

MySQL新增聯合唯一索引

一、聯合唯一索引 專案中需要用到聯合唯一索引: 例如:有以下需求:每個人每一天只有可能產生一條記錄:處了程式約定之外,資料庫本身也可以設定: 例如:t_aa 表中有aa,bb兩個欄位,如果不希望有2條一模一樣的記錄(即:aa欄位的值可以重複; bb欄位的值

mysql 預設分頁查詢,主鍵索引,和聯合唯一索引的坑

最近遇到一個比較坑的問題,列表分頁查詢的時候,查詢全部沒問題,根據條件查詢就會出現亂序,多頁之間有重複資料的問題。   因為用的通用mapper元件,於是打出來sql看了下,發現分頁查詢sql沒有order  by,結果查詢出來的順序是亂的,因為查詢條件之一是聯合唯一

Mysql新增和刪除唯一索引、主鍵

1、PRIMARY KEY(主鍵索引) 新增 ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ); 刪除 ALTER TABLE `table_name` DROP PRIMARY KEY; 2、UNIQUE(唯一索

sql server 某張已經存在的新增一個欄位

其實很簡單,就是每次都忘了,隨便記錄下 關鍵字: alter   table  OPPersonnel_promotion   add  [Remark] nvarchar(200) null  其中alter table add 為關鍵字不能變。其他的OPPersonn

Mysql的時候創建索引

直接 方式 bold gin unique lte pan mys 記錄表 創建表時可以直接創建索引,這種方式最簡單、方便。其基本形式如下: CREATE TABLE 表名( 屬性名 數據類型[完整性約束條件], 屬性名 數據類型[完整性約束條件], ...

iOS之圖片新增一個顏色相框(Swift4.2)

override func viewDidLoad() { super.viewDidLoad() // 給一張圖片新增一個顏色相框 let image

mysql 建立新增行、列註釋

建立表添加註釋 CREATE TABLE purchase( id int(25) PRIMARY KEY AUTO_INCREMENT, user_id int(50) COMMENT'列註釋',

1.新增一個獲取最小值的方法(元素為Integer型),要求時間複雜度為O(1)

分析:在資料結構與演算法中,當要求時間複雜度最小時基本都是要犧牲空間複雜度。棧是先進後出,此處要求用棧實現一個獲取最小值的方法且時間複雜度為O(1),首先考慮的方向就是再借助一個棧來實現,這個棧主要用來儲存最小值序列(這個地方可以思考一下為什麼不能用一個變數來儲存最小值)。 下面直接附上程式碼:   

SqlServer如何新增新的欄位以及欄位註釋

語法: USE 資料庫名 ALTER TABLE 表名 ADD 欄位名  型別  預設值  是否為空; EXEC sp_addextendedproperty N'MS_Description', N'註釋內容', N'SCH

MySQL---建新增語句

建立學生表,表名student,根據需求,需要儲存學號,姓名,性別、生日4列資訊: mysql -uroot -p               ---以root使用者本地連線MYSQL資料庫 mysq

mysql中有重複資料建唯一索引

ALTER TABLE tableA ENGINE MyISAM; /*注意:修改表結構為MyISAM */ ALTER IGNORE TABLE tableA ADD UNIQUE INDE

Oracle中新增主鍵、外來鍵

1、建立表的同時建立主鍵約束 (1)無命名 create table student ( studentid int primary key not null, studentname varchar(8), age int); (2)有命名 create tab

Oracle 中新增主鍵、外來鍵

(1)無命名 create table student ( studentid int primary key not null, studentname varchar(8), age int); (2)有命名 create table students ( studentid int , stu

Mysql學習(一)新增一個新的使用者並用golang操作Mysql

Mysql新增一個新的使用者並賦予許可權 新增一個自己的使用者到mysql 首先我們需要先用root使用者登入mysql,但是剛安裝完沒有密碼,我們先跳過密碼 [email protected]:~/Git_Project/Go_Test$ sudo mysqld_

MySQL和欄位添加註釋

在MySQL中,給表和欄位添加註釋使用COMMENT關鍵字。 1、新增表和欄位的註釋 建立資料表的同時,給表和欄位添加註釋。 -- 建立使用者資訊表 CREATE TABLE tb_user ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '

android 怎麼listview新增一個固定表頭以及顯示像table的效果

定義一個樣式一條線     <style name="vertical_layout">         <item name="android:layout_width">1dp</item>         <item name