【MySQL】(基础篇三) —— 创建数据库和表

news2025/4/12 17:42:16

管理数据库和表

管理数据库

创建数据库

在MySQL中,创建数据库的SQL命令相对简单,基本语法如下:

CREATE DATABASE 数据库名;

如果你想避免在尝试创建已经存在的数据库时出现错误,可以添加 IF NOT EXISTS 子句,这样如果数据库已经存在,MySQL不会报错,而是继续执行后续的命令:

CREATE DATABASE IF NOT EXISTS 数据库名;

如果你想指定数据库的字符集和排序规则,可以使用 CHARACTER SETCOLLATE 子句,例如:

CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

在这个例子中,utf8mb4 是字符集,支持完整的 Unicode,包括表情符号等4字节字符,而 utf8mb4_unicode_ci 是校对规则,表示不区分大小写。

在命令行工具中,你可以直接输入这些命令来创建数据库。如果你使用的是图形界面工具,如Navicat等,通常会有相应的图形界面操作来帮助你创建数据库,而背后执行的也是类似的SQL命令。

确保在执行这些命令之前,你已经使用正确的用户凭证连接到了MySQL服务器。

【示例】创建一个数据库mysql_study,作为我们日后学习mysql时使用的数据库,设置数据库编码为utf8

CREATE DATABASE mysql_study CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

如果创建之后在navicat中没有显示,右键连接,刷新

在这里插入图片描述

删除数据库

要删除一个数据库,可以使用 DROP DATABASE 命令。如果希望在数据库不存在时避免错误,可以添加 IF EXISTS 选项。

DROP DATABASE IF EXISTS 数据库名;

在数据库中执行删除操作的时候,尤其是删除一整个数据库,你应该非常的谨慎,多确认几遍总不是坏事,或者是提前建立好备份。

备份数据库

在MySQL中,备份数据库通常可以通过逻辑备份和物理备份两种方式进行。以下是这两种方法的具体操作:

逻辑备份

逻辑备份是将数据库中的数据以SQL语句的形式导出到文件中。最常用的工具是mysqldump命令。

使用mysqldump命令备份

mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql
  • -u 后跟数据库用户名。
  • -p 表示需要输入密码,系统会提示你输入。
  • 数据库名 是你要备份的数据库名称。
  • 备份文件名.sql 是你想保存的备份文件名,通常以.sql结尾。

使用图形化工具备份

如果你更倾向于图形界面操作,可以使用MySQL Workbench、Navicat等工具:

  1. 连接到你的数据库。
  2. 寻找“备份”或“导出”功能。
  3. 选择数据库和备份格式(通常是SQL)。
  4. 指定备份文件保存的位置和名称。
  5. 开始备份过程。

【示例】在navicat中备份我们刚创建的数据库mysql_study

在这里插入图片描述

物理备份

物理备份是直接复制数据库的物理文件,如数据文件和日志文件。这种方式通常需要数据库处于锁定或非常有限活动的状态,并且操作较为复杂,一般由专业的数据库管理员执行,或者使用像Percona XtraBackup这样的工具来进行热备份(即在数据库运行时备份)。

管理表

对于数据库内部的表操作(如创建、修改表结构、删除表等),则涉及到另一套命令,包括 CREATE TABLE, ALTER TABLE, DROP TABLE 等。

创建表

列名和数据类型使用空格隔开,而不同列之间使用逗号隔开

CREATE TABLE 表名 (
  列名1 数据类型,
  列名2 数据类型,
  ...
  PRIMARY KEY (主键列名)
);

NULL

NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。请看下面的例子:

CREATE TABLE orders
(
	cust_id int NOT NULL AUTO_INCREMENT,
	order_date datetime NOT NULL,
	order_num int NOT NULL,
	PRIMARY KEY (cust_id )
) ENGINE=InnoDB;

在navicat中,可以通过右键表——>【设计表】来查看和管理表中的字段信息

在这里插入图片描述

主键

主键值必须唯一。即,表中的每个行必须具有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。作为主键的列,不可以有NULL属性。主键可以在创建表时定义(如这里所示),或者在创建表之后定义.

主键在船建表之后的类似的语句定义:

PRIMARY KEY (列名1[,列名2, 列名3...])

AUTO_INCREMENT

在上面创建orders表的命令中,有一行为:

cust_id int NOT NULL AUTO_INCREMENT,

AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值。

每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。

覆盖AUTO_INCREMENT 如果一个列被指定为AUTO_INCREMENT,则它需要使用特殊的值吗?你可以简单地在INSERT语句中指定一个值,只要它是唯一的(至今尚未使用过)即可,该值将被用来替代自动生成的值。后续的增量将开始使用该手工插入的值。

那么,如何在使用AUTO_INCREMENT列时获得这个值呢?可使用last_insert_id()函数获得这个值,如下所示:

SELECT last_insert_id()

此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。

默认值

如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。

MySQL不允许使用函数作为默认值,它只支持常量。

许多数据库开发人员使用默认值而不是NULL列,特别是对用于计算或数据分组的列更是如此。

引擎类型

上述建表例子中使用的CREATE TABLE语句全都以ENGINE=InnoDB语句结束。

MySQL有一个具体管理和处理数据的内部引擎。在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在DBMS内,不需要过多关注它。

MySQL具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行CREATE TABLE和SELECT等命令。不同的引擎具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。

以下是几个需要常用的引擎:

  • InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索;
  • MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
  • MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。

在没有特殊需求(全文搜索等)的要求下,使用默认引擎即可,从MySQL 5.5版本开始,InnoDB成为默认存储引擎。也不需要特别指出。在涉及到这些特殊需求的情况下,我会为你详细讲解

修改表结构

添加列、删除列、修改列定义等

-- 添加列
ALTER TABLE 表名
ADD 列名 数据类型;

-- 删除列
ALTER TABLE 表名
DROP COLUMN 列名;

-- 修改列定义(列名、数据类型、NULL等)
ALTER TABLE 表名
MODIFY 列名 新数据类型;

使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们。类似地,如果删除了不应该删除的列,可能会丢失
该列中的所有数据。

删除表
DROP TABLE IF EXISTS 表名;

删除表没有确认,也不能撤销,执行这条语句将永久删除该表,请谨慎使用。

重命名表

使用RENAME TABLE语句可以重命名一个表:

RENAME TABLE 旧表名 TO 新表名;

RENAME TABLE所做的仅是重命名一个表。可以使用下面的语句对多个表重命名:

RENAME TABLE backup_customers TO customers,
			 backup_vendors To vendors,
			 backup_products TO products;

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

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

相关文章

transformer - 注意力机制

Transformer 的注意力机制 Transformer 是一种用于自然语言处理任务的模型架构,依赖于注意力机制来实现高效的序列建模。注意力机制允许模型在处理一个位置的表示时,考虑输入序列中所有其他位置的信息,而不仅仅是前面的几个位置。这种机制能…

学会python——九九乘法表+斐波那契数列(python实例一)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 pycharm编译 2、九九乘法表 2.1 代码构思 2.2 代码示例 2.3 运行结果 3、斐波那契数列 3.1 代码构思 3.2 代码示例 3.3 运行结果 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对…

Mac清洁神器CleanMyMac2024一键轻松解决电脑垃圾问题

【CleanMyMac】苹果mac电脑垃圾清理软件 大家好!今天我要给大家种草一个超级好用的苹果mac电脑垃圾清理软件,那就是 CleanMyMac。相信很多人都遇到过电脑运行速度变慢、存储空间不足的问题,而这款软件就是解决这些问题的救星!让我…

UML交互图-协作图

概述 协作图和序列图都表示出了对象间的交互作用,但是它们侧重点不同。序列图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系。协作图则清楚地表示了对象间的关系,但时间顺序必须从顺序号获得。序列图常常用于表示方案&#…

物理机宕机后,虚拟机出现(无响应),虚拟机无法开机

物理机宕机后,虚拟机出现(无响应),虚拟机无法开机 解决方案;看存储池中,文件是否还存在;如果存在,新建虚拟机,加载存储池中的磁盘,重启虚拟机就可以了 重新创…

matlab---app

一 基础 标签和信号灯没有回调函数 clc,clear,close all %清理命令区、工作区,关闭显示图形 warning off %消除警告 feature jit off %加速代码运行 ysw{i}i %循环赋值 celldisp(ysw) %显示元胞数组ysw.y1{1}[1,2] …

【机器学习300问】108、什么是多项式回归模型?

一、多项式回归是什么 (1)举例说明 假设你经营着一家农场,想要根据土地面积来预测作物的产量。如果你只用线性模型(即),你可能会发现它并不足以描述实际的产量情况,因为实际产量可能会随着土地…

美国演员工会SAG-AFTRA 要求人工智能在广告中使用演员声音需征得同意并付费

SAG-AFTRA 的新豁免允许在人工智能生成的广告中使用演员的声音,但需要同意、补偿和安全措施 美国演员工会(SAG-AFTRA)推出了一项新的豁免,以保护会员免受未经授权的人工智能在广告中使用其声音的影响。动态人工智能音频广告豁免定…

添加Microsoft.VisualStudio.TestTools.UnitTesting命名空间

创建“单元测试项目”,则自动添加 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间

《Brave New Words 》2.1 学生为什么要写作

Part II: Giving Voice to the Social Sciences 第二部分:为社会科学发声 Art is a collaboration between God and the artist, and the less the artist does the better. —Andr Gide 艺术是上帝与艺术家的合作,艺术家做得越少越好。 —安德烈纪德 A …

Docker 常用命令以及镜像选择

目录 1.Docker基本组成 2.镜像选择 2.1、镜像推荐选择方案 2.2版本选择 3.Docker 命令 3.1镜像管理 拉取镜像: 列出镜像: 删除镜像: 构建镜像: 3.2容器管理 运行容器 列出运行中的容器和所有容器 停止容器 启动重启…

微服务开发与实战Day04

一、网关路由 网关&#xff1a;就是网络的关口&#xff0c;负责请求的路由、转发、身份校验。 在SpringCloud中网关的实现包括两种&#xff1a; 1. 快速入门 Spring Cloud Gateway 步骤&#xff1a; ①新建hm-gateway模块 ②引入依赖pom.xml(hm-gateway) <?xml version…

(2024,自监督 ViT,全监督 ViT,损失可视化,MAE,RC-MAE,自蒸馏,EMA)可视化自监督 ViT 的损失景观

Visualizing the loss landscape of Self-supervised Vision Transformer 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0 摘要 2 基础&#xff1a;MAE 和 RC-MAE 3 损失景观 3.1 分…

matlab GUI界面设计

【实验内容】 用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面&#xff0c;该设计程序有以下基本功能&#xff1a; &#xff08;1&#xff09;图像的读取和保存。 &#xff08;2&#xff09;设计图形用户界面&#xff0c;让用户对图像进行彩色图像到灰度图像的转换…

【java、lucene、python】互联网搜索引擎课程报告二:建立搜索引擎

一、项目要求 建立并实现文本搜索功能 对经过预处理后的500个英文和中文文档/网页建立搜索并实现搜索功能对文档建立索引&#xff0c;然后通过前台界面或者已提供的界面&#xff0c;输入关键字&#xff0c;展示搜索结果前台可通过网页形式、应用程序形式、或者利用已有的界面…

SQLserver通过CLR调用TCP接口

一、SQLserver启用CLR 查看是否开启CRL&#xff0c;如果run_value1&#xff0c;则表示开启 EXEC sp_configure clr enabled; GO RECONFIGURE; GO如果未启用&#xff0c;则执行如下命令启用CLR sp_configure clr enabled, 1; GO RECONFIGURE; GO二、创建 CLR 程序集 创建新项…

【Java】单例设计模式

单例设计模式简介 目录 1.单例设计模式是什么&#xff1f;2.单例设计模式设计方法饿汉式懒汉式 3.单例设计模式的应用任务管理器(仅有一个页面&#xff0c;不可多开)Runtime运行环境 1.单例设计模式是什么&#xff1f; 设计模式 是解决 特定问题的优秀设计方式之一。 单例设计…

mathematica中针对三维图中的颜色和填充透明度进行指定

颜色指定使用的命令为&#xff1a;PlotStyle 填充的透明度使用的命令为&#xff1a;FillingStyle 示例代码&#xff1a; Clear["Global*"] Plot3D[{Sin[x^2 y], Sin[x^2 - y]}, {x, -2, 2}, {y, -2, 2}, PlotStyle -> {Directive[Red, Specularity[White, 100…

人体部位眼耳手腿分类数据集4376张4类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;4376 分类类别数&#xff1a;4 类别名称:["Ears","Eyes&quo…

win设置ftp服务器~java通过ftp下载文件

1.先设置ftp 2.打开服务 3.设置站点 4.起名字 这样就可以了 5.剩下的就是设置权限和账号了&#xff0c;找到对应的按钮就可以了 6.下载文件的代码 public byte[] downloadFile(File file) throws IOException{ByteArrayOutputStream out new ByteArrayOutputStream();toDi…