【DDL语言】
DDL(data definition language),用于描述数据库中要存储的现实世界实体的语言。
模式分类:交互方式定义模式和通过数据描述语言DDL描述文本定义模式
可分为两类:
I.库的管理
- 创建:create
- 修改:alter
- 删除:drop
II.表的管理
- 创建:create
- 修改:alter
- 删除:drop
目录
I.库的管理
1.库的创建
【语法】
create database 库名 ;
【举个栗子】
(1)创建库Books:
create database Books;
可以加入容错性处理:
因为如果不加的话,同时运行多次会出现报错的情况。这时可以采用容错性写法避免此类报错。
create database if not exists Books;
2.库的修改
注意:需要找到源文件,目录-data下的对应的数据库;进行修改;
一般无法通过语句进行。
(1)可更改库的字符集
ALTER DATABASE books CHARACTER SET gbk ; (#gbk即为更改后的字符集)
修改之前的字符集(默认): 改后:
3.库的删除
【语法】
①无容错的表达: DROP DATABASE books ;
②有容错的表达: DROP DATABASE IF EXISTS books ;
II.表的管理
【语法】
CREATE TABLE 表名(
列名 列的类型 【(长度) 约束】,
列名 列的类型 【(长度) 约束】,
........
列名 列的类型 【(长度) 约束】;
)
1.表的创建
【举个栗子】
(1)创建表book
CREATE DATABASE IF NOT EXISTS books
--创建表之前要先有库--
CREATE TABLE book(
id INT , #编号
bname VARCHAR(20) , #20代表最多容纳20个字符;图书名
price DOUBLE, #价格
authorid INT, # 作者
publishdate DATETIME #出版日期
);
DESC book ; --查看创建出的表结构--
![](https://i-blog.csdnimg.cn/blog_migrate/6f893055495bb8c75040458e650ba905.png)
补充:查看表结构的语句:
- --(1)--desc 表名;
- --(2)--describe 表名;
- --(3)--show columns from 表名;
(2)创建表author
CREATE TABLE author (
authorid INT, #作者编号
au_name VARCHAR(20), #作家姓名
nation VARCHAR(10) #国家
);
DESCRIBE author;
2.表的修改
alter table 表名 add(增列) | drop(删列) | modify(修改列类型)| change(修改列名) column 列名 【列类型 约束】
2.1 修改列名
- 注意:修改的新表名后面要加上 数据类型
(1)把表名publishdate 修改为pub_date
ALTER TABLE book CHANGE COLUMN publishdate pub_date DATETIME;
DESC book ;
2.2 可修改列的类型或约束
(2)修改book库中的pub_date中的数据类型 datetime为 时间窗的
ALTER TABLE book MODIFY COLUMN pub_date TIMESTAMP;
2.3 进行增列
(3)添加一列作者的年薪
alter table author add column annual double ;
2.4 进行删除列
alter table author drop column annual;
2.5 修改表名
ALTER TABLE author RENAME TO book_author;
3.表的删除
语法:
drop table 表名;
(1)删除表book_author
删除后用show tables 查看下表
drop table book_author;
show tables;
总结-通用语法
drop database if exists 旧库名称;
create database 新库名;
drop table if exists 旧表名;
create table 表名();
4.表的复制
【举个栗子】
继续上述的例子,在author表中加入数据:
比如我,加入的是:
insert into author
values (1,'吴军', '中国'),
(2,'薛兆丰', '中国'),
(3,'梁宁', '中国'),
(4,'吴晓波', '中国');
select *
from author;
4.1 仅仅复制表的结构
CREATE TABLE copy LIKE author;
复制后的结果:
4.2 复制表的结构+表的数据
CREATE TABLE copy2
SELECT * FROM author;
4.3 复制部分数据
(1)只复制author中的au_name姓吴的作者
CREATE TABLE copy3
SELECT *
FROM author
WHERE au_name LIKE '吴%';
SELECT * FROM copy3;
4.4 仅仅复制某些字段
(1)只复制author中的id和au_name
CREATE TABLE copy4
SELECT `authorid`,`au_name`
FROM author
WHERE 0 ;
SELECT * FROM copy4;
只有字段,没有数据,复制完成。
5.练习题
移步下篇博文【Mysql练习题】-【库和表的管理】
持续更新,欢迎来call 我一起学习!