1.创建和查看数据库表
数据库表
- 数据表:是数据库最重要的组成部分之一,是其他对象的基础。如下图就是一个数据库中的数据表:
创建数据库表
创建数据表的语句为 CREATE TABLE*
CREATE TABLE<表名>
(
列名1 数据类型[列级别约束条件][默认值],
列名2 数据类型[列级别约束条件][默认值],
…
[表级别约束条件]
);
上述创建表的语句中[]表示不是必须要写的,需要时才添加这些条件和默认值,下面以图书管理系统为例。
首先创建一个数据库:
//创建数据库
create database book;
//使用book数据库
use book;
使用cmd命令登录到MySQL之后,输入如下命令:
接着,创建一个名为reader的表:
create table reader(
card_id char(18),
name varchar(10),
sex enum('男','女'),
age tinyint,
tel char(11),
balance decimal(7,3)
);
查看数据库表(1)
查看数据库表基本结构:
- SHOW TABLES [FROM 数据库名]
- DESCRIBE <表名>/DESC <表名>
- SHOW COLUMNS FROM <表名>
中括号“[]”是可选项,如果查看当前数据库中的表,可省略。
演示以下语句查看数据库中的表:
show tables from book;
如果当前操作位置为book,则可以使用:
show tables;
都可以查找到book数据库中创建的表。
下面演示查看表结构:
describe reader;
desc reader;
show columns from reader;
show create table reader;
执行结果:
2.修改数据库表
在reader表中添加一列email:
alter table reader add email varchar(30);
执行结果如下:
上面的语句只能在末尾追加列。要想在特定的列后面追加列,则使用以下语句:
alter table reader add email2 varchar(30) after tel;
执行结果:
例如将列email2修改为email_bak:
alter table reader change email2 email_bak varchar(30);
执行结果:
将列email的长度修改为varchar(25):
alter table reader modify email varchar(25);
执行结果:
把余额balance放到最后:
alter table reader modify balance decimal(7,3) after email;
执行结果:
删除列email_bak:
alter table reader drop email_bak;
执行结果:
将book数据库中的reader表表名称reader改为readerinfo:
alter table reader rename to readerinfo;
执行结果:
3.删除数据库表
在删除数据库表的时候,如果要删除的表不存在,就会报错(虽然会报错,但是已经存在于数据库中的表也被删除了)。因此加上IF EXISTS
就会在表存在的时候删除,不存在就不删除也不会报错。
首先在book数据库中建立t1、t2、t3、t4四张表,然后查看:
删除表t1和t2:
drop table t1, t2;
结果如下:
现在删除表t2和t3:
drop table t2, t3;
结果如下:
现在加上IF EXISTS
关键字,删除表t3和t4:
drop table if exists t3, t4;
结果如下:
加上IF EXISTS
关键字后,成功删除表t4,表t3虽然不存在了,但是也没有报错。
特别说明:SQL语句中可以不区分大小写。
3.1
创建一个分区表bookinfo:
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(20170001, 't3');
现在bookinfo表中有3条数据:
如果按分区进行查找:
select * from bookinfo partition(p1);
结果如下:
在数据量非常大的时候,使用表分区查询表中数据,可以大大节省查询时间,提高查询效率。对于初学者来说,我们要有关于表分区的概念,对于真正在开发中表分区的使用,以后在开发中再进行深入的研究。