#DDL数据管理语言
数据定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create
修改:alter
删除:drop
#一、库的管理
#1、库的创建
语法:create database [IF NOT EXISTS] 库名;
IF NOT EXISTS意思是如果库存在就不创建了,如果没有存在就创建
#案例:创建库books
CREATE DATABASE IF NOT EXISTS books;
CREATE DATABASE IF NOT EXISTS books CHARACTER SET ;
#2、库的修改
#更改库的字符集 一般不更改默认字符集 也可以创建库的时候修改字符集
ALTER DATABASE books CHARACTER SET utf8;
#3、库的删除
#IF EXISTS如果数据库存在 则删除数据库
DROP DATABASE IF EXISTS books;
#二、表的创建
#1.表的创建 (重点)
语法:
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
.... ....
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】
);
#案例:创建表book
CREATE TABLE book(
id INT,#编号
bName VARCHAR(20),#图书名
price DOUBLE,#价格
authorId INT,#作者编号
publishDate DATETIME#出版日期
);
#案例:创建表author
CREATE TABLE author(
au_id INT,#作者id
au_Name VARCHAR(20),#作者名
natiom VARCHAR(10)#国籍
);
#2、表的修改
语法:
alter table 表名 add(添加列名)|drop(删除列)|modify(修改列的类型)|change(修改列名) column 列名 【列类型 约束】
#Ⅰ.修改列名 change column
#语法:alter table 表名 change column 旧的列名 新的列名 列的类型;(varchar int ) 其中column可以省略
#案例:修改book表中 publishDate列名字 新名为 publish_Date
ALTER TABLE book CHANGE COLUMN publishDate publish_Date DATETIME;
ALTER TABLE book_author CHANGE COLUMN au_id authorId INT;
#Ⅱ.修改列的类型或约束 modify column
#语法:alter table 表名 modfiy column 列名 新的列的类型;(varchar int )
#案例:修改publish_Date列中的类型改为timestamp
ALTER TABLE book MODIFY COLUMN publish_Date TIMESTAMP;
#Ⅲ.添加新列(添加字段) add column
#语法:alter table 表名 add column 新列名 列的类型;
#案例:为book表中添加一个新列 列名为annual年薪
ALTER TABLE book ADD COLUMN annual DOUBLE;
#Ⅳ.删除列 drop column
#语法:alter table 表 drop column 列名;
#案例:将annual列删除
ALTER TABLE book DROP COLUMN annual;
#Ⅴ.修改表名 rename to
#语法:alter table 旧表名 rename to 新表名;
#案例:将author表名修改为book_author
ALTER TABLE author RENAME TO book_author;
#3.表的删除
语法:
drop table if exists 表;
if exists 如果存在再删除
#案例:删除book_author表
DROP TABLE IF EXISTS book_author;
#通用的写法:
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 表名();
#4.表的复制
INSERT INTO book_author VALUE(1,'鲁迅','中国'),(2,'莫言','中国'),(3,'村上春树','日本'),(4,'老舍','中国');
#Ⅰ.仅仅复制表的结构
#语法:create table 新复制的表 like 原始表;
SELECT * FROM book_author;
SELECT *FROM copyAuthor;
CREATE TABLE copyAuthor LIKE book_author;
#Ⅱ.复制表的结构 + 数据
CREATE TABLE copyAuthor2
SELECT * FROM book_author;#将book_author表中的结构复制出来同时,book_author表中的数据复制过来
SELECT * FROM copyAuthor2;
#Ⅲ.只复制部分数据
CREATE TABLE CREATE TABLE copyAuthor3
SELECT id,au_Name FROM book_author WHERE natiom='中国';#这里查询子句 只写了id与au_name两个字段
#仅仅复制某些字段 比如就要author表中的authorId与au_Name两个字段不要数据
CREATE TABLE copyAuthor4
SELECT authorId,au_Name FROM book_author
WHERE 1=2; #筛选条件恒不成立,所以没有数据复制进来