当前位置:网站首页>MySQL中的DDL常规操作总结
MySQL中的DDL常规操作总结
2022-08-11 01:24:00 【她丶如月中来】
MySQL中的DDL常规操作总结
相信对于一个后端开发人员来说,SQL的DML(Data Manipulation Language)操作是很熟悉的,毕竟在忙于写业务代码的同时,对数据操作最多的就是增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)。但是由于经常使用DML而造成对DDL(Data Definition Language)使用过少,以至于有时候需要对库、表、列等对象操作时,常常记不清该用哪个SQL语句。因此Mysql总常规的DDL操作总结一下。
前言
由于健忘和不常使用DDL,导致很多时候涉及到对表或者库的结构操作时,经常想起不起应该用哪个SQL进行操作,为此为了不再每次都找度娘,在此篇日志总结一下常用的DDL操作。
一、DDL操作库
- 新建数据库 CREATE DATABASE data_base_name;
例如创建一个名为menagerie的数据库:CREATE DATABASE menagerie DEFAULT CHARACTER SET utf8;
- 选择使用某个库 USE data_base_name;
例如使用menagerie数据库:USE menagerie;
- 删除指定库 DROP DATABASE data_base_name;
例如删除menagerie数据库: DROP DATABASE menagerie;
- 查看现存所有库 SHOW DATABASES;
- 查看显示指定库 SHOW DATABASES LIKE data_base_name;
例如查看以m开头的库:SHOW DATABASES LIKE ‘m%’;
- 修改指定库默认字符集 ALTER DATABASE data_base_name DEFAULT CHARACTER SET utf8;
例如修改库menagerie的字符集为utf8:ALTER DATABASE menagerie DEFAULT CHARACTER SET utf8;
二、DDL操作表(表、字段、索引操作)
- 新建表 CREATE TABLE table_name;
例如创建一个名为table_name的表,设置默认存储引擎INNODB,默认字符集为utf8:
DROP TABLE IF EXISTStable_name;
CREATE TABLE table_name(idINT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ‘主键’,nameVARCHAR(20) NOT NULL COMMENT ‘姓名(不能为空)’,phoneCHAR(11) DEFAULT NULL COMMENT ‘手机号(默认为NULL)’,hobbyVARCHAR(255) DEFAULT NULL COMMENT ‘爱好(默认为NULL)’,
UNIQUE INDEX unique_phone_index(phone) COMMENT ‘创建唯一索引’,
INDEX name_index(name) COMMENT ‘为name字段创建普通索引’
)ENGINE=INNODB DEFAULT CHARSET=utf8;
- 查看表结构 DESCRIBE table_name;
例如查看表table_name的结构:DESCRIBE table_name;
- 删除指定表 DROP TABLE table_name;
例如删除表为table_name的表:DROP TABLE table_name;
- 查看某个库下现存的表 SHOW TABLES;
- 重命名表名 ALTER TABLE old_table RENAME new_table; 或者 RENAME TABLE old_table TO new_table;
例如将table_name重命名为merge_table:
ALTER TABLE table_name RENAME merge_table; 或者 RENAME TABLE table_name TO merge_table;
- 查看指定表存在的所有索引 SHOW KEYS FROM table_name;
例如查看表名为table_name所存在的索引: SHOW KEYS FROM table_name;
- 修改表默认存储引擎 ALTER TABLE table_name ENGINE = INNODB;
- 添加(或修改)表格注释 ALTER TABLE table_name COMMENT = ‘注释’
例如为名为table_name的表增加注释,注释该表是一个测试表:
ALTER TABLE table_name COMMENT = ‘测试表’;
- 更改表默认字符集 ALTER TABLE table_name CHARCTER SET = 字符集;
例如将表名为table_name的表默认字符集改为uft8mb4: ALTER TABLE table_name CHARCTER SET = utf8mb4;
- 更改某列名字但是不更改其定义 ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name
例如将名为table_name的表将name字段改为alias: ALTER TABLE table_name RENAME COLUMN name TO alias;
- 更改某列定义但是不更改其名字 ALTER TABLE table_name MODIFY column_name column_type;
例如更改table_name的name字段为VARCHAR(100)并且不能为空:
ALTER TABLE table_name MODIFY name VARCHAR(100) NOT NULL;
- 更改某列的名字和定义 ALTER TALBE table_name CHANGE old_column_name new_column_name column_type;
例如修改table_name表的字段name为alias并且类型改为char(100)不能为空:
ALTER TABLE table_name CHANGE name alias char(100) not null;
- 向指定表增加字段 ALTER TABLE table_name ADD COLUMN new_column_name column_type;
例如向table_name表增加一个名为sex的字段,类型为char: ALTER TABLE table_name ADD COLUMN
sex char(1) NOT NULL;
- 向指定表删除某列 ALTER TABLE table_name DROP COLUMN column_name;
例如删除table_name的sex列: ALTER TABLE table_name DROP sex;
- 向指定表中的某个字段增加索引 ALTER TABLE table_name ADD INDEX index_name(column_name);
例如给table_name表的name字段增加一个索引,索引名为name_index:
ALTER TALBE table_name ADD INDEX name_index(name);
- 创建索引并添加到指定表中 CREATE INDEX index_name ON table_name(column);
例如为table_name的phone字段创建唯一索引:
CREATE UNIQUE INDEX create_phone_indexs ON table_name (phone);
- 删除指定索引 DROP INDEX index_name ON table_name;
例如删除table_name表phone字段的唯一索引:
DROP INDEX create_phone_indexs ON table_name
总结
关于开发中常用DDL操作就总结到这里,后续遇到将会更新文章内容,如果发现有误或者有更好的建议,欢迎留言谈论。
边栏推荐
- 循环单词
- 21. Aliyun oss
- 微信小程序通过URL Scheme动态的渲染数据
- C# WebBrower1控件可编辑模式保存时会提示“该文档已被修改,是否保存修改结果”
- WebView2 通过 PuppeteerSharp 实现RPA获取壁纸 (案例版)
- 两日总结十
- rhel7.0解决yum无法使用(system is not registered to Red Hat Subscription Management)
- WinForm (5) control and its members
- 数据库数据采集利器FlinkCDC
- Is container technology really the savior of environmental management?
猜你喜欢
随机推荐
Two-dimensional array combat project -------- "Minesweeper Game"
Pico 4更多参数曝光:Pancake+彩色透视,还有Pro版本
络达开发---自定义Timer的实现
Jvm. Profiling tools (jconsole, jvisualvm, arthas, jprofiler, mat)
J9数字论:DAO治理更像一种生态过程:治理原生于网络,不断演变
Single-chip human-computer interaction--matrix key
【C语言】探索数据的存储(整形篇)
微信小程序内部A页面向内嵌H5页面跳转,并且传参
Shell Text Three Musketeers Sed
成功解决raise TypeError(‘Unexpected feature_names type‘)TypeError: Unexpected feature_names type
使用mysql语句操作数据表(table)
zerorpc:async=True can be written as **{“async“: True}
两日总结九
MSTP - Multiple Spanning Tree (Case + Configuration)
简陋的nuxt3学习笔记
两日总结十一
Exceptions and exception handling mechanisms
std::format格式化自定义类型
Ambari迁移Spark2到其它机器(图文教程)
池化技术有多牛?来,告诉你阿里的Druid为啥如此牛逼!









