1. 程式人生 > >MYSQL-表的管理

MYSQL-表的管理

自己 sel cas 查看表 images cad 修改 exist 主鍵

查看

查看表

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-表的管理