SQL 入门:使用 MySQL 进行数据库操作
SQL 入门:使用 MySQL 进行数据库操作
目录
- 引言
- SQL 基础
- SQL 语言概述
- MySQL 简介
- 数据库设计基础
- 数据库与表的设计
- 常见数据类型
- MySQL 安装与配置
- 安装 MySQL
- 基本配置与连接
- 基本 SQL 语句
- 数据库的创建与删除
- 表的创建、修改与删除
- 数据插入、更新与删除
- 数据查询
- 基本查询语句
- 条件查询
- 排序与分页
- 聚合函数与分组查询
- 进阶 SQL 语法
- 连接操作
- 子查询
- 视图
- 数据库安全性
- 用户管理与权限控制
- 数据库备份与恢复
- 备份策略
- 恢复方法
- 性能优化
- 索引
- 查询优化
- 总结与建议
- 参考文献
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 平台:
- 下载 MySQL 安装程序。
- 运行安装程序并按照提示完成安装。
- 配置 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 入门:使用 MySQL 进行数据库操作 目录 引言SQL 基础 SQL 语言概述MySQL 简介 数据库设计基础 数据库与表的设计常见数据类型 MySQL 安装与配置 安装 MySQL基本配置与连接 基本 SQL 语句 数据库的创建与删除表的创建、修改与删除数据插入、更新与删除 数据查询…...

window安装ffmpeg播放本地摄像头视频
1、安装ffmpeg ffmpeg官方网站: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声明式开发:跨平台支持列表【透明度设置】 通用属性
透明度设置 设置组件的透明度。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版…...

【SQL学习进阶】从入门到高级应用(九)
文章目录 子查询什么是子查询where后面使用子查询from后面使用子查询select后面使用子查询exists、not existsin和exists区别 union&union alllimit 🌈你好呀!我是 山顶风景独好 💕欢迎来到我的博客,很高兴能够在这里和您见面…...
Web前端三大主流框架技术分享
在当今快速发展的互联网时代,Web前端技术作为连接用户与服务的桥梁,其重要性不言而喻。随着技术的不断进步,为了提升开发效率、优化用户体验,一系列强大的前端框架应运而生。其中,Angular、React和Vue.js作为当前最为主…...

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

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

从摇一摇到弹窗,AD无处不在?为了不再受打扰,推荐几款好用的屏蔽软件,让手机电脑更清爽
当我们沉浸在智能手机带来的便捷与乐趣中时,内置AD如同不速之客,时常打断我们的体验。 尤其是手机上那些“摇一摇”跳转,稍有不慎就会跳转到其他应用,令人不胜其烦。同样,电脑上的内置AD也如影随形,影响了我…...

HackTheBox-Machines--Nibbles
Nibbles 测试过程 1 信息收集 NMAP 80 端口 网站出了打印出“Hello world!”外,无其他可利用信息,但是查看网页源代码时,发现存在一个 /nibbleblog 文件夹 检查了 http://10.129.140.63/nibbleblog/ ,发现了 /index.p…...
东方博宜1703 - 小明买水果
问题描述 小明去超市买了若干斤水果,你能根据水果的单价,小明买的水果数量,编一个程序计算出总金额,并打印出清单。 输入 输入两个值, 第一个为商品的单价,是一个小数。 第二个为商品的数量,…...

mac电脑用谷歌浏览器对安卓手机H5页面进行inspect
1、mac上在谷歌浏览器上输入 chrome://inspect 并打开该页面。 2、连接安卓手机到Mac电脑:使用USB数据线将安卓手机连接到Mac电脑。 3、手机上打开要的h5页面 Webview下面选择要的页面,点击inspect,就能像谷歌浏览器页面打开下面的页面&#…...
动手学深度学习(Pytorch版)代码实践-深度学习基础-01基础函数的使用
01基础函数的使用 主要内容 张量操作:创建和操作张量,包括重塑、填充、逐元素操作等。数据处理:使用pandas加载和处理数据,包括处理缺失值和进行one-hot编码。线性代数:包括矩阵运算、求和、均值、点积和各种范数计算…...

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

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

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列: 相对顺序是跟源字符串/数组是一致的但是元素和元素之间,在源字符串/数组中可以是不连续的一般时间…...

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

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

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

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...