MySQL数据库DDL命令

MySQL数据库DDL命令

前言

DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库,表),代表指令:create,drop,alter等,本文记录常用DDL命令。

1. 数据库操作

-- 创建数据库
CREATE DATABASE database_name;
-- 若不存在则创建数据,同时指定编码
CREATE DATABASE IF NOT EXISTS database_name DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
-- 查看数据库
SHOW DATABASES;
-- 选择数据库
USE database_name;
-- 删除数据库:
DROP DATABASE database_name;

2. 表操作

-- 创建表
CREATE TABLE table_name  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `account` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号',
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',
  `age` int(3) UNSIGNED NOT NULL COMMENT '年龄',
  `status` tinyint(1) NOT NULL COMMENT '状态',
  `create_time` datetime(0) NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_account`(`account`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- 复制表,create table as模式,查询可以跟where条件
CREATE TABLE new_table_name AS SELECT * FROM table_name;
-- 复制表,create table as模式,WHERE 1=2查不出来数据,表示复制表数据
CREATE TABLE new_table_name AS SELECT * FROM table_name WHERE 1=2;
-- 复制表,create table as模式,若表不存在则建表
CREATE TABLE IF NOT EXISTS new_table_name SELECT * FROM table_name WHERE 1=2;
-- 复制表,create table like模式
CREATE TABLE new_table_name LIKE table_name;
-- 复制表,create table like模式,若表不存在则建表
 CREATE TABLE IF NOT EXISTS new_table_name LIKE table_name; 
-- 查询表结构
DESC table_name;
-- 查询表创建信息
SHOW CREATE TABLE table_name;
-- 修改表
-- 修改表备注
ALTER TABLE table_name COMMENT '备注描述';
-- 修改表名
RENAME TABLE table_name TO new_table_name;
-- 删除表
DROP TABLE table_name; 
-- 删除表,若果存在则删除表
DROP TABLE IF EXISTS table_name;

注:1、create table as 和 create table like区别

  • create table as 只是复制原数据,其实就是把查询的结果建一个表

  • create table like 产生与源表相同的表结构,包括索引和主键,数据需要用insert into 语句复制进去

2、drop table,delete table;,truncate table三种删除表的区别

  • 1.速度上,drop>truncate>delete
  • 2.truncate和delete不删除表的结构,drop删除删除表的结构和被依赖的约束,触发器,索引 ; 存储过程/函数将被保留,但是变为invalid状态
  • 3.delete 会写日志,有备份可以回滚,truncate 不会写日志,不能回滚,因此慎用
  • 4.delete删除表中数据不释放空间,truncate和drop删除数据、释放空间
  • 5.truncate不触发任何delete触发器,deletre会触发 相应的触发器

3. 字段操作

-- 向表添加int字段
ALTER TABLE table_name ADD COLUMN age int(11)  DEFAULT NULL COMMENT '年龄';
-- 添加varchar类型,并指定编码
ALTER TABLE table_name ADD COLUMN nick_name varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '年龄';
-- 向表添加age字段,并添加到email字段后
ALTER TABLE table_name ADD COLUMN age int(11) DEFAULT NULL COMMENT '年龄'  AFTER email;
-- 修改一个字段
ALTER TABLE table_name MODIFY U1 VARCHAR(20) NULL COMMENT '字段描述';  
--  修改一个字段的名称
ALTER TABLE table_name CHANGE U1 U2 VARCHAR(32) NOT NULL  COMMENT '字段描述';  
-- 删除一个字段
ALTER TABLE table_name DROP U2; 
-- 新增一个自增主键并放在第一列
ALTER TABLE table_name ADD id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
-- 取消自增
ALTER TABLE table_name MODIFY COLUMN id int(11) NOT NULL AUTO_INCREMENT;

注:注意修改字段名称只能是用change,modify不能修改字段名称。

4. 索引操作

4.1 索引类型

  • UNIQUE(唯一索引):不可以出现相同的值,可以有NULL值

  • INDEX(普通索引):允许出现相同的索引内容

  • PROMARY KEY(主键索引):不允许出现相同的值

  • fulltext index(全文索引):可以针对值中的某个单词,但效率确实不敢恭维

  • 组合索引:实质上是将多个字段建到一个索引里,列值的组合必须唯一

4.2 使用alter table创建索引

-- 向表添加int字段
ALTER TABLE table_name ADD COLUMN u1 int(11)  DEFAULT NULL COMMENT '备注';
-- 添加varchar类型,并指定编码
ALTER TABLE table_name ADD COLUMN u1 VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注';
-- 向表添加u1字段,并添加到u2字段后
ALTER TABLE table_name ADD COLUMN u1 int(11) DEFAULT NULL COMMENT '备注'  AFTER u2;
-- 修改一个字段
ALTER TABLE table_name MODIFY u1 VARCHAR(20) NULL COMMENT '字段描述';  
--  修改一个字段的名称
ALTER TABLE table_name CHANGE u1 u2 VARCHAR(20) NOT NULL  COMMENT '字段描述';  
-- 删除一个字段
ALTER TABLE table_name DROP u1; 
-- 添加主键索引
ALTER TABLE table_name add PRIMARY KEY(id);

4.3 使用CREATE INDEX语句对表增加索引

-- 添加UNIQUE(唯一索引) 
CREATE UNIQUE INDEX index_name ON table_name(column_name);
-- 添加INDEX(普通索引) 
CREATE INDEX index_name on table_name(column_name); 
-- 添加FULLTEXT(全文索引) 
CREATE FULLTEXT INDEX index_name ON table_name(column_name);
-- 添加多列索引 
CREATE INDEX index_name ON table_name(column1,column2);
-- 删除索引
DROP INDEX index_name ON table_name;
alter table products change id id int(11) not null COMMIT '主键';
alter table di_site_point drop primary key;

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值