mysql表操作(alter)/mysql欄位型別

weixin_34120274發表於2018-07-10

建立mysql表示例

create table test_csv(
  id bigint(20) auto_increment,
  create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title varchar(512) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  url varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  source varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  keywords varchar(512) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  summary text COLLATE utf8_unicode_ci NOT NULL,
  pub_time timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  feed_name varchar(24) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `key_url` (`url`(10)),  # 10 索引只設定url的前10位
  KEY `key_feed_name` (`feed_name`(10))
)ENGINE=InnoDB AUTO_INCREMENT=500695 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

修改表名字

alter table 表名 change 原名 新名 型別及約束;
例:
alter table students change birthday birth datetime not null;

清空表資料

truncate table 表名

建立表之前的判斷語句

drop table  if  exists test_csv;
create table if not exists test_csv;

修改表欄位(修改屬性,修改欄位名)

alter table 表名 modify 列名 型別及約束;  # 型別是要設定的新屬性
例:
alter table students modify birth date not null;

新增表欄位

alter table 表名 add 列名 型別;
例:
alter table students add birthday datetime;

刪除表欄位

alter table 表名 drop 列名;
例:
alter table students drop birthday;

刪除表

drop table 表名;
例:
drop table students;

檢視錶的建立語句

show create table 表名;
例:
show create table classes;

mysql欄位型別

一千位元組(1kB) = 1024位元組(B | byte)
一位元組(B | byte) = 8 位(b | bit)

整數

12292740-7b51c6bd7644cbef.png
image.png

字串型別

12292740-019874cfc7934707.png
image.png

時間型別

12292740-0f360fbbf6a0f39b.png
image.png

符合型別

ENUM 型別

ENUM 型別因為只允許在集合中取得一個值,有點類似於單選項。在處理相互排拆的資料時容易讓人理解,比如人類的性別。ENUM 型別欄位可以從集合中取得一個值或使用 null 值,除此之外的輸入將會使 MySQL 在這個欄位中插入一個空字串。另外如果插入值的大小寫與集合中值的大小寫不匹配,MySQL 會自動使用插入值的大小寫轉換成與集合中大小寫一致的值

SET 型別

SET 型別與 ENUM 型別相似但不相同。SET 型別可以從預定義的集合中取得任意數量的值。並且與 ENUM 型別相同的是任何試圖在 SET 型別欄位中插入非預定義的值都會使 MySQL 插入一個空字串。如果插入一個即有合法的元素又有非法的元素的記錄,MySQL 將會保留合法的元素,除去非法的元素。 一個 SET 型別最多可以包含 64 項元素。還去除了重複的元素,所以 SET 型別中不可能包含兩個相同的元素。
希望從 SET 型別欄位中找出非法的記錄只需查詢包含空字串或二進位制值為 0 的行。

相關文章