mysql資料庫看屬性 MySQL資料庫之列屬性

2021-10-17 15:02:02 字數 4638 閱讀 7049

列屬性

是否為空

是否為空

null 表示字段值可以為null

not null字段值不能為空

預設值預設值

如果乙個字段沒有插入值,可以預設插入乙個指定的值

default 關鍵字用來插入預設值

mysql> create table stu19(

-> name varchar(20) not null default '姓名不詳',

-> addr varchar(50) not null default '位址不詳'

# `query ok, 0 rows affected (0.05 sec)`

mysql> insert into stu19(name) values ('tom');

# `query ok, 1 row affected (0.00 sec)`

mysql> insert into stu19 values (default,default);

# `query ok, 1 row affected (0.00 sec)`

mysql> select * from stu19;

| name | addr |

| tom | 位址不詳 |

| 姓名不詳 | 位址不詳 |

# `2 rows in set (0.00 sec)`

自動增長

自動增長

字段值從1開始,每次遞增1,自動增長的值就不會有重複,適合用來生成唯一的id

在mysql中只要是自動增長列必須是主鍵

auto_increment 關鍵字用來設定自動增長

主鍵概念

唯一標識表中的記錄的乙個或一組列稱為主鍵

primary key 關鍵字用來設定主鍵

特點不能重複、不能為空

乙個表只能有乙個主鍵

作用保證資料完整性

加快查詢速度

原則最少性:盡量選擇單個鍵作為主鍵

穩定性:盡量選擇數值更新少的列作為主鍵

比如:學號 姓名 位址 這三個欄位都不重複

選哪個做主鍵?

選學號,因為學號最穩定

應用只要是auto_increment必須是主鍵,但是主鍵不一定是auto_increment

主鍵特點是不能重複不能為空

乙個表只能有乙個主鍵,但是乙個主鍵可以有多個字段組成

自動增長列通過插入null值讓其遞增

自動增長列的資料被刪除,預設不再重複使用。

truncate table刪除資料後(清空**),再次插入從1開始

練習在主鍵列輸入的數值,允許為空嗎? false

乙個表可以有多個主鍵嗎?false

在乙個學校資料庫中,如果乙個學校內允許重名的學員,但是乙個班級內不允許學員重名,可以組合班級和姓名兩個欄位一起來作為主鍵嗎? true

標識列(自動增長列)允許為字元資料型別嗎? false

乙個自動增長列中,插入3行,刪除2行,插入3行,刪除2行,插入3行,刪除2行,再次插入是多少? 10

建立主鍵

mysql> create table stu20(

-> id int auto_increment primary key,

-> name varchar(20)

# `query ok, 0 rows affected (0.04 sec)`

mysql> create table stu21(

-> id int auto_increment,

-> name varchar(20),

-> primary key(id)

# `query ok, 0 rows affected (0.02 sec)`

建立組合主鍵

mysql> create table stu22(

-> classname varchar(20),

-> stuname varchar(20),

-> primary key(classname,stuname)

# `query ok, 0 rows affected (0.00 sec)`

mysql> desc stu22;

| field | type | null | key | default | extra |

| classname | varchar(20) | no | pri | | |

| stuname | varchar(20) | no | pri | | |

# `2 rows in set (0.00 sec)`

更改表新增主鍵

-- 建立表

mysql> create table stu23(

-> id int,

-> name varchar(20)

# `query ok, 0 rows affected (0.05 sec)`

-- 新增主鍵

mysql> alter table stu23 add primary key(id);

# `query ok, 0 rows affected (0.09 sec)`

# `records: 0 duplicates: 0 warnings: 0`

刪除主鍵

mysql> alter table stu23 drop primary key;

# `query ok, 0 rows affected (0.03 sec)`

# `records: 0 duplicates: 0 warnings: 0`

插入資料

mysql> create table stu25(

-> id tinyint unsigned auto_increment primary key,

-> name varchar(20)

# `query ok, 0 rows affected (0.05 sec)`

-- 插入資料

mysql> insert into stu25 values (3,'tom'); -- 可以直接插入數字

# `query ok, 1 row affected (0.06 sec)`

-- 自動增長列可以插入null,讓列的值自動遞增

mysql> insert into stu25 values (null,'berry');

# `query ok, 1 row affected (0.00 sec)`

唯一鍵唯一鍵與主鍵的區別

主鍵不能重複,不能為空

乙個表只能有乙個主鍵

唯一鍵不能重刻,可以為空

乙個表可以有多個唯一鍵

關鍵字unique

unique key

建立唯一鍵

mysql> create table stu26(

-> id int auto_increment primary key,

-> name varchar(20) unique

# `query ok, 0 rows affected (0.05 sec)`

mysql> create table stu27(

-> id int primary key,

-> name varchar(20),

-> unique(name)

# `query ok, 0 rows affected (0.05 sec)`

修改表新增唯一鍵

-- 將name設為唯一鍵

mysql> alter table stu28 add unique(name);

-- 將name,addr設為唯一鍵

mysql> alter table stu28 add unique(name),add unique(addr);

# `query ok, 0 rows affected (0.00 sec)`

# `records: 0 duplicates: 0 warnings: 0`

mysql> desc stu28;

| field | type | null | key | default | extra |

| id | int(11) | no | pri | null | |

| name | varchar(20) | yes | uni | null | |

| addr | varchar(20) | yes | uni | null | |

# `3 rows in set (0.02 sec)`

檢視唯一鍵的名

mysql> show create table stu28\g;

通過唯一鍵的名字刪除唯一鍵

mysql> alter table stu28 drop index name;

# `query ok, 0 rows affected (0.00 sec)`

# `records: 0 duplicates: 0 warnings: 0`

備註備註

說明性文字

備註屬於sql**的一部分

通過關鍵字comment設定

mysql> create table stu29(

-> id int primary key comment '學號',

-> name varchar(20) not null comment '姓名'

# `query ok, 0 rows affected (0.03 sec)`

看MySQL資料庫大小

1 進去指定schema 資料庫 存放了其他的資料庫的資訊 use information schema 2 查詢所有資料的大小 select concat round sum data length 1024 1024 2 mb as data from tables 3 檢視指定資料庫的大小 比...

mysql資料庫屬性 MySQL資料庫的三個屬性

mysql資料庫的三個屬性 閱讀 236 mysql資料庫的三個屬性是什麼?一般大家對mysql的了解可能停留在概念的層面上,而對於mysql資料庫三大屬性的了解相對較少。今天就跟大家聊聊mysql資料庫的三大屬性。1 原子性,要求屬性具有原子性,不可再分解。表 欄位1 欄位2 欄位2.1 欄位2....

手動備份MySQL資料庫 手動備份mysql資料庫

paths 檔案路徑 user 資料庫使用者名稱 pass 資料庫密碼 database 資料庫名 public static boolean backup string paths,string user,string pass,string database outstr sb.tostring...