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

1小时 MySQL 数据库基础速通

目录

一、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.xdnf.cn/news/1289125.html

相关文章:

  • 服务端配置 CORS解决跨域问题的原理
  • 安卓主题定制实践:17.45MB轻量级主题引擎技术解析
  • LDAP 登录配置参数填写指南
  • WireShark:非常好用的网络抓包工具
  • 间隙锁(Gap Lock)
  • 力扣top100(day01-05)--矩阵
  • 【自动化备份全网服务器数据项目】
  • TF-IDF——红楼梦案例
  • 2025年渗透测试面试题总结-15(题目+回答)
  • 前端css学习笔记3:伪类选择器与伪元素选择器
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-会议记录
  • Cookies和Sessions
  • 晓知识: 如何理解反射
  • Seed-VC:零样本语音转换与扩散transformer
  • 启保停-----------单相照明灯的接法
  • 【数据库】 MySQL 表的操作详解
  • 编程模型设计空间的决策思路
  • 贪心----4.划分字母区间
  • 【科研绘图系列】R语言绘制特定区域颜色标记散点图
  • Seata深度剖析:微服务分布式事务解决方案
  • 自然语言处理( NLP)基础
  • docker-compose搭建 redis 集群
  • Gartner 《IAM for LLM-Based AI Agents》学习心得
  • archlinux中VLC无法播放视频的解决办法
  • 【AI生成+补充】高频 hql的面试问题 以及 具体sql
  • ARM芯片架构之CoreSight SoC-400 组件介绍
  • dag实现案例 02、实现简易版dag调度系统(基于01之上升级)
  • C语言—数组和指针练习题合集(二)
  • python调研本地 DeepSeek API的例子
  • IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL