目录
概述
- 作用:管理数据库与库中的表
- 库的管理:创建、修改、删除
- 表的管理:创建、修改(不是修改表中的数据,而是修改表的结构)、删除(不是删除表中的数据,而是删除整个表,即删除后表不再存在,无法再向表中添加数据。DML语言中的删除表是指清空表中的数据)
- 关键字:(注意与DML语句的关键字区分)
- 创建:
create
- 修改:
alter
- 删除:
drop
- 创建:
库的管理
库的创建
- 语法:
create database 【if not exists】 库名;
- 创建库books
- 用以下方法创建时,如果books库已经存在,执行该语句时会报错
- 为了防止报错,我们可以添加一个判断条件。在添加条件后,如果books已经存在,再执行该语句时仅仅会抛出警告,提示books库没有创建成功。
- 用以下方法创建时,如果books库已经存在,执行该语句时会报错
库的修改
- 由于库一旦建立以后,会往库中存储数据,如果贸然对库进行修改的话,可能会出现一些意想不到的问题,从而造成数据的丢失,因此一般库一旦建立以后,不对库进行任何修改。
- 对库进行重命名(MySQL1.7以后已经不再支持,只能通过在操作系统中直接修改文件夹名的方式来修改库名),不建议对库名进行修改
rename database books to 新库名;
- 更改库的字符集
alter database 库名 character set 字符集;
库的删除
- 语法(同样加上判断条件,否则库不存在时会报错)
drop database 【if exists】 库名;
表的管理
表的创建(重点)
- 语法(【】中的内容为可选内容,但是
if not exists
建议都加上)
create table 【if not exists】 表名(
列名 列的类型 【(长度) 约束】,
列名 列的类型 【(长度) 约束】,
...
列名 列的类型 【(长度) 约束】
)
- 创建表book(包含书的编号、书名、价格、作者、出版日期)
表的修改
- 注意:对列进行添加和删除时,不能加
if not exists
或if exists
修改列名
- 语法
alter table 表名 change column 旧列名 新列名 新的类型; #类型必须写,如果不变就写原来的类型
#column可以省略,但是建议加上
- 将book表中的publishdate改为pubDate
修改表的类型或约束
- 语法
alter table 表名 modify column 列名 类型或约束;
- 将book表中的pubdate类型修改成timestamp(时间戳)
添加新列
- 语法
alter table 表名 add column 列名 类型 【first|after 字段名】; #可以设置添加列的位置,first表示添加到最前面一列,after表示添加到指定列的后面
- 向author表中添加annual列,数据类型为double
删除列
- 语法
alter table 表名 drop column 列名;
- 删除author表中的annual列
修改表名
- 语法
alter table 表名 rename to 新表名;
- 将author表重命名为book_author
表的删除
- 语法
drop table 【if exists】 表名;
- 删除book_author表
表的复制
仅仅复制表的结构
复制表的结构+数据
只复制部分表的结构和数据
仅仅赋值部分表的结构,不复制数据
补充
- 跨库创建表(即创建的表在库a,而需要的数据在库2)
- 将表departments中的数据插入到新表dept2中
- 将表departments中的数据插入到新表dept2中