MYSQL-表的管理
查看表
show tables;
查看當前庫中所有表的具體信息
show table status\G;
查看當前庫某張表的信息
show table status like ‘table_name‘ \G;
亦可以使用通配符
show table status where name like ‘_o_‘ \G;
查看表的結構
desc Table_name;
顯示hellodb數據庫中的students表的結構
show students;
字段 類型 是否允許為空 主鍵 默認 特殊
查看創建stutents表所使用的的sql語句
show create table students\G;
創建
創建表有很多種情況,
直接創建一個新的空表,
將數據從數據庫中查詢出來並填充至新表
復制別的表結構從而創建一個新表
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
字段定義,表級別約束定義,索引定義
[table_options]
[partition_options]
創建表
MariaDB [hyt]> create table db1 ( -> stuid smallint unsigned auto_increment primary key, -> name char(10) not null, -> gender enum(‘m‘,‘f‘) default ‘m‘, -> age tinyint unsigned, -> mobile char(11));
1、第一字段stuid,定義了它存放數據的類型,自動增長,意思就是,就算不指定該字段,它也會自己遞增,把它設置為主鍵
2、定義第二個字段,name 存放數據類型為字符串類型,而且字符串長度為10位,而且不能為空,進行約束
3、定義第三字段,性別,使用枚舉,意思就是這個字段只能設定為f or m ,如果不指定默認為m
4、定義第四字段,年齡,指定存放數據類型
5、定義第五字段,聯系方式,指定了存放數據的類型為字符串,
創建表也可以定義聯合主鍵
MariaDB [hyt]> create table db2 -> ( -> id int, -> name char(10) not null, -> primary key(id,name) -> );
定義外鍵,例如db3表tid字段引用了db2表中的id為外鍵
MariaDB [hyt]> create table db3
-> (
-> id int primary key,
-> name char(10) not null,
-> tid int,
-> foreign key(tid) references db2(id)
-> );
通過查詢出的數據創建一個新表,並且將查詢的數據填充到創建的新表中
示例:
將hellodb庫中的students表中stuid,name,age三個字段中的數據取出,
並填充到hyt數據庫中創建的新表copy中。
註意:
通過這種方式將copy表創建完成後,只能將對應的數據填充過去,但是表的字段中的約束以及表的索引則無法復制過去,需要手動指明
這是hellodb庫中students表的結構
將查詢出來的內容復制到另一庫中的copy表中
use hellodb;
create table hyt.copy select stuid,name,age from students;
use hyt;
select * copy;
也可以把students表中的數據全部查詢出來,然後創建新表,將查詢出來的數據全部存入新表中,等價於復制表,但是只是復制了students表的數據。 crtart table hyt.new_copy select * from students;
復制表結構
create table desc_dba like hellodb.students;
完全復制表結構,包括其他的特殊約束和索引
總結: 以上實現了創建表,復制表數據,復制表結構
在創建的表的時候,可以指定表選項,表選項是可以省略的,表選項可以由多個,表選項的位置在括號外面
通過help create table查看表選項的名字
刪除表
註意:
**在linux中,凡是涉及刪除,enter前三思,數據無價,** Syntax: DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
示例
刪除單張表,也可以刪除多張,中間使用逗號分隔。
drop table table_name;
修改表
如果表中沒有任何數據,可以稍微輕松的修改表結構,
但是,表中存放很多數據,應該充分考慮修改表結構以後帶來的影響
Syntax:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]
修改表名
將desc_dba修改為db1
alter table desc_dba reanme as db1
添加字段
為表添加字段,只添加字段,不指定字段的其他屬性,為db1添加class字段
修改字段可省了cllumn關鍵字,默認修改操作列alter table db1 add column class int;
添加字段同時指定約束
alter table db1 add linux int not null; 該字段不能為空
添加字段,並指定字段在表中的位置,
添加字段,並指定字段在表中的位置,
alter table db1 add id int first; 指定為第一個字段
指定某個字段之後
alter table db1 add python char after Name;
刪除字段
請三思三思再三思。
alter table db1 drop hyt;
修改字段
重命名字段。修改字段
修改linux字段
alter table db1 change linux Linux int;
modify不能修改字段名稱,只能修改字段類型
alter table db1 modify Linux char(10);
如有問題,請指正
MYSQL-表的管理