mysql学习之旅(三)——数据库表结构的操作

数据库表

是数据库最重要的组成部分之一,是其他对象的基础。二维表,行为记录,列为字段。

创建数据表

1、CREATE TABLE <表名>
(
列名1 数据类型 [列级别约束条件] [默认值],
列名1 数据类型 [列级别约束条件] [默认值],

[表级别约束条件]
);
eg:
mysql> create table reader(
-> card_id char(18),
-> name varchar(10),
-> sex enum(‘男’,‘女’),
-> age tinyint,
-> tel char(11),
-> balance decimal(7,3)
-> );
Query OK, 0 rows affected (1.57 sec)
验证表创建好了
在这里插入图片描述
2、查看数据表列表:
SHOW TABLES[FROM tbl_name];查看当前库下内容括号里内容可省去

3、查看数据表基本结构:
SHOW COLUMNS FROM tbl_name;
DESCRIBE <表名>/DESC<表名>
show columns from reader;
在这里插入图片描述 desc reader;
在这里插入图片描述4、查看数据库表详细结构语句,可以用来显示数据表的创建语句。
SHOW CREATE TABLE tbl_name;
在这里插入图片描述

修改数据库表

熟悉添加列、修改列、删除列的操作
1、添加列
ALTER TABLE<列名>
ADD<新列名><数据类型>
[约束条件][FRIST|AFTER已存在列名];
eg:
alter table reader add email varchar(30);
alter table reader add email2 varchar(30) after tel;

2、修改列
1)修改列的名称:
ALTER TABLE<表名>
CHANGE<旧列名><新列名><新数据类型>;
eg: alter table reader change email2 email_bak varchar(30);
在这里插入图片描述 2)修改列的数据类型,就是把列的数据类型转换成另一种数据类型
ALTER TABLE<表名> MODIFY<列名><数据类型
eg:
alter table reader modify email varchar(25);
在这里插入图片描述
3)修改表中列的相对位置:
ALTER TABLE<表名>
MODIFY<列1><数据类型> FIRST|AFTER<列2>;
eg: alter table reader modify balance decimal(7,3) after email;

3、删除列:
ALTER TABLE<表名> DROP<列名>;
eg: alter table reader drop email_bak;

4、修改表名:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
eg:alter table reader rename to readerinfo;
在这里插入图片描述

删除数据库表

在mysql中,使用DROP TABLE可以一次删除一个或者多个没有被其他表关联的数据表。

语句格式:
DROP TABLE [IF EXISTS]表1,表2,…表n;

扫描二维码关注公众号,回复: 9347702 查看本文章

eg:假设库中有表格t1,t2,t3,t4
drop table t1,t2; %删掉了t1和t2
drop table t2,t3; %此时删掉不存在的库会报错,但是仍然会把t3删掉
drop table if exists t3,t4; %此时不会报错,因为if exists隐藏了错误信息,并将存在的表删除。

表分区

当我们创建的表需要承载的数据量非常大的时候,需要注意表的性能问题,考虑如何优化它,其中一种方式就是表分区。
表分区就是把一张表的数据分成多个区块。这些区块可以在同一个磁盘上,也可以在不同的磁盘上,但是所有的数据还是在一个表中。
1、查看当前数据库是否支持表分区
show plugins;
是否存在
pritition ACTIVE…

2、数据库的表分区一般有两种方式:水平和垂直,水平分区是将表的数据按行分割成不同的数据文件,而垂直分区则是将表的数据按列分割成不同的数据文件。

例如:水平分区中的范围分区
在创建表时使用:partition by 类型 (字段)
Range分区即根据指定某列的范围值进行分区,使用 value less than操作符定义分区
eg:
create table bookinfo(
book_id int,
book_name varchar(20)
)
partition by range(book_id)(
partition p1 value less than(20109999),
partition p2 value less than(20159999),
partition p3 value less than MAXVALUE,
);
只查找p1分区的数据:
select * from bookinfo partition(p1);

发布了19 篇原创文章 · 获赞 2 · 访问量 1241

猜你喜欢

转载自blog.csdn.net/weixin_38377637/article/details/100106293