【教程】MySQL数据库学习笔记(三)——数据定义语言DDL(持续更新)

文首标志
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!


【MySQL数据库学习】系列文章

第一章 《认识与环境搭建》
第二章 《数据类型》
第三章 《数据定义语言DDL》


文章目录

  • 【MySQL数据库学习】系列文章
  • 一、DDL介绍
  • 二、DDL数据库操作
    • (一)查看数据库
    • (二)创建数据库
    • (三)选择数据库
    • (四)删除数据库
    • (五)转换数据库编码
  • 三、DDL表结构操作
    • (一)创建表
    • (二)查看所有表
    • (三)查看表创建语句
    • (四)查看表结构
    • (五)删除表
    • (六)修改表结构
      • 1.添加列
      • 2.更改列
      • 3.删除列
      • 4.修改表名


一、DDL介绍

DDL(Data Definition Language),数据定义语言,是用于定义和管理数据库对象(如表、视图、索引等)的语言。它是一种结构化查询语言(SQL)的子集。该语言部分包括以下内容:

  • 对数据库的常用操作
  • 对表结构的常用操作
  • 修改表结构

二、DDL数据库操作

以下是DDL对数据库的常用操作。

功能SQL语句
查看所有数据库SHOW DATABASES;
创建数据库CREATE DATABASE [IF NOT EXISTS] 数据库 [CHARSET=utf8];
切换据库USE 数据库;
删除数据库DROP DATABASE [IF EXISTS] 数据库;
修改数据库编码ALTER DATABASE 数据库 CHARACTER SET 编码样式;

需要指出的是,由于SQL语言大小写不敏感,所以为了可读性一般会将标识符大写,但使用小写也不影响程序运行。另外,使用[]内的语句代表着可选。

(一)查看数据库

下面是代码实验。进入Navicat后,点击左侧连接好的MySQL,会发现有一些默认数据库,点击“新建查询”,即可输入SQL语言代码进行操作。

-- 查看数据库
SHOW DATABASES;

此时在弹出的结果栏可以查看目前MySQL存在的数据库。

(二)创建数据库

-- 创建数据库
CREATE DATABASE mydb1;

运行后可以看到结果栏中出现mydb1这个新创建的数据库。同时,在左侧的库显示栏右键刷新后也可以看到新创建的库。
但当重复运行创建数据库的语句时,会报错“> 1007 - Can’t create database ‘mydb1’; database exists”,即数据库已存在,不可创建。所以会加上IF NOT EXISTS的判断语句,这样就不会报错。

CREATE DATABASE IF NOT EXISTS mydb1;

(三)选择数据库

当选择使用哪一个数据库进行编辑时,使用如下语句。

-- 选择使用数据库
USE mydb1;

(四)删除数据库

而当要删除此处已经创建的mydb1数据库时,则使用以下语句。

-- 删除数据库
DROP DATABASE mydb1;

刷新即可发现创建的数据库mydb1已经被删除。
然而当重复运行删除数据库的语句时,会报错“> 1008 - Can’t drop database ‘mydb1’; database doesn’t exist”,即数据库不存在,不可删除。所以加上IF EXISTS的判断语句就可以不报错。

(五)转换数据库编码

至于转换编码则一般不需要,因为在初始化的时候已经默认将MySQL设置为utf8编码了,但如果进行操作时,语句也一般如下。

-- 修改数据库的编码
ALTER DATABASE mydb1 CHARACTER SET utf8;

三、DDL表结构操作

以下是DDL对表结构的常用操作。

功能SQL语句
创建表CREATE TABLE 表名();
查看当前数据库所有表SHOW TABLES;
查看指定表的创建语句SHOW CREATE TABLE 表名;
查看表结构DESC 表名;
删除表DROP TABLE 表名;

(一)创建表

创建表是在数据库中构建一张空表,制定这个表的名字,这个表的列数和列名,以及每一列储存的数据类型。具体语法如下。

CREATE TABLE [IF NOT EXISTS]表名(
	字段名1 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
	字段名2 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
	字段名3 类型[(宽度)] [约束条件] [COMMENT '字段说明'],
)[其他表设置];

其中,字段名实际上就是列名,类型则是需要选择的数据类型。

-- 创建表
CREATE DATABASE IF NOT EXISTS mydb1;
USE mydb1;
CREATE TABLE IF NOT EXISTS student(
	sid INT,
	name VARCHAR(20),
	gender VARCHAR(10),
	age INT,
	birth DATE,
	address VARCHAR(20),
	score DOUBLE
);

以上代码重新创建了数据库mydb1,并确定使用此数据库进行编辑。随后,创建了一个表student,表中有7个列,分别是学生号sid、名字name、性别gender、年龄age、出生日期birth、地址address和成绩score
在Navicat中点击mydb1库进入表即可看到student表的空表如下。
创建表

(二)查看所有表

-- 查看所有表
SHOW TABLES;

输入以上命令,结果栏即可查看当前数据库的所有表。当然,作为图形化界面,在Navicat的左侧依然可以查看到所有的库和表。

(三)查看表创建语句

-- 查看表创建语句
SHOW CREATE TABLE student;

承接之前创建的表student,输入以上命令就能在结果栏返回当时创建表student的语句。返回结果如下。

CREATE TABLE `student` (
`sid` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`age` int DEFAULT NULL,
`birth` date DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
`score` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3

(四)查看表结构

-- 查看表结构
DESC student;

使用以上语句,就可以查询到表student的相应表结构。返回结果如下图。
查看表结构返回结果

(五)删除表

-- 删除表
DROP TABLE student;

使用以上语句即可删除刚刚创建和操作的表student

(六)修改表结构

在创建表后,若希望增添或者删除表的某列,修改表名等操作,就需要用到对表结构的修改语句。

1.添加列

ALTER TABLE 表名 ADD 列名 类型(长度) [约束];

使用以上的语法结构再给表student中添加一个系别(department)字段名dept,其代码如下。

ALTER TABLE student ADD dept VARCHAR(20);

使用DESC命令即可查看添加后的表结构如图所示。
添加列

2.更改列

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) [约束];

使用以上的语法结构给表student中刚刚添加的系别字段名dept更改为department,其代码如下。

ALTER TABLE student CHANGE dept department VARCHAR(30);

此时查看的表结构如图所示。
更改列

3.删除列

ALTER TABLE 表名 DROP 列名;

使用以上的语法结构将表student的系别列删除,其代码如下。

ALTER TABLE student DROP department;

如此,再使用DESC命令查看表结构,发现此列已经删除。
删除列

4.修改表名

RENAME TABLE 旧表名 TO 新表名;

使用以上的语法将表student的更名为stu,其代码如下。

RENAME TABLE student TO stu;

此时左侧库中的表名就可以发现从student改名为stu。


我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/386175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助

今天分享的是智能汽车系列深度研究报告:《智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助》。 (报告出品方:开源证券) 报告共计:43页 视觉感知最佳辅助——4D 成像毫米波雷达 感知是自动…

Excel模板1:彩色甘特图

Excel模板1:彩色甘特图 分享地址 当前效果:只需要填写进度, 其余效果都是自动完成的 。 阿里网盘永久分享:https://www.alipan.com/s/cXhq1PNJfdm ​省心。能用公式的绝不使用手动输入。 ​​ 这个区域以及标题可以手动输入…

C++PythonC# 三语言OpenCV从零开发(8):图像平滑处理

文章目录 相关链接前言图像资源图像平滑处理图像学知识补充(重点)什么是卷积什么是图像滤波什么是方框滤波和均值滤波 代码PythonCCsharp 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课…

【C++】内存五大区详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

【C语言】指针专项练习 都是一些大厂的笔试真题 附有详细解析,带你深入理解指针

一.sizeof()与strlen() sizeof是一个操作符,而strlen是一个库函数。 数组名代表首元素地址,有两种情况例外,第一种是数组名单独放在sizeof内部,第二种是&数组名,这两种情况下数组名代表的是整个数组。sizeof(arr…

【教程】Kotlin语言学习笔记(一)——认识Kotlin(持续更新)

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 文章目录 【Kotlin语言学习】系列文章一、Kotlin介绍二、学习路径 一、…

huggingface学习|用dreambooth和lora对stable diffusion模型进行微调

目录 用dreambooth对stable-diffusion-v1-5模型进行微调(一)模型下载和环境配置(二)数据集准备(三)模型微调(四)运行微调后的模型 用lora对stable-diffusion-v1-5模型进行微调&#…

在小区门口开什么店比较好?把握商机从这里开始

作为一位资深的鲜奶吧创业者,我已经在这个行业摸爬滚打了五年。这五年的时间里,我见证了社区商业的繁荣与变迁,也深刻体会到了在小区门口开店的商机与挑战。今天,我想和大家分享一些关于在小区门口开店的见解,特别是针…

【Linux】Kali Linux 系统安装详细教程(虚拟机)

目录 1.1 Kali linux简介 1.2 Kali Linux工具 1.3 VMware workstation和ESXi的区别 二、安装步骤 一、Kali概述 1.1 Kali linux简介 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最…

【C语言】【力扣】7.整数反转和9.回文数

一、整数反转 1.1 个人思考过程 初解:出现ERROR,数据溢出的情况下应该返回0。(错误) int reverse(int x){int y0;while(x!0){yy*10x%10;x/10; }return y; } 再解:加上数据溢出判断条件。(正确&#…

upload-labs文件上传漏洞靶场

第一关 <?php eval ($_POST[123]);?>发现他这个是通过客户端前端写了一个限制 我们禁用srcipt即可 蚁剑成功打开 第二关 我们上传文件2.php它提示我们文件类型不正确 我们可以联想到做了后缀检测 我们通过burp抓包修改后缀 第三关 我们上传一个.php文件不可上…

自定义Spring Boot Starter

引言 在Spring Boot的世界中&#xff0c;Starter 能够简化我们的开发过程&#xff0c;通过封装常见的依赖和自动配置。本篇旨在为有志于进一步简化Spring Boot应用配置的开发者提供指导&#xff0c;让我们一起创建一个自定义的Spring Boot Starter。 一、什么是 Spring Boot …

【机器学习】数据清洗之处理异常点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

php数组与字符串函数

php数组与字符串函数 1. php数组2. 字符串函数 1. php数组 在php中&#xff0c;有三种类型的数组&#xff1a; 数值数组 - 带有数字ID键的数组关联数组 - 带有指定的键的数组&#xff0c;每个键关联一个值多维数组 - 包含一个或多个数组的数组 2. 字符串函数 在PHP中&#xf…

vue三种路由守卫详解

在 Vue 中&#xff0c;可以通过路由守卫来实现路由鉴权。Vue 提供了三种路由守卫&#xff1a;全局前置守卫、全局解析守卫和组件内的守卫。 全局前置守卫 通过 router.beforeEach() 方法实现&#xff0c;可以在路由跳转之前进行权限判断。在这个守卫中&#xff0c;可以根据用…

leetcode(数组)128.最长连续序列(c++详细解释)DAY8

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 示例 1&a…

GEE:梯度提升树(Gradient Boosting Tree)回归教程(样本点、特征添加、训练、精度、参数优化)

作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…

Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

完全背包 题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于&#xff1a;物品是否可以重复使用 思路&#xff1a;对于完全背包问题&#xff0c;内层循环的遍历方式应该是从weight[i]开始一直遍历到V&#xff0c;而不是从V到weight[i]。这样可以确保每种物品可以被选择多次…

《Java 简易速速上手小册》第10章:Java 未来趋势和新特性(2024 最新版)

文章目录 10.1 Java 的新版本特性10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 Java 14 的 Record 类简化数据模型10.1.3 拓展案例 1&#xff1a;利用 Java 11 的 HTTP Client 进行网络请求10.1.4 拓展案例 2&#xff1a;使用 Java 12 的 Switch 表达式优化代码 10.2 Java …

【UDS】搞懂时间参数

文章目录 背景时间参数的定义应用层相关会话层相关传输层相关网络层相关实际案例分析背景 TBD. 时间参数的定义 注意,这些时间参数都是超时阈值,需要理解为什么要有这些阈值,在哪一端判断这些阈值的,无需“死记硬背”它们的含义。 应用层相关 【P2 Client】 P2 Client 的…