欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL学习总结(六)DDL语言之库的创建/修改库名/修改库的字符集/库的删除/表的创建/修改列名/添加列/修改列的类型或约束/删除列/修改表名/表的删除/表的复制

程序员文章站 2022-05-30 17:13:47
...

DDL(Data Definition Language):数据定义语句,用于库和表的创建、修改、删除。

一、库的管理

(一)库的创建

格式

CREATE DATABASEIF NOT EXISTS】 库名 【CHARACTER SET 字符集名】;

案例:创建数据库books

CREATE DATABASE IF NOT EXISTS books;

(二)库的修改

1.修改库名

格式

RENAME DATABASE 旧库名 TO 新库名;

这个语法在MySQL 5.1.7中被添加进来,到了5.1.23又去掉了,不建议使用,因为不安全

要想更改库的名字,我们可以先关闭MySQL服务器,然后在文件夹中把旧数据库名重命名为新数据库名,最后再开启MySQL服务器

2.修改库的字符集

格式

ALTER DATABASE 库名 CHARACTER SET 新字符集名;

(三)库的删除

格式

DROP DATABASEIF EXISTS】 库名;

二、表的管理

(一)表的创建

格式

CREATE TABLE 表名(
	列名 列的类型【(长度) 约束】,
	列名 列的类型【(长度) 约束】,
	...
);

案例1:创建表book

CREATE TABLE IF NOT EXISTS book(
	id INT,#编号
	bname VARCHAR(20),#图书名
	price DOUBLE,#价格
	author_id INT,#作者编号
	publishDate DATE#出版日期
);

案例2:创建表author

CREATE TABLE IF NOT EXISTS author(
	id INT,#编号
	aname VARCHAR(20),#姓名
	nation VARCHAR(10)#国籍
);

(二)表的修改

格式

ALTER TABLE 表名 ADD|DROP|MODIFY|CHANGE COLUMN 列名 【列类型 约束】;

1.修改列名

格式

ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;

案例:修改book表的列publishDate,更名为pubDate

ALTER TABLE book CHANGE COLUMN publishDate pubDate DATE;

2.添加列(字段)

格式

ALTER TABLE 表名 ADD COLUMN 列名 列类型 【FIRST|AFTER 字段名】;

FIRST表示添加到第一列,AFTER 字段名 表示添加到某字段后

案例1:在author表中添加薪资字段

ALTER TABLE author ADD COLUMN salary DOUBLE;	

案例2:在author表中添加一个字段到第一列,再添加一个字段到nation后面

ALTER TABLE author ADD COLUMN new1 INT FIRST;
ALTER TABLE author ADD COLUMN new2 INT AFTER nation;

MySQL学习总结(六)DDL语言之库的创建/修改库名/修改库的字符集/库的删除/表的创建/修改列名/添加列/修改列的类型或约束/删除列/修改表名/表的删除/表的复制

3.修改列的类型或约束

格式

ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 【或新约束】;

案例:将book表的pubDate字段的类型更改为TIMESTAMP

ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;

4.删除列

格式

ALTER TABLE 表名 DROP COLUMN 列名;

案例:删除author表中薪资这一列

ALTER TABLE author DROP COLUMN salary;

5.修改表名

格式

ALTER TABLE 表名 RENAMETO】 新表名;

案例:将author表的名字修改为book_author

ALTER TABLE author RENAME TO book_author;

(三)表的删除

格式

DROP TABLEIF EXISTS】 表名;

案例:删除book_author表

DROP TABLE IF EXISTS book_author;

开发中通用的创建库、创建表的写法:

DROP DATABASE IF EXISTS 库名;
CREATE DATABASE 库名;

DROP TABLE IF EXISTS 表名;
CREATE TABLE 表名();

(四)表的复制

假设有这样一张表author:
MySQL学习总结(六)DDL语言之库的创建/修改库名/修改库的字符集/库的删除/表的创建/修改列名/添加列/修改列的类型或约束/删除列/修改表名/表的删除/表的复制

1.仅复制表的结构

格式

CREATE TABLE 表名 LIKE 源表名;

案例

CREATE TABLE copy1 LIKE author;

2.复制表的结构+数据

格式

CREATE TABLE 表名
SELECT * FROM 源表名;

案例

CREATE TABLE copy2
SELECT * FROM author;

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

格式

CREATE TABLE 表名
SELECT1,2,...
FROM 源表名
WHERE 筛选条件

案例:复制author表中所有的中国人

CREATE TABLE copy3
SELECT * FROM author
WHERE nation='中国';

4.仅复制表的结构中的某些字段(不复制数据)

格式

CREATE TABLE 表名
SELECT 要复制的字段列表
FROM 源表名
WHERE 恒不成立的筛选条件;

案例

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

MySQL学习总结(六)DDL语言之库的创建/修改库名/修改库的字符集/库的删除/表的创建/修改列名/添加列/修改列的类型或约束/删除列/修改表名/表的删除/表的复制

相关标签: # MySQL