drop table if exists `user`;
create table user (
id bigint(20) unsigned not null auto_increment
comment '主鍵',
username varchar(50) not null default ''
comment '使用者名稱',
username_type varchar(20) not null default ''
comment '使用者型別',
user_password varchar(50) not null default ''
comment '使用者密碼',
create_time timestamp not null default current_timestamp
comment '建立時間',
update_time timestamp not null default current_timestamp on update current_timestamp
comment '更新時間',
primary key (id),
unique key idx_urn(username) using btree
engine = innodb
default charset = utf8mb4
comment = '使用者資訊表';
上圖乙個典型的mysql 建表語句; 常識 設定 default預設值,以及not null 不能為空
char 和 varchar區別:
mysql資料庫char與varchar區別
default current_timestamp on update current_timestamp 意為 預設值為當前時間,並且在update時按照 current_timestamp進行更新這一列;
mysql資料型別說明
mysql資料型別
數字型別
整數: tinyint、smallint、mediumint、int、bigint
浮點數: float、double、real、decimal
字串型別
字串: char、varchar
文字: tinytext、text、mediumtext、longtext
二進位制(可用來儲存、**等): tinyblob、blob、mediumblob、longblob
字串型別
型別單位
最大特性
char
字元最大為255字元
儲存定長,容易造成空間的浪費
varchar
字元可以超過255個字元
儲存變長,節省儲存空間
text
位元組總大小為65535位元組,約為64kb
text在mysql內部大多儲存格式為溢位頁,效率不如char
mysql預設為utf-8,那麼在英文模式下1個字元=1個位元組,在中文模式下1個字元=3個位元組。
數字型別
整形type
storage
minumun value
maximum value
(bytes)
(signed/unsigned)
(signed/unsigned)
tinyint
-128
smallint
-32768
mediumint
-8388608
int-2147483648
bigint
-9223372036854775808
浮點型屬性
儲存空間
精度精確性
說明float(m, d)
4 bytes
單精度非精確
單精度浮點型,m總個數,d小數字
double(m, d)
8 bytes
雙精度比float精度高
雙精度浮點型,m總個數,d小數字
float容易造成精度丟失
定點數decimal
高精度的資料型別,常用來儲存交易相關的資料
decimal(m,n).m代表總精度,n代表小數點右側的位數(標度)
1 < m < 254, 0 < n < 60;
儲存空間變長
時間型別
型別位元組
例精確性
date
三位元組2015-05-01
精確到年月日
time
三位元組11:12:00
精確到時分秒
datetime
八字節2015-05-01 11::12:00
精確到年月日時分秒
timestamp
2015-05-01 11::12:00
精確到年月日時分秒
mysql在5.6.4版本之後,timestamp和datetime支援到微秒。
timestamp會根據系統時區進行轉換,datetime則不會
儲存範圍的區別
timestamp儲存範圍:1970-01-01 00::00:01 to 2038-01-19 03:14:07
datetime的儲存範圍:1000-01-01 00:00:00 to 9999-12-31 23:59:59
一般使用timestamp國際化
如存時間戳使用數字型別bigint
對於 key索引的型別
mysql中key 、primary key 、unique key 與index區別
外來鍵:mysql 外來鍵(foreign key)的詳解和例項
mysql 下,外來鍵設定:
on delete rule:
1、restrict:約束
如果存在從資料,不允許刪除主資料。
2、no action
如果存在從資料,不允許刪除主資料。
3、cascade:級聯
刪除主資料,順便也刪掉從資料。
4、set null
刪除主資料,從資料外來鍵的值設為null。
on update rule:
1、restrict:約束
修改主資料中被關聯的field,如果有該主資料有從資料,不允許修改。
2、no action
修改主資料中被關聯的field,如果有該主資料有從資料,不允許修改。
3、cascade
修改主資料中被關聯的field,如果有該主資料有從資料,順便一起修改從資料的外鍵值。
4、set null
修改主資料中被關聯的field,如果有該主資料有從資料,從資料的外鍵值設為null。
索引key所使用的資料結構
mysql裡的索引型別主要有以下幾種。
1. b-tree索引
最常見的索引型別,基於b-tree資料結構。b-tree的基本思想是,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。所以b-tree適合用來查詢某一範圍內的資料,而且可以直接支援資料排序(order by)。但是當索引多列時,列的順序特別重要,需要格外注意。innodb和myisam都支援b-tree索引。innodb用的是乙個變種b+tree,而myisam為了節省空間對索引進行了壓縮,從而犧牲了效能。
2. hash索引
基於hash表。所以這種索引只支援精確查詢,不支援範圍查詢,不支援排序。這意味著範圍查詢或order by都要依賴server層的額外工作。目前只有memory引擎支援顯式的hash索引(但是它的hash是nonunique的,衝突太多時也會影響查詢效能)。memory引擎預設的索引型別即是hash索引,雖然它也支援b-tree索引。
例子:create table testhash (
fname varchar(50) not null,
lname varchar(50) not null,
key using hash(fname)
) engine =memory;
3. spatial (r-tree)(空間)索引
只有myisam引擎支援,並且支援的不好。可以忽略。
4. full-text索引
主要用來查詢文字中的關鍵字,而不是直接與索引中的值相比較。full-text索引跟其它索引大不相同,它更像是乙個搜尋引擎,而不是簡單的where語句的引數匹配。你可以對某列分別進行full-text索引和b-tree索引,兩者互不衝突。full-text索引配合match against操作使用,而不是一般的where語句加like。
mysql建立使用者表 mysql 建庫建表建使用者
1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...
mysql建表思路 MySQL 建表思路
思想 硬碟如倉庫,表如倉庫中貨架 常用與不常用等分類 欄位如貨物 尺寸是固定或變動 訪問貨物涉及到貨架的佔位 效率。資料型別選用,建表思路,正規化 資料型別特點 資料型別的速度關係 最快 整形 date,time char,enum varchar text blob 最慢 char 與 varch...
mysql建表建索引6 mysql建表建索引
建表 create table sj projects id int 11 not null auto increment,title varchar 255 not null default comment 專案名稱 platform id int 11 not null default 0 co...