資料庫非空
① mysql創建表時的空值和非空值設置有什麼講究
空值是一種特殊的狀態, 表示某一個欄位"沒有被處理過"
幾乎在所有的資料庫中甚至是編程語言中, 空與非空都有其存在的意義, 舉個例子, 一個人員表中, 有一個年齡欄位, 這個年齡欄位如果為非 空, 則在不知道人員年齡的情況下, 數據無法入庫, 否則會顯示個奇怪的年齡(比如0歲, 或者-1歲等)
而有些情況澤不可以為空, 最常見的就是"主鍵", 比如身份證號之類的
② 資料庫怎樣設置欄位非空
資料庫層面的控制不太好控制吧,我是不知道怎麼控制
不過,在表的層次可以控制,在創建表的時候,可以設置所有欄位為非空
③ 資料庫的外鍵何時允許為空何時不為空
資料庫的外鍵可以為空,也可以非空,但是如果非空,則這個值必須在主表中存在。
比如主表是一個班級,主鍵是班級id,
字表是學生分配班級表,主鍵是學生id,外鍵是所在班級id。
如果一個學生的外鍵id為空,說明這個學生還沒有被分配到任何一個班級
如果一個學生的外鍵id非空,並且是班級表中的某個id,則說明學生分配到這個班級
如果一個學生的外鍵id非空,並且不屬於任何班級,則數據插入肯定報錯。也就是說這種情況不存在。
--例子:
create table clerk(
id int,
name varchar2(10),
manager_id int);
alter table clerk add constraint pk_clerk_id primary key(id);
alter table clerk add constraint fk_clerk_manager_id foreign key(manager_id) references clerk(id);
insert into clerk values (1, 'boss', null);
insert into clerk values (2, 'zhang', null);
insert into clerk values (3, 'zhang', 2);
--、下列語句報錯,因為5不是主鍵的值
insert into clerk values (4, 'zhang', 5);
SQL> select * from clerk;
ID NAME MANAGER_ID
---------- ---------- ----------
1 yang
2 zhang
3 zhang 2
④ 資料庫中表的創建中的not null是什麼意思,怎麼設置
不允許這個欄位為空值,寫代碼的話,在字元類型後面加上就可以了,例如:
create tableemp(
id varchar2(10) not null, --這個欄位不能為空
name varchar2(10)
);
除了強制設定not null的,建表後,主鍵、分區欄位等都是非空的。
(4)資料庫非空擴展閱讀:
not null:
comment的作用是給表創建備注,not null 意思是給欄位不允許為空,是一個固定的語句表示給表創建的備注不允許為空,如果改為comment null那意思就是可以為空了。
資料庫管理系統是資料庫系統的核心組成部分,主要完成對資料庫的操縱與管理功能,實現資料庫對象的創建、資料庫存儲數據的查詢、添加、修改與刪除操作和資料庫的用戶管理、許可權管理等。
⑤ 資料庫非空約束設置
要是沒有數據的話直接用以下語句即可
alter table student modify sname char(10) not null;
但是有數據的話 就不能用上面方法了,
alter table student add sname_temp char(10) not null;
update student set sname_temp=sname;
alter table drop column sname_temp;
alter table test rename column sname_temp to sname;
這種方法會使列名發生變化,而且欄位順序增加 有可能發生行遷移,對應用程序會產生影響
⑥ 資料庫欄位有沒有必要設置非空
關鍵欄位必須要非空。
空值有時候是有用的,比如可以簡單判斷該值是否為有效值。
但是有時空值會造成錯誤 ,一個空值數據沒有任何類型,執行某些運算或顯示時會出錯。
所以,根據您的需要和習慣,來決定是否全部設置為非空。
對於有空值的欄位,在查詢和運算時一般要使用ISNULL函數給出默認值來參加運算。
一般來說:
數據值型欄位用ISNULL(fieldname,0)
字值型欄位用ISNULL(FIELDNAME,'')
日期型欄位用ISNULL(FIELDNAME,'1900-01-01')
⑦ 資料庫語句條件屬性非空,備注外鍵怎麼寫
20個資料庫設計最佳實踐: 使用明確、統一的標明和列名,例如 School, SchoolCourse, CourceID。 數據表名使用單數而不是復數,例如 StudentCourse,而不是StudentCourses。 數據表名不要使用空格。 數據表名不要使用不必要的前綴或者後綴,例如使用School,而不是TblSchool,或者SchoolTable等等。 資料庫中的密碼要加密,到應用中再解密。 使用整數作為ID欄位,也許現在沒有這個必要,但是將來需要,例如關聯表,索引等等。 使用整數欄位做索引,否則會帶來很大的性能問題 。 使用bit 作為布爾欄位,使用整數或者varcha是浪費。同時,這類欄位應該以「Is」開頭。 要經過認證才能訪問資料庫,不要給每一個用戶管理員許可權。 盡量避免使用「select *」,而使用「select [required_column_list]」以獲得更好的性能。 假如程序代碼比較復雜,使用ORM框架,例如hibernate,iBatis。ORM框架的性能問題可以通過詳細的配置去解決。 分割不常使用的數據表到不同的物理存儲以獲得更好的性能。 對於關鍵資料庫,使用安全備份系統,例如集群,同步等等。 使用外鍵,非空等限制來保證數據的完整性,不要把所有的東西都扔給程序。 缺乏資料庫文檔是致命的。你應該為你的資料庫設計寫文檔,包括觸發器、存儲過程和其他腳本。 對於經常使用的查詢和大型數據表,要使用索引。數據分析工具可以幫助你決定如何建立索引。 資料庫伺服器和網頁伺服器應該放在不同的機器上。這回提高安全性,並減輕CPU壓力。 Image和blob欄位不應該定義在常用的數據表中,否則會影響性能。 範式(Normalization)要按照要求使用以提高性能。Normalization做的不夠會導致數據冗餘,而過度Normalization 會導致太多的join和數據表,這兩種情況都會影響性能。 多花點時間在資料庫設計上,否則你將來會付出加倍的時間來償還。設置外鍵:方法一:SQL語句alter table 表名 add constraint 外鍵名 foreign key(欄位名) references 主表名(欄位名) on delete cascade方法二:不想寫sql 語句也可以直接用圖形化操作 選擇你要創建外鍵的表,反鍵選擇修改表
⑧ 資料庫欄位設計成允許空好還是非空默認值0好
從數據存儲上來說,當然是設置成可為null的好了;因為null是不分配存儲空間的。
可是充使用的方便性上來說,使用默認值,在很多情況下,是很方便的。
至少不要考慮為空的情況。
⑨ sql 語言中,非空語句是什麼
非空語句 是不是 指
檢索條件
資料庫的表裡面, 某個欄位的值 非空?
那就是
SELECT * FROM 表 WHERE 欄位 IS NOT NULL;
如果你是 創建表的時候, 要求某個欄位,不能為空
那就是
CREATE TABLE 表 (
欄位 數據類型 NOT NULL
);