查看
查看表
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);
如有问题,请指正