tinyint、smallint、mediumint、int/integer、bigint 1 2 3 4 8mysql
特色: ①均可以設置無符號和有符號,默認有符號,經過unsigned設置無符號 ②若是超出了範圍,會報out or range異常,插入臨界值 ③長度能夠不指定,默認會有一個長度 長度表明顯示的最大寬度,若是不夠則左邊用0填充,但須要搭配zerofill,而且默認變爲無符號整型sql
定點數:decimal(M,D) 浮點數: float(M,D) 4 double(M,D) 8ide
特色: ①M表明整數部位+小數部位的個數,D表明小數部位 ②若是超出範圍,則報out or range異常,而且插入臨界值 ③M和D均可以省略,但對於定點數,M默認爲10,D默認爲0 ④若是精度要求較高,則優先考慮使用定點數,例如貨幣運算ui
char、varchar、binary、varbinary、enum(枚舉)、set(集合)、text、blob(較大的二進制)spa
char:固定長度的字符,寫法爲char(M),最大長度不能超過M,其中M能夠省略,默認爲1 varchar:可變長度的字符,寫法爲varchar(M),最大長度不能超過M,其中M不能夠省略索引
用單引號引發來ci
year年 date日期 time時間 datetime 日期+時間 8 timestamp 日期+時間 4 比較容易受時區、語法模式、版本的影響,更能反映當前時區的真實時間rem
create table 【if not exists】 表名( 字段名 字段類型 【約束】, 字段名 字段類型 【約束】, 。。。 字段名 字段類型 【約束】 it
)table
1.添加列 alter table 表名 add column 列名 類型 【first|after 字段名】; 2.修改列的類型或約束 alter table 表名 modify column 列名 新類型 【新約束】; 3.修改列名 alter table 表名 change column 舊列名 新列名 類型; 4 .刪除列 alter table 表名 drop column 列名; 5.修改表名 alter table 表名 rename 【to】 新表名;
drop table【if exists】 表名;
一、複製表的結構 create table 表名 like 舊錶; 二、複製表的結構+數據 create table 表名 select 查詢列表 from 舊錶【where 篩選】;
where 篩選條件能夠設置爲0 或者1 ,此時爲部分複製表的結構
NOT NULL:非空,該字段的值必填
UNIQUE:惟一,該字段的值不可重複
DEFAULT:默認,該字段的值不用手動插入有默認值
CHECK:檢查,mysql不支持
PRIMARY KEY:主鍵,該字段的值不可重複而且非空 unique+not null
FOREIGN KEY:外鍵,該字段的值引用了另外的表的字段
一、區別:
①、一個表至多有一個主鍵,但能夠有多個惟一
②、主鍵不容許爲空,惟一能夠爲空
二、相同點
都具備惟一性
都支持組合鍵,但不推薦
外鍵:
一、用於限制兩個表的關係,從表的字段值引用了主表的某字段值
二、外鍵列和主表的被引用列要求類型一致,意義同樣,名稱無要求
三、主表的被引用列要求是一個key(通常就是主鍵)
四、插入數據,先插入主表
刪除數據,先刪除從表
能夠經過如下兩種方式來刪除主表的記錄
#方式一:級聯刪除
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
#方式二:級聯置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
create table 表名(
字段名 字段類型 not null,#非空
字段名 字段類型 primary key,#主鍵
字段名 字段類型 unique,#惟一
字段名 字段類型 default 值,#默認
constraint 約束名 foreign key(字段名) references 主表(被引用列)
)
注意:
支持類型 能夠起約束名
列級約束 除了外鍵 不能夠
表級約束 除了非空和默認 能夠,但對主鍵無效
列級約束能夠在一個字段上追加多個,中間用空格隔開,沒有順序要求
一、非空添加非空
alter table 表名 modify column 字段名 字段類型 not null;
刪除非空
alter table 表名 modify column 字段名 字段類型 ;
二、默認
添加默認
alter table 表名 modify column 字段名 字段類型 default 值;
刪除默認
alter table 表名 modify column 字段名 字段類型 ;
三、主鍵
添加主鍵
alter table 表名 add【 constraint 約束名】 primary key(字段名);
刪除主鍵
alter table 表名 drop primary key;
四、惟一
添加惟一
alter table 表名 add【 constraint 約束名】 unique(字段名);
刪除惟一
alter table 表名 drop index 索引名;
五、外鍵
添加外鍵
alter table 表名 add【 constraint 約束名】 foreign key(字段名) references 主表(被引用列);
刪除外鍵
alter table 表名 drop foreign key 約束名;
特色:
一、不用手動插入值,能夠自動提供序列值,默認從1開始,步長爲1
auto_increment_increment
若是要更改起始值:手動插入值
若是要更改步長:更改系統變量
set auto_increment_increment=值;
二、一個表至多有一個自增加列
三、自增加列只能支持數值型
四、自增加列必須爲一個key
1、建立表時設置自增加列
create table 表(
字段名 字段類型 約束 auto_increment
)
2、修改表時設置自增加列
alter table 表 modify column 字段名 字段類型 約束 auto_increment
3、刪除自增加列
alter table 表 modify column 字段名 字段類型 約束
create database 【if not exists】 庫名【 character set 字符集名】;
alter database 庫名 character set 字符集名;
drop database 【if exists】 庫名;