数据定义语言是库和表的管理,主要有:
库和表的:创建:create、修改:alter、删除:drop
一、库的管理
1、库的创建
(1)、语法:
create database 库名;
# 如果该库存在则不创建
create database if not exists 库名;
(2)、应用实例
# 创建名为 db01 的数据库
CREATE DATABASE db01;
2、库的修改
- 库一般不修改,以防止出现问题
- 如果修改,一般是修改库的字符集。如将字符集修改成 utf8 的格式等。
(1)、修改库的字符集
开始的字符集如下:
将其修改成 utf8 的字符集
ALTER DATABASE db01 CHARACTER SET utf8;
3、库的删除
DROP DATABASE db01;
# 如果存在就删除
DROP DATABASE IF EXISTS db01;
【总结】 在实际的应用中如果要新建一个库,常见的操作是:
DROP DATABASE IF EXISTS 库名;
CREATE DATABASE 库名;
二、表的管理
- 对表进行操作之前首先要进入表所在的库,常用 use 库名;
1、表的创建
(1)、语法
# 类型的长度和约束有时可以省略
create table 表名(
列名1 列的类型(长度) [约束],
列名2 列的类型(长度) [约束]
);
(2)、应用实例
- 创建一个名为book的表(无任何约束):
CREATE TABLE book( id INT, # 书籍的id bName VARCHAR(20), # 书名,varchar类型的长度必须指定,不能省略 price DOUBLE, # double 类型长度可以省略 authorId INT, publishDate DATETIME );
结果如下:
2、表的修改
- 修改列名
- 修改列类型或约束
- 添加新列
- 删除列
- 修改表名
(1)、修改列名:将book表中的 publishData 修改为 pubData
# column 可以省略,最后要加上类型名
ALTER TABLE book CHANGE COLUMN publishDate pubData DATETIME;
(2)、修改类型:将book表中的 pubData 列类型由datetime 修改成为 timestamp
ALTER TABLE book MODIFY COLUMN pubData TIMESTAMP;
(4)、添加新列:为表 book 添加新列 销量: sales
ALTER TABLE book ADD COLUMN sales DOUBLE;
(5)、删除列:删除book 表中的sales列
ALTER TABLE book DROP COLUMN sales;
(6)、修改表名:将book 的表名修改成 books
ALTER TABLE book RENAME TO books;
3、表的删除
(1)、语法
drop table 表名;
# 添加判读是否存在
drop table if exists 表名;
(2)、应用实例:删除books 表
DROP TABLE books;
4、表的复制
有如下的一张表 author :
(1)、仅仅复制表的全部结构:创建表 theCopy01 复制author的全部结构
# 此时theCopy01 表的结构和 author 一样,但是没有数据
CREATE TABLE theCopy01 LIKE author;
(2)、同时复制表的全部结构和数据:创建表 theCopy02 复制 author
CREATE TABLE theCopy02
SELECT * FROM author;
(3)、只复制表的部分数据和结构:创建表 theCopy03 复制部分author的数据和结构
# theCopy03 表只复制author的id,auname 列
CREATE TABLE theCopy03
SELECT id,auname
FROM author;
# theCopy03 表复制时带有一定的条件限制
CREATE TABLE theCopy03
SELECT id,auname
FROM author
WHERE city='A' OR city='C';
(4)、只复制表的部分结构,而不复制数据:创建表 theCopy04 复制表author的部分结构
# 只复制表author的id 和 auname 列
CREATE TABLE theCopy04
SELECT id,auname
FROM author
WHERE 0; # 0为false,表示条件一直不满足,将不会复制author表的数据
【总结】在实际的应用中如果要新建一个库,常见的操作是:
DROP TABLE IF EXISTS 表名;
CREATE TABLE 表名();