第三章:数据库表结构的操作
数据表:是数据库最重要的组成部分之一,是其他对象的基础。(二维表格,行为记录、列为字段)
创建数据库表的语句为 CREATE TABLE。
CREATE TABLE<表名>
(
列明1 数据类型[列级别约束条件][默认值],
列明2 数据类型[列级别约束条件][默认值],
……
[表级别约束条件]
);
例子:
--创建图书管理系统的数据库
create database book;
--使用数据库
use book;
--创建读者信息表
create table reader(
card_id char(18),
name varchar(10),
sex enum('男','女'),
age tinyint,
tel char(11),
balance decimal(7,3)
);
--查看数据库表
show tables from book;
--查看数据表的基本结构
show columns from reader;
desc reader;
--查看表的详细结构(可以用来显示数据表的创建语句)
show create table reader;
重点:熟悉添加列,修改列和删除列
添加列:在已经存在的表添加新的列。
ALTER TABLE<表名>
ADD<新列明><数据类型>
[约束条件][FISR|AFTER已存在的列明];
修改列名
MySQL中修改表列明的语法规则如下:
ALTER TABLE <表名>
CHANGE <旧列名><新列明><新数据类型>;
修改列的数据类型:就是把列的数据乐行转成领一种数据类型。
ALTER TABLE <表名> MODIFY <列名>,<数据类型>
修改列的排列位置:ALTER TABLE来改变表中列的相对位置。
ALTER TABLE <表名>
MODIFY<列1><数据类型>FIRST|AFTER<列2>;
删除列:是将数据表中的某个列从表中移除。
ALTER TABLE <表名> DROP <列名>
修改表名:MYSQL是通过ALTER TABLE 语句来实现表名的修改的。
ALTER TABLE <旧表名> RENAME [TO] <新表名>
例句:
--修改表添加列
alter table reader add email varchar(30);
--查看表的基本结构
desc reader;
--修改表,在指定位置添加列
alter table reader add email2 varchar(30) after tel;
--修改列名
alter table reader change email2 email_bak varchar(30);
--修改列的数据类型
alter table reader modify email varchar(25);
--修改列的排列位置
alter table reader modify balance decimal(7,3) after email;
--删除列
alter table reader drop email_bak;
--修改表名
alter table reader rename to readerinfo;
熟悉删除数据库表的操作;
了解表分区内容;
删除数据库表:MySQL中,使用DROP TABLE 可以一次删除一个或多个没有被其他表关联的数据表。
DROP TABLE [IF EXISTS] 表1,表2……表n;
表分区
当我们创建的表,需要承载的数据量很大的时候,就要注意他性能问题,比如图书表信息,有1000万个图书信息,那么我们就的考虑如何优化它,其中一种方式就是表分区。
表分区就是把一张表的数据分成多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,但所有的数据在在一个表中。
不过使用表分区有个前提就是你的数据库必须支持。那么,怎么知道我的数据库是否支持表分区呢?请执行下面的命令
show plugins;
执行结果显示如下:
partition active storage engine null GPL
数据库的表分区有两种方式,水平和垂直,水平分区是将表的数据按行分割成不同的数据文件,而垂直分区则是将表的数据按列分割成不同的数据文件。
创建表分区
在创建表的时间使用:partition by 类型(字段)
Range分区:
根据指定某列的范围值进行分区。
使用values less than 操作符定义分区
例句:
--删除多个数据库表
drop table t1,t2;
drop table if exists t3,t4;
--创建分区表
create table bookinfo(
book_id int,
book_name varchar(20)
)
partition by range(book_id)(
partition p1 values less than(20109999),
partition p2 values less than(20159999),
partition p3 values less than MAXVALUE
);
--插入3条测试数据
insert into bookinfo values(20100005,'t1');
insert into bookinfo values(20140015,'t2');
insert into bookinfo values(20170011,'t3');
--指定分区查看数据
select * from bookinfo partition(p1);