DDL:Data Definition Language数据库定义语言:主要作用是对数据库和表的管理,
这里的表的管理是表本身,不是表里的记录数据值的管理,前面讲的增删改查是对表里的记录数据值的操作,本质不同注意区别。
1.对数据库的管理
创建数据表,修改数据库,删除数据库
2.对数据库里的数据表的管理
创建数据表 : create
修改数据表的结构设计(字段的名和字段的数据类型) : alter
删除数据表 : drop
1.数据库的管理
创建数据库books
create database books;
create database if not exists books;
修改数据库的字符集
ALTER DATABASE BOOKS CHARACTER SET gbk;
ALTER DATABASE BOOKS CHARACTER SET utf8;
删除数据库
DROP DATABASE IF EXISTS books ;
2.表的管理:
2.1.创建表:
语法:create table 表名(
字段名 字段里保存数据的类型int(11)【(数据的长度)约束】
字段名 字段里保存数据的类型【(数据的长度)约束】
字段名 字段里保存数据的类型【(数据的长度)约束】
字段名 字段里保存数据的类型【(数据的长度)约束】
字段名 字段里保存数据的类型【(数据的长度)约束】
......
);
注意:数据类型和约束,接下来用专门的部分来讲,现在就用简单的整数类型int,字符串类型varchar来举例演示
案例:books里创建一张表book用来保存书的信息
create table book(
id int(11),#书的编号
b_name VARCHAR(10),#书名
b_price DOUBLE, #书的价格
publishDate DATETIME #出版日期
)
#创建书的作者信息表
CREATE TABLE t_author(
id INT(11),
a_name VARCHAR(4),
salary DOUBLE
)
2.2.表的修改:
首先看看可以修改表的那些东西?
1.可以修改字段名 CHANGE
2.可以修改字段的数据类型或约束 MODIFY
3.可以添加新字段 ADD
4.删除字段 DROP
5.修改表名 RENAME
2.2.1修改publish_date (注意后面要跟上类型)
ALTER TABLE book change COLUMN publishDate publish_date datetime;
2.2.2修改publish_date 的时间类型(datetime)改为date日期型
alter table book modify column publish_date date;
DESC BOOK;#显示表的语句
2.2.3给作者表添加工资字段
ALTER table t_author add COLUMN salary DOUBLE;
DESC t_author;
2.2.4删除作者表工资字段
ALTER TABLE t_author DROP COLUMN salary;
DESC t_author;
2.2.5修改表名
ALTER TABLE t_author RENAME TO b_author;
DESC b_author;
总结:表结构的修改语法:
ALTER TABLE 表名 add/drop/modify/change COLUMN 字段名 字段类型 【约束】
2.3.表的删除
DROP TABLE IF EXISTS b_author ; //直接删除了
2.4.表的复制
CREATE TABLE author(
id INT(11),
a_name VARCHAR(4),
salary DOUBLE
)
INSERT INTO `books`.`author`(`id`, `a_name`, `salary`) VALUES (1, '李白', '100000');
INSERT INTO `books`.`author`(`id`, `a_name`, `salary`) VALUES (2, '李白', '100000');
INSERT INTO `books`.`author`(`id`, `a_name`, `salary`) VALUES (3, '李白', '100000');
INSERT INTO `books`.`author`(`id`, `a_name`, `salary`) VALUES (4, '李白', '100000');
INSERT INTO `books`.`author`(`id`, `a_name`, `salary`) VALUES (5, '李白', '100000');
2.4.1.仅复制表的结构
CREATE TABLE c_author like author;
DESC c_author;
SELECT * FROM c_author;
2.4.2.复制表的结构和数据
CREATE TABLE c_author1 SELECT* FROM author;
SELECT * FROM c_author1;
2.4.3.只复制表结构和部分数据
DROP TABLE IF EXISTS c_author2 ;
CREATE TABLE c_author2 SELECT * FROM author where id <=3;
SELECT * FROM c_author2;
2.4.4.只复制部分字段,且不要数据
CREATE TABLE c_author3 SELECT a_name FROM author WHERE 0;
SELECT * FROM c_author3;