MySQL修炼手册1——初探MySQL:连接数据库并执行第一条SQL语句

写在开头

我们将深入学习MySQL的数据库连接和基本SQL语句,通过实际操作演示每个步骤,帮助读者更好地理解和掌握MySQL的基础知识。

1 数据库连接

1.1 连接到不同主机的数据库

连接远程数据库

mysql -h remote_host -u your_username -p
  • remote_host: 远程主机地址
  • your_username: 连接用户名
  • 输入密码完成连接

处理连接问题

在连接过程中可能遇到的问题和解决方法:

  • 连接超时: 检查远程主机的防火墙设置,确保端口开放。
  • 拒绝连接: 检查用户名和密码是否正确,以及是否被授权访问。

1.2 使用不同用户身份连接

连接到数据库

mysql -u your_username -p
  • your_username: 连接用户名
  • 输入密码完成连接

用户权限管理

-- 创建新用户
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';-- 赋予用户权限
GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';-- 刷新权限
FLUSH PRIVILEGES;

2 基本SQL语句

在这一部分,我们将创建一个简单的测试表,以水果为例,并详细展开基本SQL语句的使用,包括SELECT、INSERT、UPDATE和DELETE。

2.1 创建测试表

首先,我们创建一个名为 fruits 的测试表,该表包含水果的名称(name)、价格(price)和产地(origin)信息。

CREATE TABLE fruits (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),price DECIMAL(8, 2),origin VARCHAR(100)
);

此表定义了四个字段:id(主键,自增),name(水果名称),price(价格),origin(产地)。

2.2 SELECT语句

2.2.1 查询所有列

SELECT * FROM fruits;

这将返回 fruits 表中所有水果的信息。

2.2.2 查询特定列

SELECT name, price FROM fruits;

这将返回 fruits 表中所有水果的名称和价格信息。

2.2.3 使用别名

SELECT name AS fruit_name, price AS fruit_price FROM fruits;

这将返回 fruits 表中所有水果的名称和价格信息,并使用别名进行重命名。

2.2.4 使用DISTINCT关键字

SELECT DISTINCT origin FROM fruits;

这将返回 fruits 表中所有不重复的产地信息。

2.3 INSERT语句

2.3.1 插入单行数据

INSERT INTO fruits (name, price, origin) VALUES ('Apple', 2.5, 'USA');

这将在 fruits 表中插入一行新的水果数据。

2.3.2 插入多行数据

INSERT INTO fruits (name, price, origin) VALUES 
('Banana', 1.8, 'Brazil'),
('Orange', 3.0, 'Spain'),
('Grapes', 4.5, 'Italy');

这将在 fruits 表中插入三行新的水果数据。

2.4 UPDATE语句

2.4.1 条件更新数据

UPDATE fruits SET price = 2.8 WHERE name = 'Banana';

这将更新 fruits 表中水果名称为 ‘Banana’ 的价格为 2.8。

2.4.2 批量更新数据

UPDATE fruits SET price = price * 1.1;

这将更新 fruits 表中所有水果的价格增加 10%。

2.5 DELETE语句

2.5.1 删除特定数据

DELETE FROM fruits WHERE name = 'Orange';

这将从 fruits 表中删除名称为 ‘Orange’ 的水果数据。

2.6 综合操作

现在,让我们进行一些综合操作,结合以上的SQL语句,以更全面地展示它们的用法。

2.6.1 查询特定条件下的数据

SELECT name, price FROM fruits WHERE price > 3.0;

这将返回 fruits 表中价格大于 3.0 的水果的名称和价格信息。

2.6.2 插入并查询新数据

INSERT INTO fruits (name, price, origin) VALUES ('Mango', 5.2, 'India');
SELECT * FROM fruits WHERE name = 'Mango';

这将插入一行新的水果数据,并查询该水果的所有信息。

2.6.3 更新并查询数据

UPDATE fruits SET origin = 'Mexico' WHERE name = 'Grapes';
SELECT * FROM fruits WHERE name = 'Grapes';

这将更新名称为 ‘Grapes’ 的水果的产地,并查询更新后的水果信息。

2.6.4 删除并查询数据

DELETE FROM fruits WHERE price < 2.0;
SELECT * FROM fruits;

这将删除价格低于 2.0 的水果数据,并查询剩余的所有水果信息。

3 SQL语句练习

在这一部分,我们将通过对一个关于水果的测试表进行实际操作,帮助读者练习基本的SQL语句使用。

3.1 练习基本SQL语句的使用

练习1:查询指定列

首先,我们创建一个名为 fruits 的测试表:

-- 创建测试表
CREATE TABLE fruits (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,color VARCHAR(20),taste VARCHAR(20)
);-- 插入测试数据
INSERT INTO fruits (name, color, taste) VALUES
('Apple', 'Red', 'Sweet'),
('Banana', 'Yellow', 'Sweet'),
('Orange', 'Orange', 'Citrus'),
('Grapes', 'Purple', 'Sweet'),
('Kiwi', 'Brown', 'Tart');

现在,我们来查询水果表的指定列:

-- 查询水果名称和颜色
SELECT name, color FROM fruits;

练习2:插入新数据

接下来,我们插入一条新的水果数据:

-- 插入新的水果数据
INSERT INTO fruits (name, color, taste) VALUES ('Strawberry', 'Red', 'Sweet');

练习3:更新数据

我们将尝试更新水果表中某个水果的口感:

-- 更新水果口感
UPDATE fruits SET taste = 'Sweet and Tart' WHERE name = 'Kiwi';

练习4:删除数据

最后,我们删除口感为甜的水果:

-- 删除口感为甜的水果
DELETE FROM fruits WHERE taste = 'Sweet';

3.2 理解SQL语句执行结果

数据集的结构

执行 SELECT * FROM fruits; 后,观察数据集的结构,了解每个字段的含义和数据类型。

-- 查询所有水果数据
SELECT * FROM fruits;

空值的处理

执行 SELECT * FROM fruits WHERE color IS NULL;,观察对空值的处理结果,检查是否存在颜色为空的水果。

-- 查询颜色为空的水果
SELECT * FROM fruits WHERE color IS NULL;

3.3 进阶操作

练习5:条件查询

我们尝试进行条件查询,找出颜色为红色且口感甜的水果:

-- 条件查询:颜色为红色且口感甜的水果
SELECT * FROM fruits WHERE color = 'Red' AND taste = 'Sweet';

练习6:排序

让我们按照口感的字母顺序对水果进行排序:

-- 按照口感字母顺序对水果进行排序
SELECT * FROM fruits ORDER BY taste;

练习7:分组和聚合

我们对口感相同的水果进行分组,并计算每组中水果的数量:

-- 分组和聚合:计算每种口感的水果数量
SELECT taste, COUNT(*) as num_of_fruits FROM fruits GROUP BY taste;

练习8:连接表

如果我们有另外一个描述水果产地的表 origin,我们可以通过连接这两个表来获取更多信息:

-- 创建产地表
CREATE TABLE origin (fruit_id INT,country VARCHAR(50),FOREIGN KEY (fruit_id) REFERENCES fruits(id)
);-- 插入产地数据
INSERT INTO origin (fruit_id, country) VALUES
(1, 'USA'),
(2, 'Ecuador'),
(3, 'USA'),
(4, 'Italy'),
(5, 'New Zealand');

现在,我们尝试连接这两个表,获取水果和产地的信息:

-- 连接表:获取水果和产地的信息
SELECT fruits.name, fruits.color, fruits.taste, origin.country
FROM fruits
JOIN origin ON fruits.id = origin.fruit_id;

3.4 稍微复杂的操作

聚合查询结果

执行 SELECT AVG(id) as average_id FROM fruits;,观察对聚合查询结果的处理。

-- 聚合查询:计算id的平均值
SELECT AVG(id) as average_id FROM fruits;

子查询

执行 SELECT * FROM fruits WHERE id IN (SELECT fruit_id FROM origin WHERE country = 'USA');,观察对子查询的处理。

-- 子查询:查询产自美国的水果
SELECT * FROM fruits WHERE id IN (SELECT fruit_id FROM origin WHERE country = 'USA');

写在最后

希望通过本文的练习,读者将更全面地了解SQL语句的应用,包括条件查询、排序、分组和聚合、连接表等操作。实际操作将有助于加深对SQL语句的理解和记忆,为日后更复杂的数据库查询和分析操作打下坚实基础。

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

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

相关文章

【野火i.MX6ULL开发板】在MobaXterm平台利用Type-C线串口连接开发板

0、前言 参考文献&#xff1a; http://t.csdnimg.cn/9iRTm http://t.csdnimg.cn/Z0n60 问题&#xff1a;一直识别不出com口&#xff0c; 拟解决思路&#xff1a; 百度网盘重新下载Debian镜像&#xff0c;烧入full版镜像&#xff0c;随便换一下USB插口&#xff08;电脑主机上…

编程羔手(新手):什么时候用常量,什么时候用枚举类?

静态常量和枚举都是在编程中表示常量的方式&#xff0c;但它们在使用场景和目的上有一些不同。 静态常量&#xff1a; 使用静态常量通常是为了表示一些简单的常量值&#xff0c;例如字符串、数字等。适用于常量值在编译时已知&#xff0c;不需要动态生成的情况。通过静态常量可…

一个大场景下无线通信仿真架构思路(对比omnet与训练靶场)

2020年分析过omnet的源码&#xff0c;读了整整一年&#xff0c;读完之后收获不小&#xff0c;但是也遗憾的发现这个东西只适合实验室做研究的人用于协议的研发与测试&#xff0c;并不适合大场景&#xff08;军事游戏等&#xff09;的应用&#xff0c;因为其固有架构更侧重于每个…

PostGIS学习教程二十:3-D

PostGIS学习教程二十&#xff1a;3-D 注意&#xff1a;本文介绍许多PostGIS2.0及更高版本才支持的功能。 文章目录 PostGIS学习教程二十&#xff1a;3-D一、3-D几何图形二、3-D函数三、N-D索引 一、3-D几何图形 到目前为止&#xff0c;我们一直在处理2-D几何图形&#xff08;…

remote pdb使用记录

以前代码debug一直用原始的pdb&#xff0c;方便好用。最近接触的代码框架使用了ddp加速训练&#xff0c;导致pdb不好用了。 具体来说&#xff0c;在ddp训练时&#xff0c;用单卡训练&#xff0c;跟非ddp模式是一致的&#xff0c;python -m pdb xxx.py的模式也能正常用pdb。但是…

强化学习的数学原理学习笔记 - Actor-Critic

文章目录 概览&#xff1a;RL方法分类Actor-CriticBasic actor-critic / QAC&#x1f7e6;A2C (Advantage actor-critic)Off-policy AC&#x1f7e1;重要性采样&#xff08;Importance Sampling&#xff09;Off-policy PGOff-policy AC &#x1f7e6;DPG (Deterministic AC) 本…

C#,入门教程(13)——字符(char)及字符串(string)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(12)——数组及数组使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123918227 字符串的使用与操作是必需掌握得滚瓜烂熟的编程技能之一&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; C#语言实…

python接口自动化测试框架介绍

之前在项目中搞了一套jmeter jenkins git ant接口自动化测试框架&#xff0c;在项目中运行了大半年了&#xff0c;效果还不错&#xff0c; 最近搞了一套requests unittest ddt pymysql BeautifulReport的接口自动化测试框架&#xff0c; 测试用例在yaml文件中&#xff0c…

Java面向对象综合练习(拼图小游戏),用java图形化界面实现拼图小游戏

1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面&#xff0c;写一个项目&#xff0c;知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello&#xff0c;各位同学大家好。今天&#xff0c;我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…

MySQL语法及IDEA使用MySQL大全

在项目中我们时常需要写SQL语句&#xff0c;或简单的使用注解直接开发&#xff0c;或使用XML进行动态SQL之类的相对困难的SQL&#xff0c;并在IDEA中操控我们的SQL&#xff0c;但网上大都图方便或者觉得太简单了&#xff0c;完全没一个涵盖两个方面的讲解。 单表&#xff1a; …

并发程序设计--D11D12进程间通信

概念&#xff1a;就是进程和进程之间交换信息。 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存映射(mmap) 套接字&#xff08;socket&#xff09; 过时的IPC通信方式 System…

PCL 点云八叉树体素搜索

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前没有深入了解PCL的八叉树结构,趁着有时间了解了一下其特性,其中有一些非常有趣的操作。比如这里的体素搜索,我们有时候需要将点云进行体素化,这种做法有助于进行局部分析,自然而然就必须要快速获取某个点所…

如何在iOS手机上查看应用日志

引言 在开发iOS应用过程中&#xff0c;查看应用日志是非常重要的一项工作。通过查看日志&#xff0c;我们可以了解应用程序运行时的状态和错误信息&#xff0c;帮助我们进行调试和排查问题。本文将介绍两种方法来查看iOS手机上的应用日志&#xff0c;并提供相应的操作步骤。 …

文件批量归类,文件归类不再难

在快节奏的现代社会&#xff0c;时间就是金钱。使用【文件批量改名高手】软件&#xff0c;你可以在短时间内完成大量文件的归类工作&#xff0c;大大提高了工作效率。从此告别冗长、繁琐的文件整理过程&#xff0c;让你告别凌乱&#xff0c;让文件归类变得如此简单。 所需工具…

【算法分析与设计】数字连续的最长序列

题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a…

阿里巴巴秋招前端笔试题

单选题 下面的 JSX 代码中&#xff0c;哪一个无法达到预期的效果&#xff1f; A.<h2>Hello World</h2> B.<input type”checkbox”/> C.<div class”msg-box”>{msg}</div> D.<label htmlFor”name”>Leo</label> E.div styl…

ISPM 十四五规划

指导思想 坚定不移贯彻创新、协调、绿色、开放、共享的新发展理念&#xff0c;坚持稳中求进工作总基调 2035展望 展望2035年&#xff0c;基本实现新型工业化、信息化、城镇化、农业现代化&#xff0c;建成现代化经济体系。 重大科技基础设施 深入实施制造强国战略 相关关键…

近似点梯度法

最优化笔记——Proximal Gradient Method 最优化笔记&#xff0c;主要参考资料为《最优化&#xff1a;建模、算法与理论》 文章目录 最优化笔记——Proximal Gradient Method一、邻近算子&#xff08;1&#xff09;定义 二、近似点梯度法&#xff08;1&#xff09;迭代格式&…

WEB 3D技术 three.js 包围盒

本文 我们来说 包围盒 如下图所示 就是一个方框 框住我们整个物体 它的作用 比较明显的就是 当用户点击某个物体 我们用包围盒套住 用户能够很直观的知道自己当前选中的物体是哪一个 还有就是 比如 我们物体做的比较复杂 是非常多顶点构建的 那么 我们判断它有没有和其他物体…

java连接池、C3P0、Druid德鲁伊连接池技术

java线程池 连接池C3P0Druid 连接池 概念&#xff1a;其实就是一个容器(集合)&#xff0c;存放数据库连接的容器。当系统初始化好后&#xff0c;容器被创建&#xff0c;容器中会申请一些连接对象&#xff0c;当用户来访问数据库时&#xff0c;从容器中获取连接对象&#xff0c…