Mysql學習 字段型別 屬性

2021-10-03 14:50:52 字數 4650 閱讀 1381

一、字段型別作用

mysql中用來規定實際儲存的資料合適

二、mysql中有四大資料型別

1)整數型別:只能儲存整數

標準整型 int ,使用乙個位元組儲存整數,最多儲存256個整數(-128-127)

短整型 smallint

大整型 bigint 使用8位元組儲存

(數值型儲存有正負之分,

在字段後面新增zerofill讓小於顯示寬度的 數值前面自動填充0,只能針對正數)

2)小數型別:可以儲存有效數值

浮點數:float/double

·單精度:float,使用4個位元組儲存,精度範圍為7-8個有效數字

·雙精度:double,使用8個位元組儲存,範圍15-16為有效數字

浮點數超過精度範圍會自動四捨五入

精度可以指整數和小數部分

·預設不指定,整數部分不超過最大值,小數部分保留兩位。

·可以指定:float/double(總長度,小數部分長度)

定點型:decimal,能夠保證精度的小數

·不固定儲存空間儲存

·每9個數字使用4個位元組儲存

·定點型可以指定整數部分長度和小數部分長度

·預設不指定,10位有效數字,0位小數

·可以指定:decimal(有效整數,小數部分數字)

·有效位數不超過65個

·整數部分超出會保錯,小數部分超出四捨五入

3)字串型別:可以儲存字串資料

定長型

char(l),指定固定長度的儲存空間儲存字串(最大值是255)
變長型

varchar(l) ,更具實際儲存的資料變化儲存空間(最大值理論是65535)
4)時間日期型別:儲存時間格式資料

year,mysql中用來儲存年份的型別

·mysql中使用乙個位元組儲存年份

·year能夠表示的範圍是1901-2023年(year的特殊值是0000)

·year允許使用兩種設計方式(效果一樣)

·year

·year(4)

時間戳

timestamp,基於格林威治時間的時間記錄

·mysql中時間戳的表現形勢不是秒數,而是年月日時分秒

·yyyy-mm-dd hh:ii:ss

`yyyymmddhhiiss

·timestamp使用4個位元組儲存

·timastamp的特點是所對應的記錄不論是哪個欄位被更新,該字段都會更新到當前的時間

(mysql8以後取消了自動更新,需額外使用屬性on update current timestamp)

日期

date,用來記錄年月日資訊(1001-01-01 ~ 9999-12-31)

儲存日期的格式:yyyy-mm-dd

使用3個位元組儲存資料

日期時間

datatime ,用來綜合儲存日期和時間的(1000 ~ 9999)

·使用8個位元組儲存

·儲存格式;yyyy-mm-dd hh:ii:ss

時間

time,用來記錄時間或時間段(-838:59:59 ~ 838:59:59)

·使用3個位元組儲存

·時間格式:hh:ii:ss

`時間段格式:d hh:ii:ss(d表示天)

一、屬性的概念:

1)建立在字段型別之後,對字段除型別之外的其他約束

2)屬性實在定義表字段的時候針對每個字段進行屬性設定

3)設定好的屬性可以通過檢視表字段desc進行檢視

4)資料在進行增刪改操作時需要在滿足欄位的要求同時還要滿足屬性的要求

二、null(允許資料是否為空)

·預設情況下資料時允許為空的

·不為空設計:not null

·資料為空一般不具備運算和分析價值,所以通常資料都需要設定為not null(不區分大小寫)

三、default

·預設值在字段設計的時候使用(預設值需要滿足資料型別規範)

·一般的預設值預設為null

·預設值觸發:1.在系統進行資料插入時自動檢測觸發 2.主動使用default關鍵字觸發

四、主鍵primary key(用來保證整張表中對應的字段永遠不會出現重複的資料)

·主鍵在一張表中只能有乙個

·提公升查詢條件的效率

·主鍵不能為null(預設)

·邏輯主鍵:資料沒有具體業務意義,純粹是一種數值資料

·邏輯主鍵通常是整數:int

·邏輯主鍵的目的主要是方便檢索和資料安全(不暴露真實資訊)

·復合主鍵:多個字段共同組成不能重複的資料

·primary key(欄位1,欄位2...段子n)

·聯合主鍵使用不多,一般不hi超過兩個字段

五、主鍵管理

在建立表並且有資料後維護

1)刪除主鍵

alter table 表名 drop primary key;

2)後期新增主鍵(保證資料沒有為null的)

alter table add primary key(欄位名);

六、自增長屬性 auto_increment

·自增長只能是整數型別,而且對應的字段必須是乙個索引(通常邏輯主鍵)

·一張表只能有乙個自增長

·自增長資料可以理解為一種預設值,如果主動給值,那麼自增長不會觸發

·自增長由兩個變數控制

1.初始值:auto_increment_offset 預設是1

2.步長:auto_increment_increment 預設也是1

3.檢視自增長控制:show variables like "auto_increment%"

七、自增長管理

1)修改表中自增長的值,跳過一些值,直接從下次開始按照新的目標值出現

alter table 表名 auto_increment = 50;

(注意:基數會保留原值,偶數會自動加1)

2)修改自增長控制:步長和起始值(針對整個資料庫而非某一張表)

set auto_increment_increment = 2; (當前使用者當前連線有效----區域性)

set @@auto_increment_increment = 2; (所有使用者一直有效----全域性)

八、唯一鍵 unique key(用來維護資料的唯一)

·乙個表種可以有多個唯一鍵

·唯一鍵與主鍵的區別在於與唯一鍵允許資料為null(而且null的資料不限)

·唯一鍵與主鍵一樣,可以提公升字段資料當作條件查詢的效率(索引)

·復合唯一鍵:多個字段共同組成

unique key(欄位1,欄位2...欄位n);

一般不hi出現最多由兩個組成

九、唯一鍵的管理

1)刪除唯一鍵:一張表種不止乙個唯一鍵,所以刪除需要指定唯一鍵名字

alter table 表名 drop index 唯一鍵名字;

2)新增唯一鍵:

alter table 表名 add unique key(字段列表);

十、comment屬性(用於文字描述欄位的作用)

1)描述如果涉及到字符集(中文)一定要在建立時候設定好客戶端字符集(否則會出現亂碼)

2)如果要檢視描述資訊,需要使用show create table檢視;

總結

1)常見搭配

·主鍵(邏輯)+自增長

·唯一鍵+not null(null資料不參與運算,沒有價值)

·預設值以及default關鍵字的使用

1)mysql中規定一條記錄所占用的儲存長度最長不超過65535個位元組

·記錄長度為表中所有字段預計占用的長度之和。

·所有字段只有允許null的存在,系統就會預留乙個位元組儲存null(多個null也只要乙個就好)

·應為mysql的記錄長度存在,varchar永遠達不到理論長度

·gbk儲存:65535*2+2 = 131072(位元組)

·utf8儲存:65535*3+2 = 196607(位元組)

·一般資料長度超過255個字元都會使用text/blob進行儲存(資料儲存不占用記錄長度)

C 入門物件導向學習 字段 屬性

1 using system 2using system.collections.generic 3using system.linq 4using system.text 5using system.threading.tasks 67 namespace classdemo848 set 49 ...

MySQL資料型別及欄位屬性

mysql 資料型別mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間 字串 字元 mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和numeric 以及近似數...

MySQL中欄位屬性 列舉型別(ENUM)

在mysql中,對於 省份 民族 性別 等會存在大量重複字段值並且可以預定義為乙個不重複的字串集合的字段,就可以定義為列舉型別。因為如果對這個字符集增刪改字串的時候,需要alter table。因為對於未來可能會改變的字段不適合用 列舉型別。列舉型別 適用於字段值大量重複,字段值可也預設,預設字符集...