MYSQL-表的管理

查看

查看表

show tables;
MYSQL-表的管理

查看当前库中所有表的具体信息

show table status\G;
MYSQL-表的管理

查看当前库某张表的信息

show table status like 'table_name' \G;
MYSQL-表的管理

亦可以使用通配符

show table status where name like '_o_' \G;
MYSQL-表的管理

查看表的结构

desc Table_name;
显示hellodb数据库中的students表的结构
show students;

字段 类型 是否允许为空 主键 默认 特殊
MYSQL-表的管理

查看创建stutents表所使用的的sql语句

show create table students\G;
MYSQL-表的管理

创建

创建表有很多种情况,
直接创建一个新的空表,
将数据从数据库中查询出来并填充至新表
复制别的表结构从而创建一个新表


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、定义第五字段,联系方式,指定了存放数据的类型为字符串,
MYSQL-表的管理

MYSQL-表的管理

创建表也可以定义联合主键

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表的结构

MYSQL-表的管理
MYSQL-表的管理

将查询出来的内容复制到另一库中的copy表中

use hellodb;
create table hyt.copy select stuid,name,age from students;
use hyt;
select * copy;

MYSQL-表的管理
也可以把students表中的数据全部查询出来,然后创建新表,将查询出来的数据全部存入新表中,等价于复制表,但是只是复制了students表的数据。
crtart table hyt.new_copy select * from students;

复制表结构

create table desc_dba like hellodb.students;

MYSQL-表的管理
完全复制表结构,包括其他的特殊约束和索引
MYSQL-表的管理


总结: 以上实现了创建表,复制表数据,复制表结构
在创建的表的时候,可以指定表选项,表选项是可以省略的,表选项可以由多个,表选项的位置在括号外面
通过help create table查看表选项的名字
MYSQL-表的管理

删除表

注意:

**在linux中,凡是涉及删除,enter前三思,数据无价,**
Syntax:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]

示例

删除单张表,也可以删除多张,中间使用逗号分隔。

drop table table_name;
MYSQL-表的管理
MYSQL-表的管理


修改表

如果表中没有任何数据,可以稍微轻松的修改表结构,
但是,表中存放很多数据,应该充分考虑修改表结构以后带来的影响


Syntax:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]

修改表名

将desc_dba修改为db1
alter table desc_dba reanme as db1

MYSQL-表的管理

添加字段

为表添加字段,只添加字段,不指定字段的其他属性,为db1添加class字段
修改字段可省了cllumn关键字,默认修改操作列
alter table db1 add column class int;
MYSQL-表的管理

添加字段同时指定约束

alter table db1 add linux int not null; 该字段不能为空
MYSQL-表的管理

添加字段,并指定字段在表中的位置,

添加字段,并指定字段在表中的位置,

alter table db1 add id int first; 指定为第一个字段
MYSQL-表的管理

指定某个字段之后

alter table db1 add python char after Name;
MYSQL-表的管理

删除字段

请三思三思再三思。

alter table db1 drop hyt;
MYSQL-表的管理

修改字段

重命名字段。修改字段

修改linux字段
alter table db1 change linux Linux int;

MYSQL-表的管理

modify不能修改字段名称,只能修改字段类型

alter table db1 modify Linux char(10);
MYSQL-表的管理


如有问题,请指正

猜你喜欢

转载自blog.51cto.com/14116879/2388878
今日推荐