DDL 数据定义语言
/*
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create
修改:alter
删除:drop
*/
一、库的管理
1.库的创建
/*
语法:
create database 【if not exists (不会报错)也不会重复创建】库名;
*/
CREATE DATABASE IF NOT EXISTS books; # C:\ProgramData\MySQL\MySQL Server 8.0\Data 找到新建的库
2.库的修改
更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;
3.库的删除
DROP DATABASE IF EXISTS BOOKS; #加上 IF EXISTS, 如果没有库的话 删除也不报错
二、表的管理
1.表的创建
/*
语法:
create table 表名(
列名 列的类型【(长度)约束】,
列名 列的类型【(长度)约束】,
列名 列的类型【(长度)约束】,
...
列名 列的类型【(长度)约束】
)
*/
CREATE DATABASE BOOKS;
案例1:创建表
CREATE TABLE IF NOT EXISTS book(
id INT,#编号
bName VARCHAR(20),#图书名
price DOUBLE,#价格
authorId INT,#作者编号
publishDate DATETIME#出版日期
);
DESC book;
案例2:作者表
CREATE TABLE author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
DESC author;
2.表的修改
/*
1.修改列名
2.修改列的类型或约束
3.添加新的列 alter table 表名 add column 列名 类型【first|after 字段】(添加指定某个字段后)
4.删除列
5.修改表名
语法:
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】
*/
1.修改列名
ALTER TABLE BOOK CHANGE COLUMN publishdate pubDate DATETIME;
2.修改列的类型或约束
ALTER TABLE BOOK MODIFY COLUMN PUBDATE TIMESTAMP;
3.添加新的列
ALTER TABLE AUTHOR ADD COLUMN annual DOUBLE;
4.删除列
ALTER TABLE AUTHOR DROP COLUMN ANNUAL;
5.修改表名
ALTER TABLE AUTHOR RENAME TO BOOK_AUTHOR;
DESC BOOK_AUTHOR;
3.表的删除
DROP TABLE IS EXISTS book_author;
SHOW TABLES;#看当前表
4.表的复制
#插入数据
INSERT INTO BOOK_AUTHOR VALUES
(1,'村上春树','日本'),
(2,'莫言','中国'),
(3,'金庸','中国');
1.仅仅把表的结构复制
CREATE TABLE COPY_AUTHOR LIKE BOOK_AUTHOR;
2.复制表的结构+数据
CREATE TABLE COPY_AUTHOR2
SELECT * FROM BOOK_AUTHOR;
3.复制部分数据
CREATE TABLE COPY_AUTHOR4
SELECT ID,AU_NAME
FROM BOOK_AUTHOR
WHERE NATION ='中国';
4.仅仅复制某些字段
CREATE TABLE COPY_AUTHOR5
SELECT ID,AU_NAME
FROM BOOK_AUTHOR
WHERE 0;# where 0 恒不成立 所以找不到数据 只能传递字段
三、通用写法
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 表名();
四、练习
1. 创建表 dept1
/*
NAME NULL? TYPE
id INT(7)
NAME V ARCHAR(25)
*/
CREATE DATABASE EXERCISE;
CREATE TABLE IF NOT EXISTS dept1(
id INT(7),
NAME VARCHAR(25)
);
2. 将表 departments 中的数据插入新表 dept2 中
CREATE TABLE DEPT2#可以跨库添加
SELECT * FROM
myemployees.`departments`;
###3. 创建表 emp5
/*
NAME NULL? TYPE
id INT(7)
First_ name VARCHAR (25)
Last_name VARCHAR(25)
Dept_id INT(7)
*/
CREATE TABLE IF NOT EXISTS EMP5(
id INT(7),
First_name VARCHAR (25),
Last_name VARCHAR(25),
Dept_id INT(7)
);
4. 将列 Last_name 的长度增加到 50
ALTER TABLE EMP5 MODIFY COLUMN Last_name VARCHAR(50);
5. 根据表 employees 创建 employees2
CREATE TABLE EMPLOYEES2 LIKE myemployees.`employees`;
6. 删除表 emp5
DROP TABLE EMP5;
7. 将表 employees2 重命名为 emp5
ALTER TABLE employees2 RENAME TO emp5;
8 在表 dept 和 emp5 中添加新列 test_column,并检查所作的操作
ALTER TABLE EMP5 ADD COLUMN TEST_COLUMN INT;
9.直接删除表 emp5 中的列 JOB_ID
ALTER TABLE EMP5 DROP COLUMN JOB_ID;