mysql alter 唯一鍵_MySQL列屬性 之 唯一鍵

MySQL列屬性 之 唯一鍵

唯一鍵

唯一鍵:每張表往往有多個字段需要具有唯一性,數據不能重復,但是在每張表中,只能有一個主鍵,因此 唯一鍵就是用來解決表中多個字段需要具有唯一性的問題。

例如身份證號碼應該每一行的記錄不一樣,需要具有唯一性。

唯一鍵的本質與主鍵差不多,唯一鍵允許字段為空,而且可以多個字段為空,因此空字段不參與唯一性的比較。也就是說可以插入多個空字段。

增加唯一鍵

增加唯一鍵的方法和主鍵類似,有 3 種方法,分別為:

第一種:在創建表的時候,字段后面直接添加unique或者unique key關鍵字

-- 增加唯一鍵

create table my_unique(

number char(10) unique comment '學號',

name varchar(20) not null

)charset utf8;

43fcdffeaae884b9b20c922c32e9e23e.png

第 2 種:在所有字段之后,增加unique key(字段列表),可以設置復合唯一鍵

-- 測試唯一鍵

create table my_unique2(

number char(10) not null,

name varchar(20) not null,

unique key(number)

)charset utf8;

4031f30eaa4e1e993ef3400210b990f7.png

觀察上圖,咱們可能會發現一個問題,那就是: 咱們設置的唯一鍵UNI,怎么變成了主鍵PRI啊?這是由于當唯一鍵滿足非空條件的時候,其性質就和主鍵一樣啦,因此在表中顯示為PRI. 當然,在咱們執行如下 SQL 語句的時候,其就會表現出真正的性質:

-- 查看表創建語句

show create table my_unique2;

df6eda02fd5907cdc868feb33bcf6aab.png

第 3 種:在創建表之后,增加唯一鍵

-- 創建未設置唯一鍵的表

create table my_unique3(

id int primary key auto_increment,

number char(10) not null,

name varchar(20) not null

)charset utf8;

65dd16d9fa1fe362b6de1bd2fafcaf08.png

如上圖所示,表my_unique3未設置唯一鍵。接下來,執行如下 SQL 語句,進行測試:

-- 增加唯一鍵

alter table my_unique3 add unique key(number);

d3b82345c8edd23adbf59241a6b21616.png

如上圖所示,咱們已經成功向表中增加唯一鍵啦!

唯一鍵約束:允許多個值為空

唯一鍵與主鍵本質相同,區別在于: 唯一鍵允許字段值為空,并且允許多個空值存在。

-- 測試唯一鍵約束

insert into my_unique values(null,'Charies');

insert into my_unique values(null,'Guo');

3269596959b092dc554766096a6a7055.png

更新唯一鍵 & 刪除唯一鍵

在表中,更新唯一鍵的時候,可以不用先刪除唯一鍵,因為表的唯一鍵允許有多個。

刪除唯一鍵的語法為:

基本語法:alter table + 表名 + drop index + 索引名字;

在這里,唯一鍵默認使用字段名作為索引名。

-- 刪除唯一鍵

alter table my_unique3 drop index number;

dc78a6df0768e263b4701d53a938510e.png

如上圖所示,顯然咱們已經成功刪除表中的唯一鍵啦!

溫馨提示:符號+表示連接的意思。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529236.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529236.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529236.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在mysql中添加復選框_如何使用輸入和復選框更新mysql

如果我理解正確,您需要這樣做:mysql_query("UPDATE mp3SETaktif 1,baslik " . mysql_escape_string($_POST[baslik]) ."WHERE id $zuha");mysql_query("update mp3 set aktif 1,baslik $_POST[baslik]where id $_POST[id]")現在唯一的區別…

mysql 檢查列是否存在,如何檢查mysql表列是否存在?

How can I check if mysql table field even exists ?The column name is price and I need to see if it exists.Havent understood really how the EXISTS works...Any examples or ideas ?Thanks解決方案In PHP:$fields mysql_list_fields(database_name, table_name);$c…

mysql proxy yum_mysql 高可用架構 proxysql 之一 yum安裝

os:centos 7.4mysql: 5.7proxysql: 1.4.10ip 規劃如下:192.168.56.101 node1 (proxysql)192.168.56.102 node2 (mysql master)192.168.56.103 node3 (mysql slave)192.168.56.104 node4 (mysql slave)安裝mysql 5.7node2、node3、node4 安裝 mysql 5.7 software詳細…

wpf 使用位圖畫圖為什么斷斷續續_WPF的未來是微軟WinUi!

WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶界面框架,屬于.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的工作;同時它提供了全新的多媒體交互用戶圖形界…

antd新增一行頁碼不正確_antd-Table@4.x對rowKey屬性的重構

時間:2020/04/26 ,轉載請注明出處。寫在前面antd團隊于2020年2月發布了醞釀已久的antd4.0版本,對樣式的調整、部分組件邏輯的重構都進行了較大改動,本文針對Table的rowKey屬性重構作分析。由一個mistake帶來的思考在數據治理模塊的…

qt調用mysql調用了存儲過_Qt調用Server SQL中的存儲過程

Server SQL中的存儲過程如下:CREATE procedure PINSERTPCpcnum int,pcname varchar(50),pctype int,ipaddress varchar(50),port int,pcid int outputas--declare pcid intif exists (select * from COMPUTERTABLE where PcNum pcnum)set pcid -1elsebegininser…

pandas mysql index_Pandas從入門到精通(3)- Pandas多級索引MultiIndex

首先了解一下什么是多級索引,以及它的作用,為什么要有這個玩意。多級索引也稱為層次化索引(hierarchical indexing),是指數據在一個軸上(行或者列)擁有多個(兩個以上)索引級別。之所以引入多級索引,在于它可以使用戶能以低維度形式…

tensorflow 啟動多個session_Tensorflow源碼解析7 -- TensorFlow分布式運行時

1 概述TensorFlow架構設計精巧,在后端運行時這一層,除了提供本地運行時外,還提供了分布式運行時。通過分布式訓練,在多臺機器上并行執行,大大提高了訓練速度。前端用戶通過session.run()啟動系統執行時,tar…

shell swt 樣式_SWT之路:SWT圖像顯示

簡明現代魔法 -> Java編程語言 -> SWT之路:SWT圖像顯示SWT之路:SWT圖像顯示2009-10-03程序演示還是先用SWT Desiner創建界面程序。然后創建一個Display對象和Image對象,和一個GC對象。類org.eclipse.swt.graphics.GC是一個封裝了所有可…

swool tcp mysql_swoole/mysql(異步)

# 異步Swoole\Mysql**(要求Workerman版本>3.3.6)**## 注意:此組件由swoole底層提供,由C語言編寫,具有超高性能。## 安裝:安裝有swoole擴展即可## 示例:phprequire_once ../Autoloader.php;use Workerman\Worker;use \Swoole\My…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 進行數據庫操作

一、前言在手機中進行網絡連接不僅是耗時也是耗電的,而耗電卻是致命的。所以我們就需要數據庫幫助我們存儲離線數據,以便在用戶未使用網絡的情況下也可以能夠使用應用的部分功能,而在需要網絡連接的功能上采用提示方式,讓用戶決定…

python 絕對值誤差小于10-6_Python 被低估了的 10 個小技巧

hi,各位朋友們,小帥b回來啦,幾日不見,想我了么?今天給大家分享幾個我認為不錯的 Python 小技巧,有些可能被你低估了喲,get 起來!那么接下來就是:學習 Python 的正確姿勢俗…

java bean驗證_javaBean--登錄驗證

packagecom.JAVABean;importjava.util.HashMap;importjava.util.Map;publiccla***egister{privateStringname;privateStringage;privateStringemail;privateMaperrorsnull;//聲明一個保存全部錯誤信息的map集合publicRegister(){//在構造方法中初始化屬性this.name""…

java讀取src xml文件路徑_Java獲取路徑方法相對路徑讀取xml文件方法

(1)、request.getRealPath("/");//不推薦使用獲取工程的根路徑(2)、request.getRealPath(request.getRequestURI());//獲取jsp的路徑,這個方法比較好用,可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPa…

釋放tcp連接的命令是_最實用的6個網絡命令,網絡故障不求人

很多弱電工程師朋友在項目中經常遇到一些網絡故障,需要通過一些一些命令去檢測、定位故障點,通過使用網絡命令,故障解決的工作取得了事半功倍的效果。下面就一起溫故而知新吧!一、ping命令(因特網包探索器)…

airpods2怎么查正品 ios11系統_拼多多AirPods2開箱評測,4種辦法教你驗真假,10個AirPods技巧教你玩...

大家好,Apple今天給大家分享一下拼多多上車AirPods 2無線充電盒版的經驗,順便整理了一波AirPods使用技巧,希望你用得上。入手理由自從去年10月份入手了iPhone XR,其實就挺想入款無線耳機的,所以一直在等AirPods升級換代…

java中for break的用法_java break語句的使用方法

在switch語中,break語句用來終止switch語句的執行。使程序 switch語句后的第一個語句 開始執行。在Java中,可以為每個代碼塊加一個括號,一個代碼塊通常 用大括號{}括起來的一段 代碼。加標號的格式break語句有兩種形式:無標簽和有標簽。無標簽的break語句用來跳出單…

windows文件保護_Windows系統下媲美時間機器的系統備份工具,統統免費

Windows和macOS系統誰更美?不同的人有不同的見解。但體驗過macOS之后很多電腦玩家會感嘆,TimeMachine時間機器太好用了,Windows下有沒有同類功能呢?TimeMachine提供了全盤完整備份、增量備份、文件歷史版本等功能。它們在Windows …

JAVA結課_一點心情,寫java結課考試之前

突然發現,已經好久沒有上來寫blog了,本來還以為能夠天天寫,后來發現,確是心有余力而不足啊。學期進入中段,課業慢慢多了,各種各樣的事情也接踵而來了。本學期的java課程也已經結課了,8周32個學時…

sql怎么撤回update_騰訊SQL“現役運動員”給你的實踐小技巧

引言SQL的全稱是Structured Query Language(結構化查詢語言),是一種古老而簡潔的程序設計語言。看似平平無奇,一直被各種吐槽,但卻有著眾多語言所難得的漫長壽命,并展現出極好的拓展性,在不同時期衍生出不同的子語言。…