MySQL入门指南:数据库操作的基础知识

news2024/11/25 13:23:18

当谈到关系型数据库管理系统(RDBMS)时,MySQL无疑是最常见和广泛使用的一个。它是一个强大的工具,用于存储、管理和检索数据。在这篇博客中,我们将介绍MySQL的基本知识,包括数据库的操作、数据表的操作以及数据的增删改查~~

目录

1. 数据库的操作

1.1 创建数据库

1.2 删除数据库

1.3 选择数据库

2. 数据表的操作

2.1 创建数据表

2.2 修改数据表

2.3 删除数据表

3. 数据的增删改查

3.1 插入数据

3.2 更新数据

3.3 删除数据

3.4 查询数据

4.查询数据的具体知识点 

1. 聚合函数

1.1 COUNT()

1.2 SUM()

1.3 AVG()

1.4 MAX()和MIN()

2. 连接

2.1 内连接(INNER JOIN)

2.2 左连接(LEFT JOIN)

3. 子查询

3.1 子查询作为过滤条件

3.2 子查询用于计算

4. 模糊查询

4.1 使用LIKE进行模糊查询

5. 排序数据

6. 过滤数据

6.1 使用BETWEEN过滤数据

6.2 使用IN过滤数据

6.3 使用LIMIT过滤数据


1. 数据库的操作

1.1 创建数据库

在MySQL中,创建一个新数据库非常简单。可以使用以下SQL语句:

CREATE DATABASE mydatabase charset utf8;

 平时常用的字符集:

1.gbk windows简体中文版,默认字符集,2个字节表示一个汉字

2.utf8 更通用的字符集,不仅仅能表示中文,通常是3个字节表示一个汉字

3.unicode 其实严格来说,这个算编码方式,不能算一个完全的字符集

1.2 删除数据库

如果需要删除一个数据库,可以使用以下SQL语句:

DROP DATABASE mydatabase;

请注意,这将永久删除数据库及其所有数据,因此要谨慎使用。

1.3 选择数据库

使用以下命令来选择要在其上执行操作的数据库:

USE mydatabase;

2. 数据表的操作

2.1 创建数据表

创建数据表时,您需要定义表的结构,包括列的名称、数据类型和其他约束。以下是一个简单的示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    age INT
);

float和double都是用于定义表格列(字段)数据类型的关键词 ,但是二者表示的精度都不够,为什么呢~~

其实是跟内存存储结构有关,这两个表示方式的好处是存储空间小,计算速度快,但是可能存在误差~

使用decimal,是使用了类似字符串的方式来保存,更精确储存,但是存储空间更大,计算速度更慢了~

2.2 修改数据表

您可以使用ALTER TABLE命令来修改数据表的结构。例如,添加新列:

ALTER TABLE users
ADD phone VARCHAR(20);

2.3 删除数据表

要删除一个数据表,可以使用以下SQL语句:

DROP TABLE users;

3. 数据的增删改查

3.1 插入数据

要向数据表中插入新的数据行,使用INSERT INTO语句:

INSERT INTO users (username, email, age)
VALUES ('john_doe', 'john@example.com', 30);

3.2 更新数据

使用UPDATE语句来修改现有的数据行:

UPDATE users
SET age = 31
WHERE username = 'john_doe';

3.3 删除数据

使用DELETE语句来删除数据行:

DELETE FROM users
WHERE username = 'john_doe';

3.4 查询数据

要从数据表中检索数据,使用SELECT语句:

SELECT * FROM users;

临时表显示一下就销毁了,和服务器那边的硬盘上的表没啥关系~~ 

 您还可以添加条件来过滤数据:

SELECT * FROM users
WHERE age > 25;

举个例子~

4.查询数据的具体知识点 

所以不能写where XXX=null这样~

可以写where XXX is null~

1. 聚合函数

聚合函数允许您对数据进行汇总和计算。以下是一些常见的聚合函数:

1.1 COUNT()

COUNT()函数用于计算行数或特定列的非空值数量。

SELECT COUNT(*) FROM users; -- 计算用户总数

1.2 SUM()

SUM()函数用于计算数值列的总和。

SELECT SUM(salary) FROM employees; -- 计算员工工资总和

1.3 AVG()

AVG()函数用于计算数值列的平均值。

SELECT AVG(age) FROM users; -- 计算用户年龄平均值

1.4 MAX()MIN()

MAX()MIN()函数分别用于找到数值列中的最大值和最小值。

SELECT MAX(score) FROM exam_results; -- 找到最高分
SELECT MIN(price) FROM products; -- 找到最低价格

2. 连接

连接操作允许您将多个表的数据合并在一起,以便一起查询。以下是一些常见的连接类型:

2.1 内连接(INNER JOIN)

内连接返回匹配的行,仅包括两个表中都存在的数据。

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

2.2 左连接(LEFT JOIN)

左连接返回左表中的所有行以及右表中与左表匹配的行。如果右表中没有匹配的行,将返回NULL。

比如存在一个只有名字没有成绩的记录和一个只有成绩没有名字的记录~

3. 子查询

子查询是在查询中嵌套的查询。它们可以用于过滤、计算和比较数据。

3.1 子查询作为过滤条件

SELECT product_name, product_price
FROM products
WHERE product_price > (SELECT AVG(product_price) FROM products);

3.2 子查询用于计算

SELECT department_name, (SELECT AVG(salary) FROM employees WHERE employees.department_id = departments.department_id) AS avg_salary
FROM departments;

4. 模糊查询

4.1 使用LIKE进行模糊查询

LIKE操作符用于在文本列中执行模糊查询。通配符 % 表示零个或多个字符,_ 表示一个字符。例如,要查找以 "李" 开头的用户名:

SELECT * FROM users
WHERE username LIKE '李%';

 要查找包含 "doe" 的用户名:

SELECT * FROM users
WHERE username LIKE '%doe%';

5. 排序数据

使用ORDER BY子句对查询结果进行排序。例如,按年龄升序排序:

SELECT * FROM users
ORDER BY age ASC;

按用户名降序排序:

SELECT * FROM users
ORDER BY username DESC;

6. 过滤数据

6.1 使用BETWEEN过滤数据

BETWEEN关键字用于选择在指定范围内的数据。例如,查找年龄在25到35之间的用户:

SELECT * FROM users
WHERE age BETWEEN 25 AND 35;

6.2 使用IN过滤数据

IN关键字用于匹配多个条件中的一个。例如,查找特定用户名的用户:

SELECT * FROM users
WHERE username IN ('john_doe', 'jane_smith');

6.3 使用LIMIT过滤数据

SELECT * FROM users
WHERE username IN ('john_doe', 'jane_smith')
limit 2;

举个例子~

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

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

相关文章

JavaScript策略模式

JavaScript策略模式 1 什么是策略模式2 实现一个基础的策略模式3 Javascript中策略模式4 使用策略模式实现缓动动画5 使用策略模式实现表单校验 1 什么是策略模式 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法&#…

webpack配置alias后eslint和ts无法识别

背景 我们在 webpack 配置 alias 后,发现项目中引入的时候,还是会报错,如下: 可以看到,有一个是 ts报错,还有一个是 eslint 报错。 解决 ts 报错 tsconfig.json {"compilerOptions": {...&q…

2023 Google 开发者大会,共创、赋能开发者

前言: 9月6日,2023 Google 开发者大会在上海拉开帷幕。在本次大会,Google 将技术灵感带到了中国。在为期两天的大会中,让我印象最为深刻的是,谷歌帮助中国开发者释放潜能,持续创新,落地创意灵感…

【C语言】每日一题(半月斩)——day3

目录 一,选择题 1.已知函数的原型是: int fun(char b[10], int *a); 2、请问下列表达式哪些会被编译器禁止【多选】( ) 3、以下程序的输出结果为( ) 4、下面代码段的输出是( )…

Chatbot到底提供了哪些便利?来看看“中文版Chatbase”

Chatbot的出现可以说是在极大的程度上改变了企业与客户互动的方式。Chatbot凭借其先进的功能和全天候可用性提供了一系列便捷的功能,为企业和客户提供便利和高效。随着自然语言处理和机器学习算法的进步,Chatbot已经发展到可以提供准确和个性化的响应&am…

【Seata】分布式事务问题和理论基础

目录 1.分布式事务问题 1.1本地事务 1.2分布式事务 2.理论基础 2.1CAP定理 2.1.1一致性 2.1.2可用性 2.1.3分区容错 2.1.4矛盾 2.2BASE理论 2.3解决分布式事务的思路 1.分布式事务问题 1.1本地事务 本地事务,也就是传统的单机事务。在传统数据库事务中…

软件包的管理

概念 在早期Linux系统中,要想在Linux系统中安装软件只能采取编译源码包的方式进行安装,所以早期安装软件是一件非常困难、耗费耐心的事情,而且大多数服务程序仅提供源代码,还需要运维人员编译后自行解决软件之间的依赖关系。所以…

【力扣每日一题】2023.9.18 打家劫舍Ⅲ

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 今天是打家劫舍3,明天估计就是打家劫舍4了。 今天的打家劫舍不太一样,改成二叉树了,不过规则没有变&…

苹果手机无法正常使用小程序和APP

小程序、APP 已使用了几年,突然大量反馈:苹果手机无法正常使用。但不是全部,只是部分手机。 因为同事苹果手机都能用,所以无法准确判断具体原因。 后来同事苹果手机也无法使用了,显示: 网上搜索结果&…

力扣刷题19-删除链表的倒数第N个节点

题目来源 题目描述: class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//为了删除的格式一样,引入虚拟头节点ListNode dummyNodenew ListNode(1);dummyNode.nexthead;ListNode slowdummyNode;ListNode fastdummyNode;for(int…

java项目之交通事故档案管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的交通事故档案管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框…

github desktop上传代码

这个很难受,因为遇到了很多问题。最终选择的方式如下: 1:在GitHub上搞一个新建的“repositories”. 这个repositories可以是已经存在的或随便在什么地方新建的。不要紧 2:在“github desktop”上把上面的“repositories”项目cl…

玩转安卓运行速度优化

原文链接 玩转安卓运行速度优化 早在许多年以前写过一篇安卓性能优化文章,时过境迁,很多事情都有了变化,所以再专门针对程序运行速度和渲染的优化,这两方面非常直接的影响应用程序的操作流畅度,也可以称作流畅度优化方…

vue Router路由

编程式导航 | Vue Router 看官方文档 vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括: 嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由 Vue.js 的过…

Golang Linux 安装与环境变量配置

下载 Go 二进制包 wget https://dl.google.com/go/go1.21.1.linux-amd64.tar.gz 解压文件并将其移至 /usr/local 目录 sudo tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz -C 选项解压文件到 /usr/local 目录,查看 /usr/local/go 目录的内容 将 Go 二进…

【openwrt学习笔记】miniupnpd学习笔记

目录 一、参考资料二、upnp基本概念三、miniupnpd3.1参数说明3.1.1 config upnp 的配置参数表3.1.2 config perm_rule 许可设置配置参数表 3.2 windows上使用miniupnpc工具3.3 关于开启upnp功能后无法添加端口 四、其它知识补充4.1 NAT4.1.1 NAT概念4.1.2 NAT的分类 4.2 NAT穿透…

华为云云耀云服务器L实例评测|伪分布式环境下部署hadoop2.10.1

文章目录 前言云耀云服务器L实例简介Hadoop简介 一、配置环境购买云耀云服务器L实例查看云耀云服务器L实例状态重置密码查看弹性公网IP地址 FinalShell连接服务器二、搭建Hadoop单机版本详细安装步骤如下:我们先开始配置java环境hadoop2.x接下来需要利用vim来操作co…

Java常用类之 Java比较器、System类、Math类、BigInteger与BigDecimal

Java常用类 文章目录 五、Java比较器5.1、Comparable 接口的使用5.1.1、自然排序:Comparable接口5.1.2、定制排序:Comparator接口 六、System类七、Math类八、BigInteger与BigDecimal 五、Java比较器 提出背景: Java中的对象,正常…

泰尔指数案例分析

泰尔指数是一种衡量‘不平均’的指数,比如用于衡量‘贫富差异’,也或者衡量大气污染的水平是否一致,二氧化碳排放水平差异情况等。泰尔指数的数学原理是‘熵’,‘熵’是一种衡量数据‘有序性’的指标,当‘熵’值越大时…

GEE:快速实现NDVI时间序列NDVI线性趋势和变化敏感性计算(斜率、截距)

作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,计算NDVI的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代码详解1.3 代码框架介绍二、完整代码…