7、mysql中的表结构操作
之前已經介紹了字段以及修飾字段的一些屬性,根據特定的對象可以將字段進行組合,這就有了表的概念,接下來介紹一下如何操
作數據表結構。對數據表結構的操作有添加表、修改表、刪除表、查看表結構。
添加表
格式:create table [if not exist] 表名( 字段名字1 數據類型 ,字段名字1 數據類型 )[表選項];
介紹一下每個部分的意思:
| create table | 固定格式,創建表的意思,必填 | ||
| if not exist | 表示如果表明不存在,創建,否則不創建,選填 | ||
| 表名 | 表的名字,必填 | ||
| 括號中的部分 | 聲明的字段,格式為:字段名 數據類型,當有多個字段時,使用逗號隔開,必填 | ||
| 表選項(選填) | charset | 字符集,聲明格式:CHARSET=utf8 | |
| engine | 存儲引擎,格式:ENGINE=InnoDB | ||
| auto_increment | 自增開始值,設置:auto_increment=100 | ||
| .......... | |||
實例,創建一個user表
CREATE TABLE USER (id bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主鍵',age int(4) DEFAULT NULL COMMENT '年齡',name varchar(30) NOT NULL UNIQUE COMMENT '名稱',money decimal(12,2) DEFAULT NULL COMMENT '存款' ) ENGINE=InnoDB AUTO_INCREMENT=3 CHARSET=utf8;修改表
對于表的修改,用戶可自定義修改表的名稱、表選項、表中字段名、字段的類型、添加和刪除字段等
實例如下:
# 將表student更名為teacher rename table 舊名 to 新名; rename table student to teacher;# 修改表的字符集 alter table teacher charset = gbk;# 增加一個字段 alter table user add user_score double(5,2) not null default 0.00;# 修改一個字段 alter table user modify score varchar(30) default '';# 修改字段名 alter table user change 舊字段名 新字段名 類型; alter table user change score score_ssss varchar(30);# 刪除字段 alter table user drop score_ssss;# 刪除字段上的約束 -- 先查看對應的約束有什么 show create table user; -- 刪除對應的索引 alter table user drop index name;# ..........刪除表
# 刪除表 drop table [表名1],[表名2],[表名。。。] drop table user;注意:此操作一般不要使用,使用也要保證萬無一失
查看表結構
# 查看當前數據庫下所有表 show tables;# 按著表名關鍵字查詢表 show tables like ‘%關鍵字’;# 查看表創建語句 show create table user\g; show create table user\G ;# 查看表中字段信息 desc/describle user; show columns from user;在這里說一下表之間的關系,因為表是根據具體的業務需求創建的,所以表之間有各種關系,一般可歸為三類
| 一對一 | 表A中的一條數據和B中一條數據相關,表B中的一條數據和A中一條數據相關 |
| 一對多 | 表A中的一條數據和B中多條數據相關,表B中的一條數據只與表A中一條數據相關 |
| 多對多 | 表A中的一條數據和B中多條數據相關,表B中一條數據與表A中多條數據相關 |
在mysql中有外鍵這一概念,使用外鍵可以保持表之間的各種關系,但是在實際開發中,一般不使用外鍵,因為使用外鍵之后,開發人員對數據的可控性會降低,數據的操作更多的依賴于外鍵,更有甚者導致系統崩潰,所以實際開發中一般使用事務來保持關聯表中數據的一致性,所以這里只是簡單的介紹一下外鍵的使用,而不詳細介紹
外鍵
A表中一個字段(非主鍵)指向B表的主鍵,那么這個字段稱為外鍵,A表叫做B表的子表,B表叫做A表的父表。外鍵要求本身必須是一個索引(普通索引),如果字段本身沒有索引,聲明外鍵時數據庫會先創建一個索引,然后才會創建外鍵本身,一張表中可以有多個外鍵,但是名字不可相同
外鍵的新增和刪除
# 創建表時就給字段添加外鍵 create table card (id bigint(20) primary key auto_increment not null, uid bigint(20) not null ,card_number varchar(255) not null,-- 添加外鍵,外鍵名為f_uid,外鍵是uid字段,連接user表的id字段constraint f_uid foreign key(uid) references user(id) );# 創建表之后再添加外鍵 -- 先創建card表 create table card (id bigint(20) primary key auto_increment not null, uid bigint(20) not null ,card_number varchar(255) not null );-- 將uid作為外鍵 alter table card add constraint f_uid foreign key(uid) references user(id);# 外鍵不可以修改,所以需要先刪除,后修改 # 刪除外鍵 f_uid,分兩步:刪外鍵 ---> 刪索引(因為創建外鍵時,系統自動創建了索引) alter table card drop foreign key f_uid; alter table card drop index f_uid;外鍵的作用就是用來約束具有聯系的表之間的數據,保證數據一致性,其約束模式有四種,如下:
| no action | 默認模式 |
| restrict | 嚴格模式,父表不能刪除或更新一個已經被子表數據應用的記錄,一般不使用 |
| cascade | 級聯模式,父表的操作,子表關聯數據跟著操作,例如:主表數據修改,子表對應數據也級聯修改,一般修改操作使用 |
| set null | 置空模式,父表操作之后,子表對應的數據(外鍵字段)被置空,一般刪除操作使用 |
下邊寫一個實例,來介紹一下約束模式的使用,在聲明主鍵時,在后邊加上對應的操作和對應的約束模式即可,如下:
# 創建外鍵fk_uid 并且設置約束模式,修改時是cascade,刪除時是set null alter table card add constraint fk_uid foreign key(uid) references user(id) on delete set null on update cascade;使用過程中,注意幾個地方:
1、當設置約束模式時,外鍵字段不要設置為空約束
2、外鍵名不能重復
3、刪除外鍵時,要注意將創建外鍵時系統創建的索引也刪除,一般和外鍵名同名
4、必須保證表的存儲引擎是Innodb,如果不是,外鍵可以創建成功,但是沒有約束作用
5、外鍵字段類型必須與父表的主鍵類型一致
總結
以上是生活随笔為你收集整理的7、mysql中的表结构操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6、mysql中字段
- 下一篇: 8、mysql数据表中数据的增删改