小貝 mysql建表以及列屬性

2021-07-03 12:48:15 字數 4664 閱讀 3457

建表: 其實就是宣告列的過程,

資料最終是以檔案的形式放在硬碟(記憶體)

列: 不同的列型別佔的空間不一樣. 

選列的原則: 夠用,不浪費

列型別有: 整形、浮點型、字元型、日期/時間型

tinyint/smallint/mediumint/int/bigint

2.1.1、詳解tinyint 乙個位元組

共8位

假設8為都為0 ==》 轉化為十進位制 0

假設8為都為1 ==》 轉換為十進位制 2^8-1

由於計算機也能夠儲存負數,並採用最高位為符號位

最高位為0代表正數 最高位為1代表負數

當最高位為0時:

[0] => 0~2^7-1 轉化為十進位制 0~127

當最高位為1時

[1] => 0~-2^7  轉化為十進位制 0~-128

列 位元組

無符號有符號

tinyint 1

0~255

-128~127

smallint 2

0~2^16-1

-2^15~2^15

medium 3

0~2^24-1

-2^23~2^23

int 4

0~2^32-1

-2^31~2^31

bigint 8

0~2^64-1

-2^63~2^63

2.1.2、例項

2.1.3、整形列可選屬性: not null unsigned zerofill

總結:

a、宣告整數型列需要0填充時,它一定是無符號的

b、進行0填充時,不會改變其大小值

對於浮點列型別,在mysql中單精度值使用4個位元組,雙精度值使用8個位元組。

float與decimal的區別:decimal更精確

char:定長char(m),m代表寬度,即可容納的字元數

varchar:變長char(m),m代表寬度,即可容納的字元數

區別:

a、效率方面看,char<=1               varchar<1

即char會有完全利用的情況,而varchar則不會。因為同char對比,varchar值儲存時只儲存需要的字元數,另加乙個位元組來記錄長度

b、針對尾部(從左往右的方向看),char會過濾尾部有空格的情況,而varchar不會。因為char儲存的字元少於定義的字元長度時,就會對尾部進行空格填充.進行展示時,再把尾部的空格去掉

案例:

createtable vc (v varchar(4), c char(4));

insertinto vc values ('ab  ', 'ab  ');

selectconcat(v, '+'), concat(c, '+') from vc;

位元組問題:

varchar(n),  這裡的n是指字元數,並不是位元組數.占用的位元組數與編碼有關

utf-8,乙個漢字3位元組 英文本母1位元組

mysql 5.0

以上的版本:

1.乙個漢字佔多少長度與編碼有關:

utf-

8:乙個漢字=

3個位元組

gbk:乙個漢字=

2個位元組

2.varchar(n)表示n

個字元,無論漢字和英文,

mysql

都能存入

n個字元,僅是實際位元組長度有所區別

3.mysql

檢查長度,可用

sql語言:

select length(fieldname) from tablename

來檢視

2.4、日期與時間型

總結

mysql以yyyy格式檢索和顯示year值。範圍是1901到2155。

可以指定各種格式的year值:

·        四位字串,範圍為'1901'到'2155'。

·        四位數字,範圍為1901到2155。

·        兩位字串,範圍為'00'到'99'。'00'到'69'和'70'到'99'範圍的值被轉換為2000到2069和1970到1999範圍的year值。

·        兩位整數,範圍為1到99。1到69和70到99範圍的值被轉換為2001到2069和1970到1999範圍的year值。請注意兩位整數範圍與兩位字串範圍稍有不同,因為你不能直接將零指定為數字並將它解釋為2000。你必須將它指定為乙個字串'0'或'00'或它被解釋為0000。

2.4.2、 time

mysql以'hh:mm:ss'格式檢索和顯示time值(或對於大的小時值採用'hhh:mm:ss'格式)。time值的範圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是time型別不僅可以用於表示一天的時間(必須小於24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大於24小時,或者甚至為負)。

2.4.3、 date

當你只需要日期值而不需要時間部分時應使用date型別。mysql用'yyyy-mm-dd'格式檢索和顯示date值。支援的範圍是'1000-01-01'到 '9999-12-31'。

2.4.4、  datetime

總結:雖然

mysql

有時間與日期的型別。但在一般的開發過程中涉及到跟時間方面的列型別時,通常使用

int即整形型別。主要考慮到開發方面的方便,而且整形效率高。

the quieter you become,the more you are able to hear!

mysql 列型別以及屬性特點

整形列 乙個位元組有8個位,例如 int 型別的列存入數字1,00000000 00000000 00000000 00000001它就在最低位置上存入乙個1,由此可見是極大的浪費資源,所以在建立列型別的時候,依實際情況而定。整型列的可選屬性有 unsigned 非負 zerofill 零填充 m ...

mysql建表以及修改表sql指令碼編寫

完全忘完怎麼寫了。記錄下 mysql建表 create table stream box stream box id varchar 200 character set utf8 collate utf8 general ci not null,stream line id varchar 50 c...

MySQL 列屬性(表的約束條件)

表的建立create table 表名 列名a 資料型別 資料長度 列級約束條件,列名b 資料型別 資料長度 列級約束條件,列名c 資料型別 資料長度 列級約束條件,表級約束條件 約束條件涉及到多個屬性列,則須定義在表級上 create table runoob tbl runoob id int ...