数据库模式定义语言DDL(data definition language)主要由两个部分组成:库的管理和表的管理。
本篇目录
一.库的管理
1.创建
语法:create database 【if not exists】 库名;
ps: if not exists 可要可不要,但是建议加上。
#案例:创建一个叫my_idol的库
CREATE DATABASE IF NOT EXISTS my_idol;
2.修改
1.修改库名:rename database 旧库名 to 新库名;
rename database my_idol to idol;
2.修改库的字符集:alter database 库名 character set 字符集名称
#修改idol数据库的字符集为gbk(原来是utf8)
alter database idol character set gbk;
3.删除
语法:drop database 【if exists】库名;
ps: likewise, if exists 可要可不要,但最好加上
drop database if exists idol;
二.表的管理
1.创建
语法:
create table 【if not exists】 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
…
列名 列的类型【(长度) 约束】
);
SQL中的数据类型请戳:数据库常见数据类型.
SQL中常见约束请戳:数据库中常见约束.
#案例:创建一个book表
create table if not exists book(
id int,
book_name varchar(20),
price double,
authorid int,
publish_date datetime
);
2.修改
2.1 修改表名
语法:alter table 旧表名 rename to 新表名;
alter table book rename to my_book;
2.2 修改列名
语法:alter table 表名 change column 旧列名 to 新列名;
alter table my_book change column id to book_id;
2.3 修改列的类型或者约束
语法:alter table 表名 modify column 列名 新类型or新约束;
alter table my_book modify column publish_date timestamp;
2.4 添加新列
语法:alter table 表名 add column 新列名字 新列类型 【新列约束】;
alter table my_book add column publisherid int;
2.5 删除列
语法:alter table 表名 drop column 列名;
alter table my_book drop column publisherid;
3.表的删除
语法:drop table if exists 表名;
4.表的复制
4.1 仅仅复制表的结构
语法:create table 表名 copy like 被复制的表名;
create table copy_1 copy like author;
4.2 复制表结构+数据
语法:
create table 表名
select * from 被复制的表名;
create table copy_2
select * from author;
4.3 复制表结构+部分数据
语法:
create table 表名
select *
from 被复制的表名
where 筛选条件;
create table copy_3
select *
from author
where id>2;
4.4 仅复制表中某些字段
语法:
create table 表名
select 字段名 【,字段名2 …】
from 被复制的表名
【where 筛选条件】;
ps:这些字段对应的数据也会被复制下来
create table copy_4
select authorname
from author
where id>2;