DDL语言

Posted rijiyuelei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL语言相关的知识,希望对你有一定的参考价值。

数据库定义语言

库和表的管理

一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除

创建:create 
修改:alter 
删除:drop 

database   库
   table  表

一、库的管理

库的创建:create database 库名

#案例:创建库Books
CREATE DATABASE Books

#为了提高容错性
CREATE DATABASE IF NOT EXISTS Books
/*
如果库已经存在了就不创建,并且也不报错。
如果库不存在就创建
*/

IF EXISTS仅仅在表的删除和表的创建时使用

exists : 强调的是是否返回结果集,不要求知道返回什么
exists (sql 返回结果集为真) 有
not exists (sql 不返回结果集为真)没有

#通用的写法
DROP DATABASE IF EXISTS 旧的库名
CREATE DATABASE 新的库名

DROP TABLE IF EXISTS 旧的表名
CREATE TABLE 新的表名

 

库名的修改

/*
一般不修改,修改数据会出现问题
*/
/*
需要修改:
1.停止mysql服务
2.修改文件夹名
3.启动MySQL服务
*/

更改库的字符集 CHARACTER字符集

ALTER DATABASE books CHARACTER SET gbk;

库的删除

DROP DATABASE books;

DROP DATABASE IF EXISTS books;

 

二、表的管理

表的创建

create table 表名(
列名 列的类型【长度 约束】,
列名 列的类型【长度 约束】,
列名 列的类型【长度 约束】,
...
列名 列的类型【长度 约束】

 案例:创建book表

CREATE TABLE book(
id INT,#编号
bName VARCHAR(20),#书名的最大长度 20个字符
price DOUBLE,#价格
authorId INT,#作者编号,实现分类存储减少冗余
publishDate datetime #出版日期
);

 案例,创建author表

CREATE TABLE author (
id INT,
au_name VARCHAR(20),
nation VARCHAR(20)
)

查看表的结构

DESC book;
DESC author;

表的修改

语法
ALTER TABLE 表名 add|drop|modify|change COLUMN 列名 新的列名 类型【约束】

①修改列名 
after table 表名 change column 旧列名 新列名 类型;

②修改列的类型或约束 
after table 表名 modify column 列名 新类型【新约束】

③添加新列 
after table 表名 add column 列名 类型【(first|after 字段名)控制添加的位置】默认就是在最后

④删除列
after table 表名 drop column 列名;

⑤修改表名
after table 表名 rename 【to】 新表名

 

 

#①修改列名
ALTER TABLE book CHANGE COLUMN publishDate pubDate datetime

#②修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;

#③添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;

#④删除列
ALTER TABLE author DROP COLUMN annual;

#⑤修改表名
ALTER TABLE author RENAME TO book_author;

 

 表的删除

DROP TABLE book_author;

 

 表的复制

 

INSERT INTO author 
VALUES(1,村上春树,日本),
(2,莫言,中国),
(3,冯唐,中国),
(4,金庸,中国);

 

 1.仅仅复制表的结构

create table 表名 like 旧表
CREATE TABLE copy LIKE author;

 

 2.复制表的结构+数据

create table 表名 select 查询列表 from 旧表【where筛选】
CREATE TABLE copy2
SELECT * FROM author;

3.复制表的结构+部分数据

CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE nation=中国;

4.复制表的某些字段(列),不要数据

CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0;

添加新列

after table 表名 ADD column 列名 类型【(first|after 字段名)控制添加的位置】默认就是在最后。很少使用
CREATE TABLE test2(
t1 INT,
t2 INT,
t3 INT
);

DESC test2

ALTER TABLE test2 ADD COLUMN ddd INT FIRST;
ALTER TABLE test2 ADD COLUMN ddd2 INT AFTER t2;

 ALTER TABLE test2 ADD COLUMN ddd3 INT last;不支持,默认就是在最后

#2将表department中的数据插入新表dept2中

 CREATE TABLE dept2
 SELECT department_id,department_name
 FROM myemployees.departments;
 /*
 可以跨库复制表的结构 库名.表名
 */

 

以上是关于DDL语言的主要内容,如果未能解决你的问题,请参考以下文章

ddl(数据定义语言) ,dml (数据操控语言),dcl(数据控制语言)

使用 Pygments 检测代码片段的编程语言

sql语言之DDL

数据库模式定义语言DDL

07DDL数据定义语言

DDL数据定义语言