目录

一、MySQL安装配置

1、下载mysql

2、下载mysql-shell

二、MySQL基本概念

1. 数据库(Database)

2. 表(Table)

3. 数据类型(Data Type)

4. 主键(Primary Key)

5. 索引(Index)

6. 存储引擎(Storage Engine)

三、Mysql基础语句

1、创建、删除、查看 数据库

2、在数据库中创建表

3、对表内数据的修改,以列为例,修改数据值,数据名,增加数据项

4、删除表中数据项语句

5、删除整个表

6、表中数据的增删改查

7、数据库的导入导出

(1)导出数据库(备份)

基本语法:

常用参数说明:

(2)导入数据库(恢复)

前提条件:

基本语法:

注意事项:

8、常用语句

(1)常用

​编辑(2)UNION、INTERSECT 和 EXCEPT

① UNION(并集)

② INTERSECT(交集)

③EXCEPT(差集)

9、子查询

10、表关联

(1)内连接(INNER JOIN)

(2)左连接(LEFT JOIN / LEFT OUTER JOIN)

(3)右连接(RIGHT JOIN / RIGHT OUTER JOIN)

11、表索引

12、视图


一、MySQL安装配置

1、下载mysql

官方下载地址: MySQL :: MySQL Downloads

windows版本下载点击这里。下载好之后安装,一路next,安装完成。

2、下载mysql-shell

可以直接在vscode里下载,也可以使用workbench

二、MySQL基本概念

1. 数据库(Database)

数据库是存储数据的仓库,以结构化的方式组织和管理数据。MySQL 中可以创建多个数据库,每个数据库独立存储不同应用的数据(如电商数据库、博客数据库)。

2. 表(Table)

表是数据库中存储数据的基本单位,类似 Excel 表格,由行和列组成:

  • 列(Column):也称字段,定义数据的类型(如姓名、年龄、邮箱)。
  • 行(Row):也称记录,是具体的数据条目(如一条用户信息)。

3. 数据类型(Data Type)

定义表中列的取值类型,常见类型包括:

  • 数值型INT(整数)、FLOAT(浮点数)、DECIMAL(高精度小数,如金额)。
  • 字符串型VARCHAR(n)(可变长度字符串,如姓名)、CHAR(n)(固定长度字符串)、TEXT(长文本)。
  • 日期时间型DATE(日期,如 2023-10-01)、TIME(时间,如 14:30:00)、DATETIME(日期 + 时间)。
  • 其他类型BOOLEAN(布尔值)、ENUM(枚举,如性别:男 / 女)等。

4. 主键(Primary Key)

表中唯一标识一条记录的字段(或多个字段的组合),具有以下特性:

  • 唯一性:主键值在表中不可重复。
  • 非空性:主键字段不能为 NULL
  • 通常用 INT 类型并设置自增(AUTO_INCREMENT),方便管理。

5. 索引(Index)

提高查询效率的数据结构,类似书籍的目录。对频繁查询的字段创建索引,可大幅减少数据扫描范围,但会增加写入(插入 / 更新 / 删除)操作的开销。常见索引类型:

  • 普通索引(INDEX):加速查询。
  • 主键索引:自动为 primary key 创建的索引。
  • 唯一索引(UNIQUE):索引值唯一,可用于保证字段唯一性(如邮箱不重复)。

6. 存储引擎(Storage Engine)

MySQL 中数据的存储和管理方式由存储引擎决定,不同引擎特性不同,常用引擎:

三、Mysql基础语句

1、创建、删除、查看 数据库

create database world;
show databases;
drop databese world;

在命令行执行如下:

2、在数据库中创建表

use game; #使用game这个数据库
create table player(
id int,
name varchar(100),
level int,
exp int,
gold decimal(10,2)
);

3、对表内数据的修改,以列为例,修改数据值,数据名,增加数据项

DESC player; #查看创建的表
Alter table player MODIFY COLUMN name VARCHAR(200);
Alter table player RENAME COLUMN name to nick_name;
Alter table player ADD column last_login datetime;
Alter table player DROP column last_login;

4、删除表中数据项语句

5、删除整个表

drop table player;

6、表中数据的增删改查

insert into player (id,name,level,exp,gold) values(1,'张三',1,1,1); #插入一条数据
insert into player (id,name) values(2,'里斯'); 
selcet * from player; #查看表中数据;update player set level =1 where name = '里斯' #修改表中一条数据的列值
update player set exp=0, gold=0;  #批量修改 单词操作没条件限制 非常危险 workbench有safe modedelete from  player where gold=0; #批量删除

7、数据库的导入导出

(1)导出数据库(备份)

使用 mysqldump 命令可以将数据库中的表结构和数据导出为 SQL 脚本文件,方便备份或迁移。

基本语法:
# 导出整个数据库(结构+数据)
mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql# 示例(导出名为mydb的数据库到mydb_backup.sql)
mysqldump -u root -p mydb > mydb_backup.sql
常用参数说明:
  • -u:指定 MySQL 用户名(如 root)。
  • -p:提示输入密码(注意 -p 后无空格,回车后会要求输入密码)。
  • --databases:导出多个数据库(需指定数据库名列表)。
    mysqldump -u root -p --databases db1 db2 > db1_db2_backup.sql
    

  • --all-databases:导出 MySQL 中所有数据库(谨慎使用,可能包含系统数据库)。
  • --no-data:只导出表结构,不包含数据。
    mysqldump -u root -p --no-data mydb > mydb_structure.sql
    

  • --single-transaction:导出时使用事务(适合 InnoDB 引擎,避免锁表)。

(2)导入数据库(恢复)

使用 mysql 命令可以将导出的 SQL 脚本文件导入到 MySQL 中,恢复数据或迁移到新环境。

前提条件:
  1. 需先创建目标数据库(如果不存在):
    # 登录 MySQL 命令行
    mysql -u root -p# 在 MySQL 交互模式中创建数据库
    CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4;
    exit;  # 退出 MySQL 交互模式
    
基本语法:
# 导入 SQL 文件到指定数据库
mysql -u 用户名 -p 数据库名 < 导入的文件名.sql# 示例(将mydb_backup.sql导入到mydb数据库)
mysql -u root -p mydb < mydb_backup.sql
注意事项:
  • 导入前确保 SQL 文件路径正确(可使用绝对路径,如 /home/user/backup.sql)。
  • 如果 SQL 文件中已包含 CREATE DATABASE 语句,可直接导入到 MySQL 根目录(不指定数据库名):
    mysql -u root -p < mydb_backup.sql

8、常用语句

(1)常用



(2)UNIONINTERSECT 和 EXCEPT

① UNION(并集)

作用:合并两个或多个查询的结果集,并自动去除重复行
语法

查询1
UNION
查询2;

示例
假设有两个表 students 和 teachers,都包含 name 列,查询所有不重复的姓名:

SELECT name FROM students
UNION
SELECT name FROM teachers;

变体UNION ALL
保留所有结果(包括重复行),性能优于 UNION(无需去重):

SELECT name FROM students
UNION ALL
SELECT name FROM teachers;

② INTERSECT(交集)

作用:返回两个查询结果集中的共同行(即同时存在于两个结果集中的行)。
语法

查询1
INTERSECT
查询2;

示例
查询既是学生又是老师的姓名(假设存在重名):

SELECT name FROM students
INTERSECT
SELECT name FROM teachers;

注意

  • MySQL 不直接支持 INTERSECT,可通过 INNER JOIN 替代:

    sql

    SELECT s.name 
    FROM students s
    INNER JOIN teachers t ON s.name = t.name;
    
  • PostgreSQL、SQL Server 等数据库支持 INTERSECT

③EXCEPT(差集)

作用:返回在第一个查询结果中存在,但在第二个查询结果中不存在的行
语法

查询1
EXCEPT
查询2;

示例
查询是学生但不是老师的姓名:

注意

  • MySQL 不支持 EXCEPT,可通过 LEFT JOIN + IS NULL 替代:
    SELECT s.name 
    FROM students s
    LEFT JOIN teachers t ON s.name = t.name
    WHERE t.name IS NULL;
    

  • 部分数据库中用 MINUS 代替 EXCEPT(如 Oracle)。

9、子查询

10、表关联

在 SQL 中,表关联(JOIN)用于将多个表中的数据通过共同字段连接起来,常见的三种基础关联方式是:内连接(INNER JOIN)左连接(LEFT JOIN)右连接(RIGHT JOIN)

(1)内连接(INNER JOIN)

作用:只返回两个表中匹配条件的交集数据(即两个表中都存在符合条件的记录)。
语法

SELECT 列名
FROM 表1
INNER JOIN 表2 
ON 表1.关联字段 = 表2.关联字段;

示例
假设有 users 表(用户信息)和 orders 表(订单信息),通过 user_id 关联,查询有订单记录的用户及其订单:

SELECT u.name, o.order_id, o.order_time
FROM users u
INNER JOIN orders o 
ON u.id = o.user_id;

结果:只显示有订单的用户及其对应的订单信息,无订单的用户和无对应用户的订单都不会出现。

(2)左连接(LEFT JOIN / LEFT OUTER JOIN)

作用:返回左表的所有记录,以及右表中与左表匹配的记录;如果右表无匹配,右表字段显示 NULL
语法

SELECT 列名
FROM 表1(左表)
LEFT JOIN 表2(右表)
ON 表1.关联字段 = 表2.关联字段;

示例
查询所有用户(包括无订单的用户)及其订单信息:

SELECT u.name, o.order_id, o.order_time
FROM users u
LEFT JOIN orders o 
ON u.id = o.user_id;

结果:所有用户都会显示,有订单的用户会关联订单信息,无订单的用户订单字段为 NULL

(3)右连接(RIGHT JOIN / RIGHT OUTER JOIN)

作用:与左连接相反,返回右表的所有记录,以及左表中与右表匹配的记录;如果左表无匹配,左表字段显示 NULL
语法

SELECT 列名
FROM 表1(左表)
RIGHT JOIN 表2(右表)
ON 表1.关联字段 = 表2.关联字段;

示例
查询所有订单(包括无对应用户的异常订单)及其用户信息:

SELECT u.name, o.order_id, o.order_time
FROM users u
RIGHT JOIN orders o 
ON u.id = o.user_id;

结果:所有订单都会显示,有对应用户的订单会关联用户信息,无对应用户的订单用户字段为 NULL

  • 关联时需通过 ON 指定关联条件(通常是两表的主键和外键关系)。
  • 可通过表别名(如 uo)简化语句。
  • 实际开发中,左连接使用频率高于右连接(右连接可通过交换表位置转为左连接)。

11、表索引

12、视图

表中数据发生变化的时候,视图中的数据会随之动态改变。

drop view语句删除视图

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

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

相关文章

HTTP应用层协议-长连接

HTTP应用层协议-长连接 关于 connection 报头 HTTP 中的 Connection 字段是 HTTP 报文头的一部分&#xff0c;它主要用于控制和管理客户端与服务器之间的连接状态 核心作用 • 管理持久连接&#xff1a;Connection 字段还用于管理持久连接&#xff08;也称为长连接&#xff09;…

2020/12 JLPT听力原文 问题一 4番

4番&#xff1a;ホテルの受付で女の人と男の人が話しています。女の人はどこでパソコンを使いますか。女&#xff1a;すみません、パソコンの貸出ってできますか。部屋で仕事をしたいんですけど。 男&#xff1a;申し訳ございません。貸出はしていないんですが、二階にビジネス…

《在 Spring Boot 中安全使用 Qwen API-KEY:环境变量替代明文配置的最佳实践》

《在 Spring Boot 中安全使用 Qwen API-KEY&#xff1a;环境变量替代明文配置的最佳实践》 想要的效果其实就是 把 Qwen API-KEY 放到系统环境变量中&#xff0c;然后在 application.yml 里通过占位符读取&#xff0c;而不写明文。 这样即便 application.yml 被提交到 Git&…

Nginx 反向代理与负载均衡架构

一、反向代理基础 实验目的&#xff1a;通过 Nginx 反向代理&#xff0c;将客户端请求按类型&#xff08;静态页面 / 动态 PHP 页面&#xff09;转发到不同的后端服务器&#xff08;RS1 处理静态资源&#xff0c;RS2 处理动态请求&#xff09;&#xff0c;实现 “客户端只与代…

【Mybatis入门】配置Mybatis(IDEA)

Mybatis和JDBC一样&#xff0c;是连接数据库的工具。它是一款优秀的持久层框架&#xff0c;主要用于 Java 语言中简化数据库操作&#xff0c;实现对象与数据库表之间的映射。Mybatis相比于JDBC的优势Mybatis消除了传统 JDBC 代码中繁琐的手动处理、参数设置、结果集解析等重复工…

多路转接之epoll 【接口】【细节问题】【LT与ET模式】【Reactor】

目录 一.接口 1.1epoll_creaet 1.2epoll_ctl 1.3epoll_wait 二.细节问题 2.1 工作原理 2.2 epoll的demo 2.3 epoll的优点 三. LT 与 ET模式 理解ET 四. reactor 一.接口 1.1epoll_creaet 注意返回值是一个文件描述符 创建一个epoll模型 1.2epoll_ctl 返回值&…

渗透测试现已成为 CISO 战略的核心

随着数字供应链的扩展以及生成式人工智能在关键系统中的嵌入&#xff0c;安全领导者正在重新思考其网络安全策略。Emerald Research 最近对 225 位安全领导者进行的一项调查发现&#xff0c;68% 的人担心第三方软件和组件带来的风险。虽然大多数受访者表示他们正在满足监管要求…

音视频学习(五十三):音频重采样

概述 音频重采样&#xff08;sample rate conversion, SRC&#xff09;是把采样率从 Fs_in 变换为 Fs_out 的过程。常见场景有格式转换&#xff08;44.1→48 kHz&#xff09;、采样率匹配&#xff08;播放链路统一采样率&#xff09;、以及通信中语音采样率升降&#xff08;8 k…

【C#】正则表达式

一、核心优势&#xff1a;用一小段规则搞定大量复杂的字符串匹配&#xff0c;查找和替换&#xff0c;并且可移植可复用。使用正则表达式的好处&#xff1a;1. 强大且灵活&#xff1a;可以一次性匹配非常复杂的规则&#xff0c;比如验证邮箱、提取特定的格式日志、解析URL&#…

【[特殊字符][特殊字符] 协变与逆变:用“动物收容所”讲清楚 PHP 类型的“灵活继承”】

你有没有遇到过这样的问题&#xff1a;“为什么子类方法可以返回 Cat&#xff0c;而父类只写了返回 Animal&#xff1f;” “为什么参数反而能从 CatFood 变成更宽泛的 Food&#xff1f;”这些看似“违反直觉”的设计&#xff0c;其实背后有一个优雅的编程概念&#xff1a;协变…

cesium/resium 修改子模型材质

我是 www.v2ex.com/t/1151549 的作者&#xff0c;在csdn这边补全一些更多的信息 相关工具 主项目插件版本&#xff1a; "cesium": "^1.131.0",、"resium": "^1.19.0-beta.1"、"three": "^0.178.0"、"react…

nvm install 14.21.3 时npm 无法下载和识别

错误&#xff1a;C:\Users\H3C>nvm install 14.21.3 Downloading node.js version 14.21.3 (64-bit)... Complete Downloading npm... Creating C:\Users\H3C\AppData\Local\Temp\nvm-install-939491942\temp Downloading npm version 6.14.18... Error while downloading h…

【网络运维】Linux:LNMP 项目实践

LNMP 项目实践 简介&#xff1a;什么是 LAMP/LNMP LAMP&#xff1a;LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP&#xff1a;LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux&#xff1a;操作系统&#xff0c;提供程序运行基础。Apache/Nginx&#xff1a;Web 服务器&…

用 Docker 安装并启动 MySQL:从零到实战的完整指南

用 Docker 安装并启动 MySQL&#xff1a;从零到实战的完整指南MySQL 是目前最流行的关系型数据库之一&#xff0c;广泛应用于各类应用系统中。使用 Docker 部署 MySQL 可以极大简化环境配置&#xff0c;保证开发、测试和生产环境的一致性。本文将详细介绍如何使用 Docker 安装、…

动态规划----1.爬楼梯

70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; /** 1阶:1步,即1种; 2阶:1步1步或直接2步,即2种 f(1) 1,f(2) 2 3阶:由1阶迈2步,或2阶迈一步; 4阶:由2阶迈2步,或3阶1步; n阶:由n-2阶迈2步,或n-1阶迈1步 f(n) f(n - 1) f(n - 2) */ class Solution {/**1阶:1步,即1种…

special topic 11 (1)

preface 虽然我知道专业课必须得学&#xff0c;但是要学的东西&#xff0c;好多&#xff0c;我对专业课很害怕&#xff0c;稍微往后挪一挪&#xff0c;今天学了两个强化网课之后再学专业课吧。今天的目标是学完 11 到 14.任重道远&#xff0c;加油&#xff01;从今天开始尽量早…

MTD和FTL的关系

在嵌入式存储系统里&#xff0c;MTD&#xff08;Memory Technology Device&#xff09;和 FTL&#xff08;Flash Translation Layer&#xff09;是上下两层、互相配合的概念。你可以把它想成**“原始硬件接口”和“硬盘驱动”**的关系。1. MTD 是什么定位&#xff1a;内核里对原…

自动驾驶 HIL 测试:构建 “以假乱真” 的实时数据注入系统

01 引言在端到端自动驾驶的研发竞赛中&#xff0c;算法的迭代速度远超物理世界的测试能力。单纯依赖路测不仅成本高昂、周期漫长&#xff0c;更无法穷尽决定系统安全性的关键边缘场景&#xff08;Corner Cases&#xff09;。因此&#xff0c;硬件在环&#xff08;HIL&#xff0…

jdk升级

列出所有的jdk版本 /usr/libexec/java_home -V 永久切换版本 export JAVA_HOME(/usr/libexec/javahome−v11)exportPATH(/usr/libexec/java_home -v 11) export PATH(/usr/libexec/javah​ome−v11)exportPATHJAVA_HOME/bin:$PATH 保存后执行 source ~/.zshrc

Openlayers基础教程|从前端框架到GIS开发系列课程(24)openlayers结合canva绘制矩形绘制线

本章节讲解Canvas如何结合 Openlayer 使用&#xff0c;首先我们讲解Canvas的绘图基础。我们初始化地图的时候可以看见&#xff0c;实际上Openlayer的地图就是用Canvas实现绘制的。Canvas绘制基本概念什么是canvas&#xff1f;HTML5 <canvas> 元素用于图形的绘制&#…