MySQL入門(二)

一、列類型

1. 數值型

  • 整數型:tinyint、smallint、mediumint、int、bigint(顯示寬度和zerofill一起使用,e.g. int_3 tinyint(3) unsigned zerofill)
  • 小數型:其中浮點型有兩個float(單精度)和double(雙精度),定點型爲decimal

2. 時間日期類型

  • datetime:格式爲YYYY-mm-dd HH:ii:ss,表示範圍1000-9999年
  • date:datetime的前半部分
  • time:datetime的後半部分,可正可負
  • timestamp:格式與datetime一致,從1970年開始,紀錄被更新,該字段自動更新
  • year

3. 字符串類型

  • char:定長字符串,最大長度255,浪費磁盤空間,效率高
  • varchar:變長字符串,理論最大長度65536,節省磁盤空間,效率低
  • text:通常超過255個字符就用該數據類型
  • blob:存儲二進制數據
  • enum:單選
  • set:多選
MySQL中規定任何一條紀錄不能超過65535個字節。

二、列屬性

1. 空屬性

null/not null

2. 列描述

comment

3. 默認值

default

4. 主鍵

primary key,一張表只能有一個主鍵,值不能爲空。

  • 增加主鍵
        - 在字段後直接跟primary key

        - 複合主鍵,在所有字段之後primary key(字段1, 字段2, ...)

        - atler table 表名 add primary key(字段列表);

        - alter table 表名 modify [column] 字段名 數據類型 [列屬性] [位置];

  • 刪除主鍵
        alter table 表名 drop primary key;

5. 唯一鍵

unique/unique key,一張表可以有多個唯一鍵,值可以爲空。

  • 增加唯一鍵
        - 在字段後直接跟unique/unique key

        - 複合唯一鍵,在所有字段之後unique key(字段1, 字段2, ...)

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

        - alter table 表名 modify [column] 字段名 數據類型 [列屬性] [位置];

  • 刪除唯一鍵
        alter table 表名 drop index 索引名稱;

6. 自增長

auto_increment(不給值、給default、給null,本身必須是索引,必須是整數數據類型,一張表最多只能有一個自動增長屬性),查看自增長變量show variables like 'auto_increment%';,刪除使用modify。

三、數據高級操作

1. 主鍵衝突

insert into 表名[(字段1, 字段2, ...)] values(值1, 值2, ...) on duplicate key update 字段 = 新值;

replace into 表名[(字段1, 字段2, ...)] values(值1, 值2, ...);

2. 複製表結構

create table like 庫名.表名;

3. 蠕蟲複製

insert into 表名[(字段列表)] select 字段列表/* from 表名;

4. 高級查詢

select [select選項] 字段列表[字段別名]/* from 表名 [where子句] [group by子句] [having子句] [order by子句] [limit子句];

  • select選項:all、distinct(用來去除所有字段都重複的紀錄)
  • where子句:用來過濾行
  • group by子句:以便能對每個組進行聚集計算,聚集函數avg()、count()、min()、max()、sum()以及函數group_concat()
  • having子句:用來過濾組
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章