20141230 mysql数值类型和列属性二
枚舉字符串
枚舉字符串指的是在定義之初就確定要存放的字符串有哪些,然后在數據進行存儲的時候就只能存儲已經定義過的字符串,只能使用任意的一個字符串。(單選框)
語法:enum
字段名 enum(字符串1,字符串2,…); 枚舉采用最多2個字節保存數據,最多能存65535個數據
枚舉的意義
1. 規范數據:沒有進行維護的數據不能插入
2. 節省空間:實際存儲的數據是數字
雖然SQL是一種強類型語言,但是SQL能夠自動轉換數據類型(與php一樣)
select有一個特點:后面可以跟任意表達式
證明枚舉存儲的是數字
枚舉的字符串與數值的關系
因為枚舉內部真實存儲的數值,因此枚舉可以通過數值進行數據插入。
枚舉存儲原理
枚舉的應用
1. 固定的不變的,但是具有多個值的數據可以使用枚舉
集合字符串
集合字符串與枚舉字符串大致一致,但是集合數據指的是可以選中定義的值中間的部分數據或者全部數據。多選
語法:set
字段名 set(字符串1,字符串2,…);
集合中的數據,每一個數據都是占用一個字節中的一個位來進行表示,然后保存是數值卻是所有的位共同轉換成十進制顯示
數據在集合中占位的原理
換算的時候需要將二進制顛倒過來,然后進行換算成十進制。
set最多占用8個字節存儲數據:8個字節共64位,最多集合只能存放64個元素,但是組合卻有2^64之多。
集合的意義
1. 規范了數據,只能存儲定義過的數據
2. 節省了空間
雖然集合和枚舉都能夠為數據庫節省空間,并且能夠規范數據,但是作為php程序員,增加了php維護數據的難度,所以php程序員基本上不使用這兩種數據類型。
時間日期類型
SQL中用來存儲時間或者日期的數據類型
| 類型 | 顯示格式 | 取值 | 存儲空間 | 零值 |
| DATETIME | YYYY-MM-DD HH:MM:SS | '1000-01-01 00:00:00'到'9999-12-31 23:59:59' | 8 | 0000-00-00 00:00:00 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 是‘1970-01-01 00:00:00’到2038-01-19 03:14:07 | 4 | 0000-00-00 00:00:00 |
| DATE | YYYY-MM-DD | '1000-01-01'到'9999-12-31 | 3 | 0000-00-00 |
| TIME | HH:MM:SS | -838:59:59'到'838:59:59' | 3 | 00:00:00 |
| YEAR | YYYY | 1901到2155 | 1 | 0000 |
datetime:日期時間,8個字節存儲
timestamp:時間戳,使用標準整型存儲,不是整型數據,而是與datetime格式一樣的數據
date:datetime的日期部分
time:datetime的時間部分,time表示的不是時間點,是時間段
year:年份,1個字節存儲,只能表示255年
時間格式:表示時間段
作為php程序員,基本上不適用SQL的任何時間格式,都是使用php的時間戳
在mysql中,任意一條記錄的長度不能超過65535個字節。
varchar的理論數據長度是65535個字符
GBK/UTF8編碼最大的varchar長度
在SQL中,所有的字段只要有一個字段允許為空,那么整條記錄就需要留出一個字節用來保存null,如果有多個字段為空,也只需要一個字節。
text文本類型不占用記錄的總長度,是額外開辟空間的存儲數據,但是text字段本身要占據一定的數據長度(10個字節)
列屬性
除了數據類型對列進行數據規范之外,還有一些額外的限制對字段進行約束。
列屬性:NULL/not null,default,primary key,auto_increment,comment,unique key
NULL
字段是否允許為空,不允許為空就是not null。
語法:字段名 數據類型 NULL/NOT NULL,默認的是null
默認值
關鍵字default,在定義結構的時候,如果字段沒有被指定數據,那么系統會使用默認的數據來進行數據填充。
默認值的使用
1. 要使用默認值,不對該字段進行數據插入(字段列表不能出現對應的字段)
2. 要使用默認值,可以在數據值插入的位置使用default關鍵字
主鍵
主要的鍵,用主鍵修飾的字段,不能為null,也不能出現任意數據的重復。能夠唯一的標識出一條記錄。一張表只能有一個主鍵。
添加主鍵:
1. 在要做主鍵的字段之后添加primary key關鍵字
2. 在所有的字段之后,指定主鍵,可以指定復合主鍵(多字段主鍵)
語法:primary key(字段列表)
3. 假設表已經存在了,但是需要增加主鍵,可以通過修改表的結構來增加主鍵:必須實現保證該字段的數據沒有重復。
a) 修改字段,給字段增加primary key屬性
b) 可以直接通過修改表結構增加主鍵(復合主鍵)
主要的效果:具有唯一性,不能插入重復的數據
主鍵不能修改,但是可以刪除
語法:修改表結構
alter table 表名 drop primary key;
自增長
auto_increment,當某個字段有了自增長屬性之后,如果改字段在進行數據新增的時候,沒有指定數據,那么系統會自動在原有的基礎上自動+1,說明字段類型必須是整型。
自動增長通常是搭配主鍵使用
自增長的應用
1. 不為當前字段賦值
2. 可以為自動增長字段使用null/default關鍵字顯示的調用
自動增長之所以能夠填充對應的數據,是因為在表的選項中已經指定好對應的值了
修改自動增長:修改自動增長下一個子增長值,但是修改的值只能比當前已有的數據的值要大,而不能小。
alter table 表名 auto_increment = 值
效果
刪除自增長
alter table 表名 modify 字段 不再增加auto_increment屬性;
auto_increment往往搭配主鍵:刪除主鍵
想要刪除有自動增長的主鍵,必須先刪除自動增長再刪除主鍵。
自增長控制:初始值和步長
show variables like ‘auto_increment%’;
注意:一張表只能有一個自增長。
修改步長
set auto_increment_increment = 2;
效果
這種修改是針對當前用戶當前連接有效(會話級別)
作業:
1. 制作一個教學管理系統的數據庫:學生,班級,老師等,根據不同的數據的需求確定對應的屬性和數據類型
2. 制作小網站:教學管理系統
a) 登錄驗證,查看所有的學生信息
b) 老師能夠查看所有的信息
posted on 2017-02-22 18:40?山山未遲 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lifushan/p/6430434.html
總結
以上是生活随笔為你收集整理的20141230 mysql数值类型和列属性二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GRUNT----JSHINT
- 下一篇: 使用pull解析XML文件