SQL主鍵不能為NULL,消除重複資料問題

2021-10-21 23:31:53 字數 1156 閱讀 7061

今天在創表的時候,打算把幾個字段設定為主鍵,但是實際情況是有些欄位為null,搜尋之後發現主鍵不能為null,於是研究發現要用unique才能為null。於是我順便講一下一些關於資料庫重複資料的知識點。

主鍵關鍵字是primary key,在創表的時候可以設定乙個主鍵,主鍵不能為null,如下:

create table persons (

id int primary key,

lastname varchar(255),

firstname varchar(255),

age int

)

在創表的時候也可以指定多個欄位為聯合主鍵,其中任意乙個欄位都不能為null,如下:

create table persons (

id int,

lastname varchar(255),

firstname varchar(255),

age int,

primary key(id, lastname, firstname)

)

在實際開發的過程中經常會因為誤操作導致插入重複資料二報錯,但是有時候我們又不想要報錯,可以新增ignore_dup_key = on,如下

create table persons (

id int,

lastname varchar(255),

firstname varchar(255),

age int

primary key(id, lastname, firstname)

with (ignore_dup_key = on)

)

其中最後乙個字段後面的逗號可有可無

我們會想,在使用聯合主鍵的時候,有時候幾個欄位會是null。其中null也是一種值啊,可是卻無法設定主鍵,那麼,unique就是我們的選擇了。

uniqueprimary key的作用幾乎一樣,唯一的區別就是unique可以是null。把以上**primary key換成unique就可以用null了。

該記憶體不能為 read written

記憶體指令不能read,這是在電腦使用中經常出現的問題,記憶體是主機板上的儲存部件,是cpu直接與之溝通,並用其存放當前正在使用的 即執行中 的資料和命令的重要部件。當你用鍵盤或滑鼠輸入某個命令後,cpu就會解釋命令並將指令或程式載入到記憶體中,這樣程式才能夠被執行。而一旦記憶體發生問題了,程式就不...

哪些函式不能為虛函式

常見的不不能宣告為虛函式的有 普通函式 非成員函式 靜態成員函式 內聯成員函式 建構函式 友元函式。1 為什麼c 不支援普通函式為虛函式?普通函式 非成員函式 只能被overload,不能被override,宣告為虛函式也沒有什麼意思,因此編譯器會在編譯時邦定函式。2 為什麼c 不支援建構函式為虛函...

建構函式不能為虛函式

1,從儲存空間角度 虛函式對應乙個vtable,這大家都知道,可是這個vtable其實是儲存在物件的記憶體空間的。問題出來了,如果建構函式是虛的,就需要通過 vtable來呼叫,可是物件還沒有例項化,也就是記憶體空間還沒有,無法找到vtable,所以建構函式不能是虛函式。2,從使用角度 虛函式主要用...