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

掌握mysql,看完这篇文章就够了

​数据库 对大量数据进行存储和管理(增删改查)

客户端:

    黑窗口终端navicat 熊掌软件

数据库分类:

关系型数据库

通过表与表产生关联关系,每个表中都存储结构化数据,支持sql结构化查询语言MysqlOracleSQLServer轻量级文件数据库sqlite: python自带sqlite3,可以快速集成到管理系统

非关系型数据库

存储管理非结构化数据,高性能,适应分布式
文档数据库mongodb
内存数据库redismysql 软件就是 数据库管理系统DBMS
数据库DB:表行列

MySQL数据库

连接到数据库管理系统

默认使用tcp/ip协议 端口3306
mysql -umao -p
mysql -uroot -p
mysql -h192.168.11.3 -uroot -p注意远程访问需要有权限
-p3306端口
-uroot 用户名
-p 密码

用户与授权:

select user(); 查看当前用户
create user '用户名'@'%' identified by '密码';
grant all on *.* to '用户名'@'%'; 所有数据库中所有表的所有权限
grant select insert on 数据库名.*to '用户名'@'%'; 数据库中所有表查询,插入权限
flush privileges; 刷新
drop user '用户名'@'%'; 删除用户

sql的分类

DDL:数据定义语言:create alter drop rename truncate
DML:数据操作语言:insert delete update select
DCL:数据控制语言:commit rollback savepoint grant revoke

列约束:

主键 primary key 学号,id
一张表必须有一个主键,主键列默认不能重复,一般都有一个独立的列id
可以直接在列类型后使用
在所有列定义后用 primary key(列名)
非空 null
自增长 auto_increment
唯一 unique 名字 不为空
默认 default
外键 foreign key  和其他表发生关联,一个表中的外键是另一个表的主键

列的数据类型:

数字:int(4字节 32位)bigint(8字节)float(浮点数 单精度 4字节)double(浮点数 双精度 8字节)decimal(高精度 需要指明精度小数位数)
字符串:char 长度varchar 可变长度text 文本
布尔:bool (1,0)
时间日期:datetimedatetimetimestamp
枚举(罗列所有可能)enum

指令

数据库相关:

展示所有数据库 show databases;
查看当前数据库 select database();
创建数据库 create database 数据库名;
指定编码:create database 数据库名 charset=utf8;
不存在才创建 create database if not exists 数据库名 charset=utf8;
使用数据库 use 数据库名;
删除数据库 drop database 数据库名;

表相关:

展示当前数据库所有表 show tables;
创建表create table 表名(列名 类型 约束信息,列名 类型 约束信息);例:create table teacher(id int primary key not null auto_increment,name varchar(50) not null unique);
查看表信息 desc 表名;describe 表名;
删除表 drop table 表名;
修改表名 rename table 原始表名 to 新表名;
alter table 表名
add 列名 类型 约束; 添加列
drop 列名; 删除列
change 原始列名 新列名 类型 约束;modify name varchar(30);

数据相关:

查询数据select
select * from 表名;
select 列1,列2... from 表名;
select * from 表名 where id<5;
插入数据insert
一.全列插入(需要给每一行赋值,包括自增长的可以写0)insert into 表名 values(列1,列2,列3....);插入多行insert into 表名 values(),(),()...;
二.缺省插入(需要指定列,指定值,有默认值的可以省略)insert into 表名 (id,name,age...) values(值1,值2..);插入多行insert into 表名 (列1,列2..) values(),(),();2.只能写一行 insert into 表名 set 列1=值1,列2=值2;
修改数据update
不带条件,整张表都会被修改
update 表名 set 列=值,列2=值2 where 条件查询;
删除数据delete
不带条件,整张表数据都会被删除
delete from 表名 where 条件;

外键指令:

创建表时添加:

create table 表名(列....,constraint 外键名 foreign key(外键列名) references 主表(主键) on update cascade on delete cascade);例子:create table student(id int primary key not null auto_increment,name varchar(30),tid int not null,constraint fk_teacher_id foreign key(tid) references teacher(id) on update cascade on delete cascade);

创建表以后添加:

alter table 表名 add constraint 外键名 foreign key(外键列名) references 主表(主键) on update cascade on delete cascade);外键的值在主表中必须存在
删除外键:alter table 表名 drop foreign key 外键名;
外键的修饰选项:restrict 拒绝 假如有外键使用到主表中的主键,在修改删除主键时不能操作cascade 级联 删除修改主表时 外键对应的内容直接删除更新

进阶查询:

基础查询select

select * from 表名; 查所有行所有列
select 列1,列2... from 表名; 查部分列
select * from 表名 where id<5; 部分行的部分列

别名:

针对查询到的列名起别名
多表查询,有共同列表select 列名 as 别名,列名 as 别名...from 表名 where 条件;
列的别名,关键字 as1.表名 as 新名字(as可以省略)2.列的别名 可以用""引起来,不要用''
例子:select student_id as id,name,age from 表名;select student_id id,name,age from 表名;select student_id "id",name,age from 表名;select student_id "id",name,age,salary * 12 "new_s" from 表名;

条件:

where 比较运算符 =,!=,<>不等于,<,<=,>,>=

多个条件:

and 并且
or 或者

成员:

in 在其中一个
select * from teacher where id in (1,2,3);
not in

范围

between and
select * from teacher where id between 1 and 4;

模糊查询like

%代表任意多个字符
_代表一个字符
例子:select * from teacher where name like '黄_';like '黄__';like '黄%';like '%'; 所有数据

判空:

is null是空
is not null不是空 空字符串不是null

常用技术:

系统函数调用 select

user()当前用户
version()当前数据库版本
database()当前数据库
current_data()当前日期
current_time()当前时间
current_timestamp()当前日期时间

聚合函数(分组函数)

max(列名)最大值
min(列名)最小值
avg(列名)平均值
sum(列名)列求和
count(任意列名)统计行数
select count(id) from student;

排序

order by 列名 排序方式,列名 排序方式
asc默认升序
desc降序
select * from student order by id; 通过id分组

分页:limit

1.limit n 显示前n个
2.limit m,n从索引m开始显示n个 第一个索引是0
显示第page页,每页显示size个 limit (page-1)*size,size
select * from student limit 2,3; 第一个是索引数据库定义变量set @page-2set @size-2

分组group by:

count(*) 统计行数针对查询的结果进行分组select count(*),列名 from 表名 where 条件 group by 列名;select sex,count(*) from teacher group by sex;having指的是针对分组结果进行处理 having 列名条件例1:select sex,count(*) from teacherwhere id > 3group by sexhaving sex in('男','女');例2:select count(*) as count,sex from teacher where id>3 group by sex having count > 1;select sex,count(*) from teacher where id>2 group by sex having sex='girl';

去重distinct

去重某一列
select distinct id from 表; 去掉相同的id号

分组查询:

select 分组函数,列(出现在group by 后面)from 表where 筛选条件group by分组的列表order by子句;having ;

关联查询

嵌套查询

一个查询的结果 作为另外一个查询的内容
例子:select * from studentwhere t_id in(select id from teacher where name='t1' or name='t2');

连接查询:

笛卡尔连接
组合两个表中的所有数据
m行 n行 结果 m*n行
select * from student,teacher
内连接:inner join…on
例:select student.name as 学生,teacher.name as 老师from student inner join teacher on student.t_id=teacher.id;
类型:等值连接(表与表有相同的字段)id=id自连接(同一张表找两次)非等值链接between and
语法:select 查询列表from 表1 别名inner join 表2 别名on 连接条件;
外连接:查询结果为主表中所有记录
左外连接:left(outer) join
左边是主表 内连接结果+左表内容(右侧补null)
右外连接:right(outer) join
左边是主表 内连接结果+右表内容(左侧补null)
全连接
full(outer) join左外连接 union 右外连接

扩展:

视图:

 一张虚拟表,方便查询,修改表等于修改真实表创建视图 create view使用navicat工具创建使用视图,等于使用表

函数与存储过程:

(都是存储在服务器上的,可以提升数据的安全) 客户端不需要关注具体实现函数:select 函数名(实参)计算返回一个结果,需要指定形参,指定返回值例子:select myadd(1,2);存储过程 一套sql操作,没有返回值call 过程名(实参);例子:call myselect(3)beginselect 语句
end

索引:

一种查询优化技术,可以提升查询效率 本质是预先存储额外的数据,牺牲存储空间,提升查询效率
索引类型:主键索引 主键唯一索引 唯一约束unique字段普通索引 任何字段(地址)何时需要创建:索引不是创建越多越好表的修改频率非常高,不适合创建索引表的查询频率非常高,几乎不修改,适合创建索引方法:btree 大数据量,适合范围比较hash 适合小数据量,精准的等值比较
例子:select * from user where address='988';

事务:

mysql存储引擎 innoDB支持事务
mysql数据库中对应的一系列操作要么全部执行成功,然后提交,要么执行失败,然后回滚成功commit失败rollback
mysql终端默认自动提交set autocommit=0; 取消自动提交set autocommit=1; 设置自动提交
事务相关:
开启事务start transaction默认不会自动提交insert into teacher set name='t10'存成变量@tid:=id结束事务commit成功提交rollback失败回滚特性acid原则原子性 不可再分,要么全部成功,要么全部失败一致性 执行前后数据完整性,安全性要保持一致隔离性 多个事务相互不影响永久性 一旦提交,则执行完毕,永久改变

存储引擎: create table () engin=引擎名字

数据存储的实现方式,不同的存储引擎适合不同的场景
常用:innoDB默认
特点:支持事务,支持行级别锁定,阻塞,支持外键,综合能力强,适合大多数场景使用后缀为ibd存储内容myisam 特点:查询,排序 ,速度非常快,不支持外键,不支持事务
Memory 特点:读写内存速度最快,但是不能持久化,不能在本地保存
csv 特点:使用逗号隔开,适合导入导出操作

数据库备份:

将数据库信息转储为sql文件,qiku.sql
手动创建数据库 执行sql文件

使用python操作数据库 pymysql

使用pymysql模块 pip install pymysql

使用流程:

    1.导入模块2.构建连接con=pymysql.connect()host,port,user,password,database3.构建游标 cur=con.cursor()4.通过游标执行sqlexecuteexecutemany5.处理sql结果 fetch6.释放游标与连接cur.close()con.close()fetchone获取一个
fetchmany获取指定个数,默认获取一个
fetchall获取所有scroll偏移游标位置
relative相对,正值向后,负值倒着
mode=absolute绝对位置 不能从后往前找

Python使用mysql事务

事务: mysql数据库中对应的一系列操作要么全部执行成功,然后提交
创建表 用存储引擎 innoDB支持事务特性acid原则:原子性 不可再分,要么全部成功,要么全部失败一致性 执行前后数据完整性,安全性要保持一致隔离性 多个事务相互不影响永久性 一旦提交,则执行完毕,永久改变开启事务start transaction默认不会自动提交
commit 提交事务
rollback 回滚​

相关文章:

掌握mysql,看完这篇文章就够了

​数据库 对大量数据进行存储和管理&#xff08;增删改查&#xff09; 客户端&#xff1a; 黑窗口终端navicat 熊掌软件数据库分类&#xff1a; 关系型数据库 通过表与表产生关联关系&#xff0c;每个表中都存储结构化数据&#xff0c;支持sql结构化查询语言MysqlOracleSQLS…...

守护Web安全:了解Web攻击与防护策略

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

变换,动画

面试题——需求&#xff1a;在不知道父元素与子元素的宽高时 如何让子元素在父元素内居中&#xff1f; 1.定位 父相子绝 2.子元素 top&#xff1a;50% left:50% 3.子元素 transform: translate(-50%,-50%) .parent{height: 500px;background-color: red;position: relative;}.c…...

深度解析速卖通商品详情API:Python实战与高级技术探讨

速卖通商品详情API接口实战&#xff1a;Python代码示例 一、准备工作 在开始之前&#xff0c;请确保你已经完成了以下步骤&#xff1a; 在速卖通开放平台注册账号并创建应用&#xff0c;获取API密钥。阅读速卖通商品详情API接口的文档&#xff0c;了解接口的使用方法和参数要…...

背包问题算法

背包问题算法 0-1背包问题二维数组一维数组 完全背包问题二维数组一维数组 多重背包问题一维数组 0-1背包问题 问题&#xff1a;背包的容量为9&#xff0c;有重量分别为[2, 4, 6, 9]的四个物品&#xff0c;价值分别为[3, 4, 5, 6]&#xff0c;求背包能装的物品的最大价值是多少…...

echarts柱状图可鼠标左击出现自定义弹框,右击隐藏弹框并阻止默认右击事件

每项x轴数据对应有两条柱图和一条阴影效果是学习其它博客得到的效果&#xff0c;这个是学习的原文链接&#xff1a;echarts两个合并柱体&#xff08;普通柱状图象形柱图&#xff09;共享一个柱体阴影 因为这次情况比较特殊&#xff0c;不仅需要自定义弹框内容&#xff0c;而且…...

存算一体成为突破算力瓶颈的关键技术?

大模型的训练和推理需要高性能的算力支持。以ChatGPT为例&#xff0c;据估算&#xff0c;在训练方面&#xff0c;1746亿参数的GPT-3模型大约需要375-625台8卡DGX A100服务器训练10天左右&#xff0c;对应A100 GPU数量约3000-5000张。 在推理方面&#xff0c;如果以A100 GPU单卡…...

Pytorch_1_基本语法

一、Pytorch的基本元素操作 1.引入torch from __future__ import print_function import torch 2.创建矩阵 x torch.empty(5,3) print(x) 3.输出结果&#xff1a; tensor([[7.9191e34, 1.1259e24, 1.2359e-42], [4.0824e-40, 1.1379e-35, 2.5353e30], [8.…...

2024上海国际玻璃纤维及新材料展览会

2024上海国际玻璃纤维及新材料展览会 时间&#xff1a;2024年12月18&#xff5e;20日 地点&#xff1a;上海新国际博览中心 ◆ 》》》展会概况&#xff1a; 玻璃纤维是一种性能优异的无机非金属材料&#xff0c;比有机纤维耐温高&#xff0c;不燃&#xff0c;抗腐&#xff…...

云计算项目九:K8S安装

K8S安装 Kube-master安装 按照如下配置准备云主机 防火墙相关配置&#xff1a;禁用selinux&#xff0c;禁用swap&#xff0c;且在firewalld-*。上传kubernetes.zip 到跳板机 配置yum仓库&#xff08;跳板机&#xff09; 跳板机主机配置k8s软件源服务端 [rootjs ~]# yum -y…...

sign加密方法生成

1. 引入包的问题 2. 原因 .pycrypto、pycrytodome和crypto是一个东西&#xff0c;crypto在python上面的名字是pycrypto&#xff0c;它是一个第三方库&#xff0c;但是已经停止更新 3. 解决方法 --直接安装&#xff1a;pip install pycryptodome 3.但是&#xff0c;在使用的时…...

【Linux】编译器-gcc/g++使用

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 初见gcc和g3. 程序的翻译过程3.1 预处理3.1.1 宏替换 去注释 头文件展开3.1.2 条件编译 3.2 编译3.3 汇编3.4 链接 4. 链接4.1 动态链接4.2 静态链接 1. 前言 在之…...

Python 中的 filter() 函数:筛选可迭代对象元素

在 Python 中&#xff0c;filter() 函数是一个非常有用的内置函数&#xff0c;用于根据指定条件过滤可迭代对象中的元素。本文将深入探讨 filter() 函数的用法、工作原理以及常见应用场景&#xff0c;以帮助大家更好地理解和运用这个函数。 什么是 filter() 函数&#xff1f; …...

Java高频面试之并发篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 并行和并发有什么区别&#xff1f; 并行是同时执行多个任务&#xff0c;而并发是多个任务在一段时间内交替执行。并行&#xff08;Parallel&#xff09;是指同时执行多个任务或操作&#xff0c;通过同时…...

docker 运行异构镜像

概述 关于docker镜像在不同的cpu架构下运行报错的解决办法&#xff0c;作者踩坑验证&#xff0c;在此分享经验 某次工作遇到需要银行内部部署docker镜像&#xff0c;由于行内已经开始走信创的路线&#xff0c;使用鲲鹏系统&#xff0c;arm架构&#xff0c;记过就遇到了standa…...

练习3-8 查询水果价格

探索--题目集索引 给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元…...

PTA 对于下列程序,正确的是() 。void f(int *p){ *p = 5;}int main(void){ int a, *p; a = 10;

对于下列程序&#xff0c;正确的是&#xff08;&#xff09; 。 void f(int *p) {*p 5; } int main(void) {int a, *p;a 10;p &a;f(p);printf(“%d”, (*p));return 0; }A.5 B.6 C.10 D.11 答&#xff1a;A 解析&#xff1a;这里考察当是指针作为函数的参数。这里将 p …...

【银河商学】大蓝短视频学习02——流量突围实战

【银河商学】大蓝短视频学习02——流量突围实战 内容大纲 找对标找准你的"竞争对手" 定形式选定适合你的视频形式 做内容选题决定命运 2s上热门 一、找对标 1. 为什么要找对标 标准答案,少走弯路99%的问题,都有标准答案。 找个懂得人问一问 秒上热门,快速起号预…...

Android 获取Sms

Android 获取Sms 本篇文章记录下android下获取短信列表. 1: 申请权限 <uses-permission android:name"android.permission.READ_SMS" />2: 获取短信内容列表 private void readSms() {String[] projection {"_id", "address", "b…...

【Linux】cpp-httplib库

目录 升级gcc版本 下载cpp-httplib的zip安装包&#xff0c;上传到服务器 ​编辑 简单使用 首先打开gittee,搜索cpp-httplib,选择其中一个即可 也可以点下方链接 cpp-httplib库&#xff1a;cpp-httplib: cpp-httplib (gitee.com) 注意&#xff1a;cpp-httplib在使用的时候需…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...