当前位置: 首页 > news >正文

【教程】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,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

相关文章:

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

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 文章目录 【MyS…...

[leetcode]买卖股票的最佳时机 (动态规划)

121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…...

隐函数的求导【高数笔记】

1. 什么是隐函数? 2. 隐函数的做题步骤? 3. 隐函数中的复合函数求解法,与求导中复合函数求解法有什么不同? 4. 隐函数求导的过程中需要注意什么?...

SG3225EEN晶体振荡器规格书

SG3225EEN 晶振是EPSON/爱普生的一款额定频率25 MHz至500 MHz的石英晶体振荡器,6脚贴片,LV-PECL输出,3225封装常规有源晶振,具有小尺寸,轻薄型,高稳定性,低相位抖动,低电源电压&…...

ESP8266 常用AT指令

一、ESP8266的AT指令要点、常见错误 AT指令要大写;以"\r\n"作结尾;串口通信,115200-None-8-1;支持2.4G频段,不支持5G频段 (如果用手机创建热点,注意选择2.4G)不支持中文的wifi名称工作模式,上电…...

esbuild 构建工具为什么很快?

esbuild 构建工具之所以很快,主要有以下几个原因: Go语言编写:esbuild 是用 Go 语言编写的,Go 语言以其高效的并发模型和编译速度而闻名。与一些其他构建工具相比,Go 语言在并发处理和内存管理方面表现出色&#xff0c…...

解决vscode报错,在赋值前使用了变量“XXX“

问题:如图所示 解决方法: 法一: 补全函数使其完整 法二: 使用断言...

python自动定时任务schedule库的使用方法

当你需要在 Python 中定期执行任务时,schedule 库是一个非常实用的工具。它可以帮助你自动化定时任务。以下是一些使用示例: 基本使用: import schedule import timedef job():print("Im working...")schedule.every(10).minutes.d…...

用机器学习方法重构期货商品板块

用机器学习方法重构期货商品板块 阿岛格 参考专栏:低门槛搭建个人量化平台 https://www.zhihu.com/column/c_1441014235068944386 摘 要 金融市场商品期货的板块分类,通常根据不同交易所、监管机构和证券商标准,按照期货标的属性、或产业链关系等进行分类,各自分类略有差…...

51单片机项目(29)——基于51单片机的避障跟随小车

1.功能设计 按键模式:按下按键,小车可以前后左右地运动 自动模式:根据红外传感器的状态,自行决定运动状态。检测到前方有物体时,车子移动,起到一个跟随的效果。 演示视频如下: 51单片机智能避障…...

人工智能学习与实训笔记(六):百度飞桨套件使用方法

目录 八、百度飞桨套件使用 8.1 飞桨预训练模型套件PaddleHub 8.1.1 一些本机CPU可运行的飞桨预训练简单模型(亲测可用) 8.1.1.1 人脸检测模型 8.1.1.2 中文分词模型 8.1.2 预训练模型Fine-tune 8.2 飞桨开发套件 8.2.1 PaddleSeg - 图像分割 8…...

Linux第一个小程序-进度条

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、回车和换行 二、行缓冲区概念 三、倒计时 四、进度条代码 版本一: ​编辑 版本二: 总结 前言 世上有两种耀眼的光芒,一…...

YoloV8改进策略:Block改进|Mamba-UNet改进YoloV8,打造全新的Yolo-Mamba网络

摘要 本文尝试使用Mamba的VSSBlock替换YoloV8的Bottleneck,打造最新的Yolo-Mamba网络。 论文:《Mamba-UNet:用于医学图像分割的类似UNet的纯视觉Mamba网络》 在医学图像分析的最新进展中,卷积神经网络(CNN)和视觉转换器(ViT)都取得了显著的基准成绩。前者通过其卷积…...

数据分析基础之《pandas(8)—综合案例》

一、需求 1、现在我们有一组从2006年到2016年1000部最流行的电影数据 数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data 2、问题1 想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取? 3、问题…...

(17)Hive ——MR任务的map与reduce个数由什么决定?

一、MapTask的数量由什么决定? MapTask的数量由以下参数决定 文件个数文件大小blocksize 一般而言,对于每一个输入的文件会有一个map split,每一个分片会开启一个map任务,很容易导致小文件问题(如果不进行小文件合并&…...

define和typedef

目录 一、define 二、typedef 三、二者之间的区别 一、define 在我们写代码的日常中,经常会用到define去配合数组的定义使用 #define N 10 arr[N]{0}; define不仅仅能做这些 #define是一种宏,我们首先来了解一下宏定义。 宏定义一般作用在C语言的预…...

SpringCloud之Nacos用法笔记

SpringCloud之Nacos注册中心 Nacos注册中心nacos启动服务注册到Nacosnacos服务分级模型NacosRule负载均衡策略根据集群负载均衡加权负载均衡Nacos环境隔离-namespace Nacos与eureka的对比临时实例与非临时实例设置 Nacos配置管理统一配置管理微服务配置拉取配置自动刷新远端配置…...

【c++】拷贝构造函数

1.特征 1.拷贝构造函数是构造函数的一个重载形式。 2.若显示定义了拷贝构造函数,编译器就不会自动生成构造函数了。 3.拷贝构造函数的参数只有一个且必须是类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。 4.若未显…...

17.3.1.2 曝光

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 基本算法:先定义一个阈值,通常取得是128 原图像:颜色值color(R,G&#…...

【Win10 触摸板】在插入鼠标时禁用触摸板,并在没有鼠标时自动启用触摸板。取消勾选连接鼠标时让触摸板保持打开状态,但拔掉鼠标后触摸板依旧不能使用

出现这种问题我的第一反应就是触摸板坏了,但是无意间我换了一个账户发现触摸板可以用,因此推断触摸板没有坏,是之前的账户问题,跟系统也没有关系,不需要重装系统。 解决办法:与鼠标虚拟设备有关 然后又从知…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...