mysql之DDL语言
mysql之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;
/
可以跨库复制表的结构 库名.表名
/