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

news2024/11/25 3:29:06

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


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

文末标志

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX——HTTP协议

1 HTTP协议-请求报文 HTTP协议:规定了浏览器发送及服务器返回内容的格式 请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容 1.1 请求报文的格式 请求报文的组成部分有: 请求行:请求方法,URL…

【AI视野·今日Robot 机器人论文速览 第七十九期】Thu, 18 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 18 Jan 2024 Totally 43 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers CognitiveDog: Large Multimodal Model Based System to Translate Vision and Language into Action of Quadruped Robot Aut…

Selenium图表自动化开篇

目录 前言: 使用 Canvas 或者 SVG 渲染 选择哪种渲染器 代码触发 ECharts 中组件的行为 前言: 图表自动化一直以来是自动化测试中的痛点,也是难点,痛点在于目前越来越多公司开始构建自己的BI报表平台但是没有合适的自动化测试…

【C语言】解析刘谦春晚魔术《守岁共此时》

今年的春晚上刘谦表演了魔术《守岁共此时》,台上台下积极互动(尤其是小尼),十分的有趣。刘谦老师的魔术不仅仅是他的高超手法,还有这背后的严谨逻辑,下面我们来用C语言来解析魔术吧。 源代码 #define _CRT…

MySQL学习记录——구 复合查询

文章目录 1、基本查询2、多表查询3、自连接4、子查询1、多行子查询2、多列子查询3、from句中的子查询 5、合并查询 1、基本查询 看一些例子,不关心具体内容,只看写法 //查询工资高于500或岗位为MANAGER的雇员, 同时还要满足他们的姓名首字母为大写的J …

【STM32 CubeMX】学STM必会的数据结构——环形缓冲区

文章目录 前言一、环形缓冲区是什么二、实现环形缓冲区实现分析2.1 环形缓冲区初始化2.2 写buf2.3 读buf2.4 测试 三、代码总况总结 前言 在嵌入式系统开发中,经常需要处理数据的缓存和传输,而环形缓冲区是一种常见且有效的数据结构,特别适用…

Zustand:简化状态管理的现代React状态库

Zustand:简化状态管理的现代React状态库 Zustand是一个用于管理状态的现代React状态库。它提供了简洁、可扩展和高效的状态管理解决方案,使得在React应用中处理复杂的状态逻辑变得更加容易和直观。本文将介绍Zustand的主要特点、使用方法以及它在React开…

【初学者向导】轻松加入OnlyFans世界:一站式订阅与支付指南!掌握使用虚拟卡的订阅技巧

目录 1. 引言2. 注册OnlyFans账户3. 浏览OnlyFans内容4. 选择订阅时长5. 开通虚拟卡 5.1. 什么是虚拟信用卡5.2. 如何开通虚拟卡 6. 使用虚拟卡订阅7. 总结8. 常见问题 1. 引言 什么是OnlyFans:OnlyFans是一种内容订阅服务,成立于2016年,允…

【深度学习每日小知识】交并集 (IoU)

交并集 (IOU) 是一种性能指标,用于评估注释、分割和对象检测算法的准确性。它量化数据集中的预测边界框或分段区域与地面实况边界框或注释区域之间的重叠。 IOU 提供了预测对象与实际对象注释的对齐程度的衡量标准,从而可以评估模型准确性并微调算法以改…

SNMP 简单网络管理协议、网络管理

目录 1 网络管理 1.1 网络管理的五大功能 1.2 网络管理的一般模型 1.3 网络管理模型中的主要构件 1.4 被管对象 (Managed Object) 1.5 代理 (agent) 1.6 网络管理协议 1.6.1 简单网络管理协议 SNMP 1.6.2 SNMP 的指导思想 1.6.3 SNMP 的管理站和委托代理 1.6.4 SNMP…

Spring 用法学习总结(一)之基于 XML 注入属性

百度网盘: 👉 Spring学习书籍链接 Spring学习 1 Spring框架概述2 Spring容器3 基于XML方式创建对象4 基于XML方式注入属性4.1 通过set方法注入属性4.2 通过构造器注入属性4.3 使用p命名空间注入属性4.4 注入bean与自动装配4.5 注入集合4.6 注入外部属性…

如何利用SpringSecurity进行认证与授权

目录 一、SpringSecurity简介 1.1 入门Demo 二、认证 ​编辑 2.1 SpringSecurity完整流程 2.2 认证流程详解 2.3 自定义认证实现 2.3.1 数据库校验用户 2.3.2 密码加密存储 2.3.3 登录接口实现 2.3.4 认证过滤器 2.3.5 退出登录 三、授权 3.1 权限系统作用 3.2 授…

报警产生器

1.  实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止&…

前沿技术期刊追踪——以电机控制为例

一、背景 前沿技术期刊追踪是指科研人员、学者或专业人士通过关注和阅读各类顶级科技期刊,了解并跟踪相关领域的最新研究成果和发展动态。以下是一些常见的前沿技术期刊以及追踪方法: 1. **知名科技期刊**: - 自然(Nature&#…

Atcoder ABC339 D - Synchronized Players

Synchronized Players(同步的球员) 时间限制:4s 内存限制:1024MB 【原题地址】 所有图片源自Atcoder,题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【…

IDEA 28 个天花板技巧

IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总…

书生浦语大模型实战营-课程笔记(2)

介绍了一下InternLm的总体情况。 InternLm是训练框架,Lagent是智能体框架。 这个预训练需要这么多算力,大模型确实花钱。 Lagent是智能体框架,相当于LLM的应用。 pip设置 开发机的配置 pip install transformers4.33.1 timm0.4.12 sente…

二次元自适应动态引导页

源码介绍 二次元自适应动态引导页,HTMLJSCSS,记事本修改,上传到服务器即可,也可以本地双击index.html查看效果 下载地址 https://wfr.lanzout.com/isRem1o7bfcb

山脉的个数/攀登者

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…

Vue 全组件 局部组件

一、组件定义和使用 1、全局组件 定义 <template> <div> <h1>This is a global component</h1> </div> </template> <script lang"ts"> </script> <style></style> 导入 全局组件在main.ts&#xff…