版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址: https://blog.csdn.net/m0_37057454/article/details/82560434
在根据设计文档创建NewsDB数据库的过程中,我们用到了DDL。
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的连接,以及施加表间的约束。
语法格式:CREATE DATABASE - 创建新数据库
主要的DDL动词:
CREATE(创建)、DROP(删除)、ALTER(修改)、TRUNCATE(截断)、RENAME(重命名)
主要的DDL对象:
DATABASE(数据库)、TABLE(表)、VIEW(视图)
INDEX(索引)、PROCEDURE(存储过程)、TRIGGER(触发器)、FUNCTION(函数)
我们通过创建一个测试库,通过创建permission表来快速熟悉常见的DDL语句:
表名:权限表(permission)
序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | id | varchar(45) | 45 | 0 | N | Y | 主键 | |
2 | name | varchar(45) | 45 | 0 | Y | 权限名称 | ||
3 | orderby | int | 10 | 0 | Y | 0 | 排序 | |
4 | create_time | datetime | 23 | 0 | Y | CURRENT_TIMESTAMP |
1)创建测试库test1
create database test1;
2)创建权限表permission
CREATE TABLE `permissions` (
`id` varchar(45) NOT NULL COMMENT '主键',
`namey` varchar(45) NOT NULL COMMENT '权限名称',
`namez` varchar(45) NOT NULL COMMENT '权限名称',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`namey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限表';
3)这里发现表名多了一个s,修改表名permissions => permission
ALTER TABLE `permissions` RENAME TO `permission`;
4)字段name多了一个y,namey=>name
ALTER TABLE `permission`
CHANGE COLUMN `namey` `name` VARCHAR(45) NOT NULL DEFAULT '名称' ;
5)删除列namez
ALTER TABLE `permission` DROP COLUMN `namez`;
6)主键列错了,name=》id,mysql中第一步是把字段设置成not null,然后再去删除原主键,添加新主键。
即在mysql中只有非空字段才能设为主键。
ALTER TABLE `permission`
CHANGE COLUMN `id` `id` VARCHAR(45) NOT NULL DEFAULT NULL COMMENT '主键' ,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
7)缺少排序字段orderby,添加列orderby,并置于name列之后
ALTER TABLE `permission`
ADD COLUMN `orderby` INT NULL DEFAULT 0 AFTER `name`;
8)给orderby字段添加注释
ALTER TABLE `docker_mysql`.`permission`
CHANGE COLUMN `orderby` `orderby` INT(11) NULL DEFAULT '0' COMMENT '排序' ;
批量插入5条测试数据
INSERT INTO `permission`
(`id`,`name`)
VALUES
('001','权限1'),
('002','权限2'),
('003','权限3'),
('004','权限4'),
('005','权限5');
9)创建视图,
CREATE VIEW v_permission
AS SELECT id,name from permission
10)清空表
TRUNCATE `permission`;
11)删除表
DROP TABLE `permission`;
12)删除测试库
drop database test1;
现在基本的语句都已经掌握了,在测试服务器中,创建NewsDB。