数据库-数据类型及主键外键
數值類型:整型、浮點型
字符串:
char(定長):插入數據或查詢數據都很快,因為char在磁盤上插入數據的時候的存儲空間是固定的,簡單粗暴,直接就是定長空間,那么就不需要考慮數據的長度,所以我們在進行數據查詢的時候,速度也快,因為在讀取數據的時候也不需要考慮數據長度,簡單粗暴的按照定長的空間來取數據,也導致以下空間的浪費。
varchar(不定長):插入和查詢速度都相對較慢,因為它在內容存儲數據的時候,是按照數據的長度來進行存儲的,那么每次存儲數據都需要計算一下數據的長度,按照長度來開辟存儲空間,那么在數據的存儲空間前面還要開辟1-2個字節空間長度來存儲數據的長度,也就是說格式大概是長度+內容,也導致了在我們讀取數據的時候,首先要先讀取數據的長度,然后根據長度再讀取后面的內容,導致速度較慢,但是多數情況下可以節省存儲空間
日期類型:
year、date、time、datetime、timestamp
枚舉類型(enumeration(‘1’,‘2’),單選)
集合類型:set('1','2','3') 多選
?
完整性約束:
not null:不為空
default:
unique:唯一,不允許重復
primary key:主鍵,唯一非空 not null + unique
必須有一個主鍵字段,且只能有一個
1.自動查看你所有的字段里面是否有not null + unique,如果有默認就將這個字段設置為主鍵字段
2.自動給你設置一個看不到的字段作為主鍵
atuo_increment:自增,一般加在主鍵后面,從1開始每次+1,可以設置步長,可以設置起始值
foreign key:外鍵,建立表之間關系用的
一對多:
T1 一對多 t2
T1里面的一條數據,可以對應t2表里面的多條數據
T2表里面加一個字段,t1_id
create table t2(
id int primary key auto_increment,
name char(10) not null,
sex enum('男','女') default '男' not null,
id_card char(18) not null unique
t1_id int not null,
constraint fk_t2_t1 foreign key(t1_id) refernces t1(id)
一對一:
create table t2(
id int primary key auto_increment,
name char(10) not null,
sex enum('男','女') default '男' not null,
id_card char(18) not null unique
t1_id int not null unique,
constraint fk_t2_t1 foreign key(t1_id) refernces t1(id)
多對多:
建立第三張表
t3
t3??? id t1_id t2_id
?
轉載于:https://www.cnblogs.com/wangzhilong/p/10297130.html
總結
以上是生活随笔為你收集整理的数据库-数据类型及主键外键的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓平分位置layout_weight学
- 下一篇: linux cmake编译源码,linu