MySQL 数据库基础操作详解

文章目录

  • MySQL 数据库基础操作详解
    • 1. 基本概念
    • 2. 库的操作
    • 3. 表的操作
    • 4. 数据操作
    • 5. 示例
      • 示例一:创建表和插入数据
      • 示例二:查询数据
      • 示例三:更新数据
      • 示例四:删除数据


MySQL 数据库基础操作详解

MySQL 是一种常用的关系型数据库管理系统,广泛应用于 Web 开发、数据分析、企业信息管理等领域。本文将详细介绍 MySQL 数据库的基础操作,包括库的操作和表的操作,并提供了一些实用的 SQL 示例。

1. 基本概念

数据可以存储在文件中,但数据库更安全、便于管理查询和程序访问。数据库本质上是一套数据存储的解决方案,底层还是依托文件进行存储。

数据库通过网络的形式提供服务。用户通过客户端访问服务端,服务端对数据库进行增删查改的操作,再将结果返回给客户端。
在这里插入图片描述

mysql -h 127.0.0.1 -P 3306 -u root -p

MySQL中,创建数据库本质就是创建一个目录,创建表本质就是在目录中创建文件,增删查改也就是访问该文件。

MySQL是关系型数据库,数据存储是按行列存储的。通常把一行称为记录,一列称为属性。
请添加图片描述

最底层是磁盘文件系统,往上是存储引擎,存储引擎是系统文件的封装,帮助我们进行文件操作。其上还有分析器,对SQL语句分析翻译成文件操作。

SQL分类解释
DDL数据定义语言用来维护存储数据的结构,如:create、drop、alter
DML数据操纵语言对数据进行操作增删查改,如:insert、delete、update、select
DCL数据控制语言负责权限管理和事务管理,如:grant、revoke、commit

2. 库的操作

创建库

使用 CREATE DATABASE 语句创建数据库,可以指定字符集和校验规则。

create database if not exists `my_database` charset=utf8 collate=utf8_general_ci;

如果不指定字符集和校验规则使用默认规则

create database `my_database` 

展示库
使用 SHOW DATABASES 可以展示所有数据库,使用 SHOW CREATE DATABASE 可以查看创建数据库的语句。

show databases;  
show create database `my_database`;

删除库
使用 DROP DATABASE 可以删除数据库。

drop database  `my_database`;

使用库

使用 USE 命令可以切换当前数据库。

use `my_database`;

查看连接情况

show processlist;

存储规则和校验规则

show variables like 'character_set_database';
show variables like 'collation_database';
# 如果存储规则是utf8,校验规则就应是utf8_general_ci。校验规则表示如何看待数据库中的数据,二者应该对应。

备份数据库
使用 mysqldump 命令备份数据库。

mysqldump -P3306 -u root -p123456 -B `db_name` > backup_file

恢复数据库
使用 source 命令恢复数据库。

source backup_file;

3. 表的操作

创建表
使用 CREATE TABLE 创建表,可以指定字段、数据类型和约束。

create table [if not exists] `tb_name` (field1 datatype,field2 datatype,field3 datatype
) [character set 字符集 collate 校验规则 engine 存储引擎];

删除表
使用 DROP TABLE 删除表。

drop table `tb_name`;

查看所有表
使用 SHOW TABLES 查看所有表,使用 DESC 查看表结构。

show tables;
show create database `tb_name`; # 查看创建表的语句

查看表结构
使用 DESC 查看表结构

desc `tb_name`;

更改表
使用 ALTER TABLE 进行改名、添加列、删除列、修改列等操作。

  • 改名
alter table `old_name` rename to `new_name`;
  • 添加列
alter table `tb_name` add (`field_name2` datatype, ...) after `field_name1`
  • 删除列
alter table `tb_name` drop (`field_name` datatype, ...)
  • 修改列
alter table `tb_name` modify (`field_name` datatype, ...) # 修改列会覆盖列的原有属性
  • 更改列名称
alter table `tb_name` change `old_name` `new_name` datatype; # 改列名也会覆盖列的原有属性

4. 数据操作

插入数据
使用 INSERT INTO 插入数据。

INSERT INTO `my_table` (`name`, `age`, `email`) VALUES ('Alice', 25, 'alice@example.com');

查询数据
使用 SELECT 查询数据。

SELECT * FROM `my_table` WHERE `age` > 30;

更新数据
使用 UPDATE 更新数据。

UPDATE `my_table` SET `email` = 'bob@example.com' WHERE `name` = 'Bob';

删除数据
使用 DELETE FROM 删除数据。

DELETE FROM `my_table` WHERE `age` < 18;

5. 示例

示例一:创建表和插入数据

假设我们要创建一个学生信息表,包含学生的学号、姓名、年龄和性别等信息。

CREATE TABLE IF NOT EXISTS `student` (`student_id` INT AUTO_INCREMENT PRIMARY KEY,`name` VARCHAR(50) NOT NULL,`age` INT,`gender` ENUM('Male', 'Female', 'Other')
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('张三', 20, 'Male');
INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('李四', 22, 'Female');
INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('王五', 21, 'Other');

示例二:查询数据

查询年龄大于 20 岁的学生信息。

SELECT * FROM `student` WHERE `age` > 20;

示例三:更新数据

将姓名为“张三”的学生信息的年龄更新为 22 岁。

UPDATE `student` SET `age` = 22 WHERE `name` = '张三';

示例四:删除数据

删除年龄小于 20 岁的学生信息。

DELETE FROM `student` WHERE `age` < 20;

通过以上示例,我们可以看到 MySQL 数据库的基本操作方式,包括创建表、插入数据、查询数据、更新数据和删除数据。这些操作是数据库开发中最基础、最常见的操作,掌握好这些操作对于开发者来说是非常重要的。

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

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

相关文章

【目录整理】(五)

​​​​​Git 基础 Git 详细安装教程文章浏览阅读10w次&#xff0c;点赞9.6k次&#xff0c;收藏1.7w次。Git 是个免费的开源分布式版本控制系统&#xff0c;下载地址为git-scm.com 或者 gitforwindows.org&#xff0c;本文介绍 Git-2.40.0-64-bit.exe 版本的安装方法&#x…

python电商结合双轨制

最近又重新整合翻看以前的数据&#xff0c;图片&#xff0c;绘画&#xff0c;还有各种编程代码&#xff0c;python,leetcode,还有关于商业方面的一些见解,想起了大学时候和同学们并肩作战&#xff0c;熬夜编码的时光。还有大数据&#xff0c;八爪鱼爬虫。 下面是我的手稿电商打…

算法学习——LeetCode力扣动态规划篇9

算法学习——LeetCode力扣动态规划篇9 1035. 不相交的线 1035. 不相交的线 - 力扣&#xff08;LeetCode&#xff09; 描述 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#x…

JavaSE day16笔记 - string

第十六天课堂笔记 学习任务 Comparable接口★★★★ 接口 : 功能的封装 > 一组操作规范 一个抽象方法 -> 某一个功能的封装多个抽象方法 -> 一组操作规范 接口与抽象类的区别 1本质不同 接口是功能的封装 , 具有什么功能 > 对象能干什么抽象类是事物本质的抽象 &…

2536. 子矩阵元素加 1

跳转题目 本题暴力可以做&#xff0c;猜到用差分&#xff0c;但是不熟&#xff0c;不知道二维差分怎么用&#xff0c;碰到用差分的题目太少了。 暴力算法&#xff1a; class Solution { public:vector<vector<int>> rangeAddQueries(int n, vector<vector<…

Docker 部署 FRP 内网穿透 实现端口映射

Frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议&#xff0c;且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 官网地址&#xff1a;https://github.com/fatedier/frp 准备工作…

数据结构算法刷题笔记——题型解法

数据结构算法刷题笔记——题型解法 一、常用容器1.1 vector1.1.1 vector基本操作1.1.1.0 头文件#include<vector>1.1.1.1 构造一个vector容器1.1.1.2 元素访问1.1.1.3 元素个数 .size()1.1.1.4 最大容量 .capacity()1.1.1.5 改变容器有效元素个数 .resize(n)1.1.1.6 改变…

STM32 | PWM脉冲宽度调制(第五天按键中断,控制电机正/反转、加速、减速、暂停与继续源码解析)

​ STM32 | PWM脉冲宽度调制(第五天)STM32 | PWM脉冲宽度调制(第五天呼吸灯源码解析)STM32 | PWM脉冲宽度调制(第五天电机速度控制源码解析)PWM 技术在以下其他机器学习领域和应用中也可以发挥作用: 自然语言处理 (NLP):调节文本生成模型(例如 GPT-3)的输出长度和多样…

NFT-前端开发(一)

使用 在我们想要保存项目的目录下打开终端运行npx create-react-app test2命令初始化&#xff0c;test2是我们的项目名字&#xff0c;可以自己去更改。 初始化完成后&#xff0c;我们目录下就会多出一个test2文件夹 &#xff0c;然后我们在vscode中打开该文件夹 然后我们打开j…

Java8之接口默认方法

Java8之接口默认方法 一、介绍二、代码1、接口2、实现类3、测试代码4、效果 一、介绍 在Java8中&#xff0c;允许为接口方法提供一个默认的实现。必须用default修饰符标记这样一个方法。默认方法也可以调用其他方法 二、代码 1、接口 public interface PersonService {void…

代码随想录算法训练营第二十五天| 回溯算法理论基础、LeetCode77.组合

一、216.组合总和III 题目链接/文章讲解/视频讲解&#xff1a; https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 状态&#xff1a;已解决 1.思路 做过77题&#xff08;上篇博客&#xff09;后&#xff0c;这道题也就不难了&#xff0c;无非是多…

python--sys模块,time模块

1&#xff1a;sys模块 time.struct_time 实现时间转换 >>> import sys >>> dir(sys) getallocatedblocks, getdefaultencoding, getfilesystemencodeerrors, getfilesystemencoding, getprofile, getrecursionlimit, getrefcount, getsize…

python中pow()函数的使用

在Python中&#xff0c;pow() 函数用于计算指定数字的幂。它的语法如下&#xff1a; pow(x, y) 这个函数返回 x 的 y 次方。相当于 x**y。 pow() 函数也可以接受一个可选的第三个参数&#xff0c;用于指定一个取模值&#xff0c;即计算结果与该模值的余数。其语法如下&#…

考研数学|《1800》+《660》精华搭配混合用(经验分享)

肯定不行&#xff0c;考研数学哪有这么容易的&#xff01; 先说说这两本习题册&#xff0c;李永乐老师推出的新版660题&#xff0c;相较于18年前的版本&#xff0c;难度略有降低&#xff0c;更加适合初学者。因此&#xff0c;对于处于基础阶段的学习者来说&#xff0c;新版660…

Docker Swarm安装部署应用

一、Docker Swarm核心概念 1、什么是Docker Swarm GitHub地址 Docker Swarm 是 Docker 官方推出的容器集群管理工具&#xff0c;基于 Go 语言实现。使用它可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机&#xff0c;快速打造一套容器云平台。 Docker Swarm 是生产…

C# winform校验文件版本差异及版本号

界面 代码 using System.Diagnostics;namespace VersionTool {public partial class Form1 : Form{List<string> fileNmaes new List<string>() { "PhotoMes.Base.dll", "PhotoMes.App.exe", "PhotoMes.Cameras.dll" };public F…

分治实现快速排序和归并排序

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 一.快速排序&#xff08;升序为例&#xff09; 思想&#xff1a;确定分界点x&#xff0c;将小于分界点的值放在分界点的左边&#xff0c;将大于分界定的值放在分界点的右边&#xff0c;再递归处理两边的左右区间。 步骤&am…

如何注册Claude3?解决Claude3无海外手机号接收验证码的问题以及如何订阅Claude Pro

原文链接&#xff1a;如何注册 Claude3&#xff1f;解决 Claude3 无海外手机号接收验证码的问题以及如何订阅 Claude Pro 前言 Claude3已经出来有一段时间了&#xff0c;大家有没有体验过呢&#xff1f;不过从目前来看&#xff0c;Anthropic公司总共推出了3个模型&#xff1…

使用 golang 以及 Gin 框架,将上传的图片在不保存至本地的情况下添加水印,并上传至阿里云 OSS

正如标题所述&#xff0c;使用golang对上传图片添加水印&#xff0c;以及将图片上传到阿里云OSS&#xff0c;网上一搜索&#xff0c;便有你想要的结果了&#xff0c;可是&#xff0c;他们却先将上传图片添加水印后保存在本地&#xff0c;而后再将添加了水印的图片上传到阿里云O…

当iPhone中的Wi-Fi变灰时别担心,可以尝试这些解决办法

这篇文章解释了当iPhone上的Wi-Fi变灰时,你应该检查并修复的所有事情。 确保飞行模式关闭 这听起来可能很傻,但在执行任何其他操作之前,请确保未打开飞机模式。此功能禁用Wi-Fi(和蜂窝网络),因为它旨在允许你在通常不允许传出无线通信的飞机上使用手机。 查看飞行模式…