当前位置: 首页 > news >正文

SQL 入门:使用 MySQL 进行数据库操作

SQL 入门:使用 MySQL 进行数据库操作

目录
  1. 引言
  2. SQL 基础
    • SQL 语言概述
    • MySQL 简介
  3. 数据库设计基础
    • 数据库与表的设计
    • 常见数据类型
  4. MySQL 安装与配置
    • 安装 MySQL
    • 基本配置与连接
  5. 基本 SQL 语句
    • 数据库的创建与删除
    • 表的创建、修改与删除
    • 数据插入、更新与删除
  6. 数据查询
    • 基本查询语句
    • 条件查询
    • 排序与分页
    • 聚合函数与分组查询
  7. 进阶 SQL 语法
    • 连接操作
    • 子查询
    • 视图
  8. 数据库安全性
    • 用户管理与权限控制
  9. 数据库备份与恢复
    • 备份策略
    • 恢复方法
  10. 性能优化
    • 索引
    • 查询优化
  11. 总结与建议
  12. 参考文献

1. 引言

Structured Query Language (SQL) 是一种用于管理关系型数据库的编程语言。它被广泛应用于各种数据库系统中,包括 MySQL。本文旨在为初学者提供 SQL 和 MySQL 的基础知识,并指导如何进行基本数据库操作。

2. SQL 基础

SQL 语言概述

SQL 是一种用于访问和操作数据库的标准化语言,主要分为以下几类命令:

  • 数据定义语言 (DDL):如 CREATE、ALTER、DROP 等,用于定义和管理数据库结构。
  • 数据操作语言 (DML):如 INSERT、UPDATE、DELETE 等,用于数据的操作。
  • 数据查询语言 (DQL):主要是 SELECT,用于查询数据。
  • 数据控制语言 (DCL):如 GRANT、REVOKE,用于控制访问权限。
MySQL 简介

MySQL 是一个流行的开源关系型数据库管理系统 (RDBMS),由于其高性能、稳定性和易用性,被广泛用于 Web 应用开发。MySQL 支持多种存储引擎,如 InnoDB 和 MyISAM。

3. 数据库设计基础

数据库与表的设计

数据库设计是应用开发的关键步骤之一,包括以下几个方面:

  • 需求分析:明确系统需要存储和管理的数据类型和关系。
  • 逻辑设计:确定数据库的表结构和关系。
  • 物理设计:选择适当的存储引擎和索引策略以优化性能。
常见数据类型

MySQL 提供了多种数据类型以适应不同的数据需求:

  • 数值类型:如 INT、FLOAT、DOUBLE 等。
  • 字符串类型:如 CHAR、VARCHAR、TEXT 等。
  • 日期和时间类型:如 DATE、DATETIME、TIMESTAMP 等。
  • 二进制数据类型:如 BLOB、BINARY 等。

4. MySQL 安装与配置

安装 MySQL

在不同平台上安装 MySQL 的步骤略有不同。以下是常见的安装方法:

Windows 平台

  1. 下载 MySQL 安装程序。
  2. 运行安装程序并按照提示完成安装。
  3. 配置 MySQL 服务并设置 root 密码。

Linux 平台: 使用包管理器安装,例如在 Ubuntu 上:

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
基本配置与连接

安装完成后,可以使用以下命令启动 MySQL 服务:

sudo service mysql start

使用 mysql 命令行工具连接到 MySQL:

mysql -u root -p

5. 基本 SQL 语句

数据库的创建与删除

创建数据库:

CREATE DATABASE mydatabase;

删除数据库:

DROP DATABASE mydatabase;
表的创建、修改与删除

创建表:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

修改表:

ALTER TABLE users ADD COLUMN phone VARCHAR(15);

删除表:

DROP TABLE users;
数据插入、更新与删除

插入数据:

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

更新数据:

UPDATE users SET email = 'john_new@example.com' WHERE username = 'john_doe';

删除数据:

DELETE FROM users WHERE username = 'john_doe';

6. 数据查询

基本查询语句

查询所有数据:

SELECT * FROM users;

查询指定列:

SELECT username, email FROM users;
条件查询

使用 WHERE 子句进行条件查询:

SELECT * FROM users WHERE email LIKE '%@example.com';
排序与分页

按特定列排序:

SELECT * FROM users ORDER BY created_at DESC;

分页查询:

SELECT * FROM users LIMIT 10 OFFSET 20;
聚合函数与分组查询

使用聚合函数进行数据统计:

SELECT COUNT(*), AVG(age) FROM users;

按某列分组:

SELECT email, COUNT(*) FROM users GROUP BY email;

7. 进阶 SQL 语法

连接操作

内连接 (INNER JOIN):

SELECT users.username, orders.order_date
FROM users
INNER JOIN orders ON users.id = orders.user_id;

左连接 (LEFT JOIN):

SELECT users.username, orders.order_date
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
子查询

使用子查询进行复杂查询:

SELECT username FROM users WHERE id IN (SELECT user_id FROM orders WHERE order_date > '2023-01-01');
视图

创建视图:

CREATE VIEW user_orders AS
SELECT users.username, orders.order_date
FROM users
JOIN orders ON users.id = orders.user_id;

使用视图查询:

SELECT * FROM user_orders;

8. 数据库安全性

用户管理与权限控制

创建新用户并授予权限:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

撤销权限:

REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'newuser'@'localhost';

9. 数据库备份与恢复

备份策略

使用 mysqldump 进行备份:

mysqldump -u root -p mydatabase > mydatabase_backup.sql
恢复方法

从备份文件恢复数据库:

mysql -u root -p mydatabase < mydatabase_backup.sql

10. 性能优化

索引

创建索引以提高查询性能:

CREATE INDEX idx_username ON users (username);
查询优化

使用 EXPLAIN 分析查询:

EXPLAIN SELECT * FROM users WHERE username = 'john_doe';

11. 总结与建议

学习 SQL 和 MySQL 是一个持续的过程。掌握基础知识后,建议深入学习高级主题,如存储过程、触发器和事务管理。同时,实践是提高技能的最佳途径,通过实际项目的开发来巩固所学知识。

相关文章:

SQL 入门:使用 MySQL 进行数据库操作

SQL 入门&#xff1a;使用 MySQL 进行数据库操作 目录 引言SQL 基础 SQL 语言概述MySQL 简介 数据库设计基础 数据库与表的设计常见数据类型 MySQL 安装与配置 安装 MySQL基本配置与连接 基本 SQL 语句 数据库的创建与删除表的创建、修改与删除数据插入、更新与删除 数据查询…...

window安装ffmpeg播放本地摄像头视频

1、安装ffmpeg ffmpeg官方网站&#xff1a;FFmpeg 下载后解压文件夹名为ffmpeg 2、设置环境变量 目录 1、安装ffmpeg 设置环境变量 以F:\software\after\ffmpeg\bin为例 在命令行中输入ffmpeg出现下方代表安装成功 3、通过ffmpeg播放本地电脑摄像头 鼠标右击开始按钮&…...

【嵌入式DIY实例】-OLED显示网络时钟

OLED显示网络时钟 文章目录 OLED显示网络时钟1、硬件准备与接线2、代码实现在上一个ESP8266 NodeMCU文章中,我们用DS3231 RTC芯片和SSD1306 OLED制作了一个简单的实时时钟,时间和日期显示在SSD1306屏幕上,并且可以通过两个按钮进行设置。 在本中,我们将使用ESP 8266 NodeMC…...

【线程相关知识】

今日内容概要 开启线程的两种方式TCP服务端实现并发效果线程对象的join方法线程间数据共享线程对象属性及其他方法守护线程线程互斥锁GIL全局解释器锁多进程与多线程的实际应用场景 今日内容详细 开启线程的两种方式 # import time # from multiprocessing import Process #…...

鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性

透明度设置 设置组件的透明度。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…...

【SQL学习进阶】从入门到高级应用(九)

文章目录 子查询什么是子查询where后面使用子查询from后面使用子查询select后面使用子查询exists、not existsin和exists区别 union&union alllimit &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面…...

Web前端三大主流框架技术分享

在当今快速发展的互联网时代&#xff0c;Web前端技术作为连接用户与服务的桥梁&#xff0c;其重要性不言而喻。随着技术的不断进步&#xff0c;为了提升开发效率、优化用户体验&#xff0c;一系列强大的前端框架应运而生。其中&#xff0c;Angular、React和Vue.js作为当前最为主…...

dockers安装mysql

1.dockerhub上搜索自己需要安装得镜像版本 dockerhub网址&#xff1a;https://hub-stage.docker.com docker pull mysql:5.7 #下载自己需要得版本2.启动容器实例&#xff0c;并且挂载容器数据卷 docker run -d -p 3306:3306 --privilegedtrue \ -v /home/mysql/log:/var/log/…...

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵 问题解读 给定一个 n x n 的二进制矩阵&#xff0c;每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中&#xff0c;包含特定数量 1 的情况。例如&#xff0c;我们希望找到所有边长为 k 的子矩阵中包含 k…...

从摇一摇到弹窗,AD无处不在?为了不再受打扰,推荐几款好用的屏蔽软件,让手机电脑更清爽

当我们沉浸在智能手机带来的便捷与乐趣中时&#xff0c;内置AD如同不速之客&#xff0c;时常打断我们的体验。 尤其是手机上那些“摇一摇”跳转&#xff0c;稍有不慎就会跳转到其他应用&#xff0c;令人不胜其烦。同样&#xff0c;电脑上的内置AD也如影随形&#xff0c;影响了我…...

HackTheBox-Machines--Nibbles

Nibbles 测试过程 1 信息收集 NMAP 80 端口 网站出了打印出“Hello world&#xff01;”外&#xff0c;无其他可利用信息&#xff0c;但是查看网页源代码时&#xff0c;发现存在一个 /nibbleblog 文件夹 检查了 http://10.129.140.63/nibbleblog/ &#xff0c;发现了 /index.p…...

东方博宜1703 - 小明买水果

问题描述 小明去超市买了若干斤水果&#xff0c;你能根据水果的单价&#xff0c;小明买的水果数量&#xff0c;编一个程序计算出总金额&#xff0c;并打印出清单。 输入 输入两个值&#xff0c; 第一个为商品的单价&#xff0c;是一个小数。 第二个为商品的数量&#xff0c;…...

mac电脑用谷歌浏览器对安卓手机H5页面进行inspect

1、mac上在谷歌浏览器上输入 chrome://inspect 并打开该页面。 2、连接安卓手机到Mac电脑&#xff1a;使用USB数据线将安卓手机连接到Mac电脑。 3、手机上打开要的h5页面 Webview下面选择要的页面&#xff0c;点击inspect&#xff0c;就能像谷歌浏览器页面打开下面的页面&#…...

动手学深度学习(Pytorch版)代码实践-深度学习基础-01基础函数的使用

01基础函数的使用 主要内容 张量操作&#xff1a;创建和操作张量&#xff0c;包括重塑、填充、逐元素操作等。数据处理&#xff1a;使用pandas加载和处理数据&#xff0c;包括处理缺失值和进行one-hot编码。线性代数&#xff1a;包括矩阵运算、求和、均值、点积和各种范数计算…...

vm-bhyve:bhyve虚拟机的管理系统@FreeBSD

先说情况&#xff0c;当前创建虚拟机后网络没有调通....不明白是最近自己点背&#xff0c;还是确实有难度... 缘起&#xff1a; 前段时间学习bhyve虚拟机&#xff0c;发现bvm这个虚拟机管理系统&#xff0c;但是实践下来发现网络方面好像有问题&#xff0c;至少我花了两天时间…...

【Java】刚刚!突然!紧急通知!垃圾回收!

【Java】刚刚&#xff01;突然&#xff01;紧急通知&#xff01;垃圾回收&#xff01; 文章目录 【Java】刚刚&#xff01;突然&#xff01;紧急通知&#xff01;垃圾回收&#xff01;从C语言的内存管理引入&#xff1a;手动回收Java的垃圾回收机制引用计数器循环引用问题 可达…...

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列&#xff1a; 相对顺序是跟源字符串/数组是一致的但是元素和元素之间&#xff0c;在源字符串/数组中可以是不连续的一般时间…...

【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)

2024年心理学与现代化教育、媒体国际会议 2024 International Conference on Psychology and Modern Education and Media 【1】会议简介 2024年心理学与现代化教育、媒体国际会议即将召开&#xff0c;这是一场汇聚全球心理学、教育及媒体领域精英的学术盛宴。 本次会议将深入探…...

深入了解diffusion model

diffusion model是如何运作的 会输入当时noise的严重程度&#xff0c;根据我们的输入来确定在第几个step&#xff0c;并做出不同的回应。 Denoise模组内部实际做的事情 产生一张图片和产生noise难度是不一样的&#xff0c;若denoise 模块产生一只带噪声的猫说明这个模块已经会…...

TransmittableThreadLocal原理

1、原理 TransmittableThreadLocal&#xff08;简称TTL&#xff09;是阿里巴巴开源的一个Java库&#xff0c;用于解决线程池中线程本地变量传递的问题。其底层原理主要是基于Java的ThreadLocal机制并对其进行扩展&#xff0c;以支持在父子线程间以及线程池中任务切换时&#x…...

Packet Tracer实战:交换机基础配置与常见问题排查

1. Packet Tracer与交换机配置入门 第一次接触网络设备配置的朋友可能会觉得交换机是个神秘的黑盒子。其实用Cisco Packet Tracer这个仿真工具&#xff0c;你完全可以在自己的电脑上搭建一个虚拟实验室。我刚开始学习时也是从这个工具入手的&#xff0c;它比真机操作更友好——…...

从零到一:基于LLaMA-Factory与Ollama的本地大模型定制化实战

1. 为什么需要本地定制化大模型&#xff1f; 最近两年&#xff0c;大语言模型的发展速度简直让人瞠目结舌。从最初的GPT-3到现在的Llama 3&#xff0c;模型能力越来越强&#xff0c;但随之而来的问题是&#xff1a;这些通用大模型真的能满足我们每个人的特定需求吗&#xff1f;…...

Qwen2.5-72B-GPTQ-Int4开源镜像:Chainlit前端定制化开发入门指南

Qwen2.5-72B-GPTQ-Int4开源镜像&#xff1a;Chainlit前端定制化开发入门指南 想快速搭建一个功能强大、界面美观的AI对话应用吗&#xff1f;今天&#xff0c;我们就来聊聊如何基于Qwen2.5-72B-GPTQ-Int4这个顶级开源大模型&#xff0c;以及Chainlit这个轻量级前端框架&#xf…...

毕业设计实战:基于SSM的学生宿舍设备报修管理系统设计与实现全攻略

毕业设计实战&#xff1a;基于SSM的学生宿舍设备报修管理系统设计与实现全攻略 在开发“学生宿舍设备报修管理系统”这套毕设时&#xff0c;我曾因“故障上报与维修派单流程脱节”踩过一个关键坑。初期设计时&#xff0c;我将“学生报修”和“维修人员接单”视为两个独立的模块…...

PyTorch 2.5镜像体验:预装全套工具,让AI项目开发效率翻倍

PyTorch 2.5镜像体验&#xff1a;预装全套工具&#xff0c;让AI项目开发效率翻倍 1. 为什么选择预装环境的PyTorch镜像&#xff1f; 深度学习项目开发中&#xff0c;最令人头疼的往往不是算法设计或模型调优&#xff0c;而是环境配置这个看似简单却暗藏玄机的工作。想象一下这…...

HFSS19 实战解析:SMA接头馈电的微带分支滤波器仿真

1. SMA接头与微带分支滤波器设计基础 作为一名射频工程师&#xff0c;设计紧凑型滤波器是日常工作的重要部分。这次我们要用HFSS19仿真一个SMA接头馈电的微带分支带通滤波器。先说说为什么选择这个组合&#xff1a;SMA接头是射频电路中最常见的连接器之一&#xff0c;工作频率可…...

3步终结C盘爆红:WindowsCleaner革新性磁盘清理工具高效释放空间

3步终结C盘爆红&#xff1a;WindowsCleaner革新性磁盘清理工具高效释放空间 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 问题剖析&#xff1a;你是否正遭遇这些…...

Z-Image Turbo与Vue3前端框架集成实战

Z-Image Turbo与Vue3前端框架集成实战 本文详细介绍了如何在Vue3项目中集成Z-Image Turbo图像生成API&#xff0c;通过WebSocket实现实时图像生成功能&#xff0c;并提供完整的组件封装方案。 1. 引言 前端开发者经常面临一个挑战&#xff1a;如何在Web应用中集成强大的AI图像…...

Fast-F1数据洞察:赛车数据分析实战的非传统路径

Fast-F1数据洞察&#xff1a;赛车数据分析实战的非传统路径 【免费下载链接】Fast-F1 FastF1 is a python package for accessing and analyzing Formula 1 results, schedules, timing data and telemetry 项目地址: https://gitcode.com/GitHub_Trending/fa/Fast-F1 你…...

SSCOM串口助手5个隐藏技巧:多窗口同步调试效率翻倍(附配置截图)

SSCOM串口助手5个隐藏技巧&#xff1a;多窗口同步调试效率翻倍&#xff08;附配置截图&#xff09; 在嵌入式开发和硬件调试领域&#xff0c;串口通信工具的效率直接影响着工程师的工作节奏。SSCOM作为一款广受欢迎的串口调试助手&#xff0c;其简洁界面背后隐藏着许多能显著提…...