MySQL時間類型和表定義及索引定義
1. 時間類型MySQL提供了幾種用于存儲時間的數(shù)據(jù)類型,包括date、time、datetime、timestamp和year。這些數(shù)據(jù)類型有不同的范圍和用途。- date類型:支持的范圍為1000
1. 時間類型
MySQL提供了幾種用于存儲時間的數(shù)據(jù)類型,包括date、time、datetime、timestamp和year。這些數(shù)據(jù)類型有不同的范圍和用途。
- date類型:支持的范圍為1000-01-01到9999-12-31。
- time類型:支持的范圍是-838:59:59到838:59:59。
- datetime類型:支持的范圍是1000-01-01 00:00:00到9999-12-31 23:59:59。
- timestamp類型:時間戳,表示當前時刻,類似函數(shù)now()獲得的值,在INSERT或UPDATE操作時自動獲得(更新)為當前時間。
- year類型:四位字符串,范圍為1901到2155;四位數(shù)字,范圍為1901到2155;兩位字符串,范圍為00到99;兩位整數(shù),范圍為1到99。
2. 表定義基本形式
在MySQL中,表的定義使用CREATE TABLE語句。一個表的基本定義形式如下:
```
CREATE TABLE [IF NOT EXISTS] 表名 (
字段列表,
[索引或約束列表]
)
```
字段的定義形式為:
```
字段名 字段類型 [字段屬性1 字段屬性2 ...]
```
字段屬性列表可以有多個字段屬性,使用空格隔開。根據(jù)具體數(shù)據(jù)需求,可以添加不同的字段屬性,例如:
- auto_increment:自增長值,用于整數(shù)類型,并且必須是一個“key”(主鍵或唯一鍵)。
- primary key:設置為主鍵,通過該字段的值可以唯一確定一行數(shù)據(jù),并且默認不為空。
- unique key:唯一鍵,設定該字段的值是唯一的,不可重復的,但可以為空。
- not null:設定為不為空。
- default 默認值:設定默認值,如果插入數(shù)據(jù)時該字段沒有給值,就使用該默認值。
- comment '字段的說明文字':為字段添加說明文字。
示例代碼如下所示:
```
CREATE TABLE tab_shuxing (
id int auto_increment primary key,
user_name varchar(20) unique key not null comment '用戶名',
user_pass char(32) comment '密碼,使用md5加密',
age tinyint unsigned default 18 comment '年齡'
);
```
3. 索引的定義
索引是數(shù)據(jù)庫中用于提高查詢速度的一種數(shù)據(jù)結(jié)構(gòu)。在MySQL中,我們可以定義不同類型的索引。
- 普通索引:使用KEY關(guān)鍵字定義,例如`KEY(字段名...)`。
- 主鍵索引:使用PRIMARY KEY關(guān)鍵字定義,例如`PRIMARY KEY(字段名...)`。當定義一個字段為主鍵時,同時也自動定義了該字段的索引。
- 唯一索引:使用UNIQUE KEY關(guān)鍵字定義,例如`UNIQUE KEY(字段名...)`。當定義一個字段為唯一鍵時,同時也自動定義了該字段的索引。
- 全文索引:使用FULLTEXT關(guān)鍵字定義,例如`FULLTEXT(字段名...)`。目前MySQL對中文的全文索引支持度較低,實用性不高。
- 外鍵索引:使用FOREIGN KEY關(guān)鍵字定義,例如`FOREIGN KEY(字段名...) REFERENCES 其他表名(對應其他表中的字段名)`。外鍵是關(guān)系數(shù)據(jù)庫中表與表之間聯(lián)系的一種機制。
通過定義適當?shù)乃饕?,可以提高?shù)據(jù)庫的查詢效率和數(shù)據(jù)的一致性。