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

MySQL学习笔记(总结)

1. 数据库服务器操作命令

启动数据库:net start mysql80 (注释:windows命令)

停止数据库:net stop mysql80 (注释:windows命令)

重启数据库:systemctl restart mysql;(重启后全局变量失效)

连接数据库:mysql -h localhost -P 3306 -u root -p (注释:windows命令)

备份数据库:mysqldump [-h{ip}] -uroot -p1234 数据库名 > d:/数据库名.sql(windows命令)

退出数据库:exit (注释:mysql命令,下记略)

2. DDL数据库操作命令

查询所有数据库:show databases; //显示所有数据名

切换当前数据库:use {数据库名}; // 将数据库切换到指定数据库

查询当前数据库:select database(); // 显示当前数据库名

创建数据库:careate database [if not exists] {数据库名} [default charset 字符集]

删除数据库:drop database {数据库名}

3. DDL表操作

查询所有表:show tables; // 显示当前数据库所有表名

查询表结构:desc {表名}; // 显示表字段 属性 约束

查询建表语句:show create table {表名};

创建表:create table {表名} ( {字段名} {类型} [comment 注释], ... ) [comment=表注释];

修改表_添加字段:alter table {表名} add {字段名} {类型} [comment 注释 约束];

修改表_修改类型:alter table {表名} modify {字段名} {类型} [comment 注释 约束];

修改表_修改字段:alter table {表名} change {原字段} {新字段} {新类型} [comment 约束];

修改表_删除字段:alter table {表名} drop {字段名};

修改表_修改表名:alter table {表名} rename to {新表名};

重新建表:truncate table {表名}; // 删除后重新建表(删数据比delete快,需要有改表权限)

删除表:drop table [if exists] {表名};

4. DML数据操作(增删改)

单条插入_指定字段:insert into {表名} (字段, 字段...) values (值, 值...);

单条插入_全部字段:insert into {表名} values (值, 值...);

批量插入_指定字段:insert into {表名} (字段, 字段...) values (字段, 字段),(字段, 字段)...;

批量插入_全部字段:insert into {表名} values (字段, 字段),(字段, 字段)...;

修改数据:update {表名} set {字段}={值}, {字段}={值}... [where 条件];

删除数据:delete from {表名} [where 条件];

5. DQL数据操作(查询)

查询:select 字段... from {表名} [where 条件] [group by 字段...] [having 字段] order by {字段} asc, {字段} desc limit 下标值 件数值;

去重查询:select distinct 字段... from {表名} [where 条件]...; // 据说去重比分组快

条件运算符: =; !=;<> ; >; <; >=; <=; beturn and ; in ; like ; is null; no in; not like; is not null;

逻辑运算符:and ; or ; !

关联查询:inner join; left [outer] join; right [outer] join; full outer join;

联合查询:union; union all;

嵌套查询(子查询):

标量子查询:select * from {表1}  where {字段} =  (select {字段} from {表2});

行子查询:select * from {表1}  where {字段, 字段} =  (select {字段, 字段} from {表2});

列子查询:select * from {表1}  where {字段} [in,any,some,all]  (select {字段} from {表2});

表子查询:select * from {表1}  where {字段, 字段} in  (select {字段, 字段} from {表2});

判空函数: if (表达式, 字段1, 字段2)  // 如果表达式成立则字段1,否则字段2

判空函数: ifnull (字段1, 字段2)  // 如果字段1是null则字段2,否则字段1

case when {表达式} then {字段1} else {字段2} end;

case {字段1} when {值1} then {} when {值2} then {} else {} end; 

6. DCL数据访问权限(用户权限)

查询用户:select * from user;

创建用户:create user '{用户名}'@'{主机名}' identified {密码}; // 主机 'localhost'本地访问权限,'%'全部机器访问权限

修改密码:alter user '{用户名}'@'{主机名}' identified with mysql_native_password by {新密码};

删除用户:drop user '{用户名}'@'{主机名}';

查询用户权限:show grants for '{用户名}'@'{主机名}';

授权用户权限_数据库下所有表:grant {权限}, {权限}... on {数据库.表名} to '{用户名}'@'{主机名}';

授权用户权限_所有数据的表:grant {权限}, {权限}... on *.* to '{用户名}'@'{主机名}';

撤销权限:revoke  {权限}, {权限}... on {数据库.表名} from '{用户名}'@'{主机名}';

7. 约束

建表约束_字段指定:create table {表名} (字段 类型 primary key, 字段 类型 not null, 字段 类型 unique, 字段 类型 check(条件), 字段 类型 defult);

建表约束_外键:create table {表名} (... constraint 外键名 foreign key (字段) 主表名(字段) );

追加外键约束:alter table {表名} add constraint {约束名} {约束} (字段) referenes 主表名(字段);

删除外键约束:alter table {表名} drop foreign key 外键约束名;

外键更新删除行为:no action 不允许删除更新,restrict 不允许删除更新,cascade 同时删除更新子表记录,set null 子表设置成 null

设置外键更新删除行为:alter table {表名} add constraint {约束名} {约束} (字段) referenes 主表名(字段) on update cascade on delete set null; // 主表更新子表同事更新。主表删除子表设置null

8. 事务(原子性,一致性,隔离性,持久性

查询事务提交方式:select @@autocommint; // 1自动提交 0手动提交

设置事务提交方式:set @@autocommint = 0; // 改为手动提交

开启事务:start transaction; // 或者begin

提交事务:commit; 回滚事务:rollback;

隔离级别:read uncommited(读未提交)有脏读 不可重复读 幻读问题, read commited(读已提交)有不可重复读 幻读问题, reteatable read(可重复读)有幻读问题, serializable(串行化)三个问题都没有,执行效率低

查看事务隔离级别:select @@transaction_isolation;

设置事务隔离级别:set [session | global] transaction level {隔离级别}; // session 当前窗口生效 global所有窗口生效

9. 索引

创建索引:create [unique fulltext] index {索引名} on 表名(字段..); 

查看索引:show index from {表名};

删除索引:drop index {索引名} on {表名};

提示用指定索引查询:select * from 表 use index(索引名) where 条件;

提示不用指定索引查询:select * from 表 ignore index(索引名) where 条件;

强制使用索引查询:select * from 表 force index(索引名) where 条件;

10. 视图

创建视图:create view 视图名 as select * from 表; 

查询视图:select * from 视图名; // 与查询表一致

查询视图结构:show create view 视图名; // 与查询表结构一致

替换视图:create or replace view 视图名 as select * from 表; 

修改视图:alter view 视图名 as select * from 表; 

删除视图:drop view 视图名; 

创建视图检查选项:create view 视图名 as select * from 表 where with cascaded check option;

create view 视图名 as select * from 表 where 条件 with local check option;

11. 存储过程

查看系统变量:show [global session] variables;

查看系统变量值:select @@[global session] {系统变量名};

设置系统变量:set @@[global session].{系统变量名} = 值; set [global session] {系统变量名} = 值;

设置自定义变量:set @变量名 = 值; set @变量名 := 值; select @变量名 := 值; // 无需声明

查询自定义变量:select @变量名, @变量名;

声明局部变量:declare 变量名 类型; // 可以default 指定默认值

设置局部变量:set 变量名 = 值; set 变量名 := 值; select 字段 into 变量 from 表;

创建存储过程:create procedure {存储过程名} (参数列表) begin ... end;

创建带参存储过程:create procedure {存储过程名} (in 参数 类型, out 返回值 类型) begin ... end;

条件判断: if 条件 then ... elseif 条件 then ... else ... end if;

条件判断:case 值 when 值 then ... else ... end case; case when 条件 then... else ... end case;

循环:while 条件 do ... end while; repeat ... until 条件;

循环:[循环名:] loop ... end loop [循环名]; // leave 循环名(退出) iterate 循环名(跳过)

调用存储过程:call {存储过程名}(参数列表); call {存储过程名}(参数, @自定义变量);

查询存储过程:select * from infomation_schema.routines where routine_schema = {数据库};

查询存储过程创建语句:show create procedure {存储过程名};

删除存储过程:drop procedure {存储过程名};

声明游标: declare 游标名 cursor for 查询语句;

打开游标:open 游标名;

获取当前游标记录:fetch 游标名 into 变量 [, 变量...]; // 多条记录需要循环调用

关闭游标:close 游标名;

12. 存储函数

创建存储函数:create function 存储函数名(参数名 参数类型) // 无需指定参数默认in

returns 返回值类型 begin ... return ...; end;

调用存储函数:select 存储函数名;

13. 触发器

创建触发器:create trigger 触发器名;

before insert / after insert / before update / after update / before delete / after delete //选一个

on 表名 for each row // 行级触发器

begin ... end;

查看触发器:show triggers;

删除触发器:drop trigger [schema名.]触发器名;

14. 锁

加全局锁:flush tables with read lock; 

释放全局锁:unlocak tables;

加表共享读锁(读锁):lock tables 表名[,表名...] read; // 任何人只能读不能写

加表独占写锁(写锁):lock tables 表名[,表名...] write; // 自己读写,其他人不能读写

释放表锁:unlock tables;

加查询共享锁:select ... lock in share mode;

加查询排他锁:select ... for update;

相关文章:

MySQL学习笔记(总结)

1. 数据库服务器操作命令 启动数据库&#xff1a;net start mysql80 &#xff08;注释&#xff1a;windows命令&#xff09; 停止数据库&#xff1a;net stop mysql80 &#xff08;注释&#xff1a;windows命令&#xff09; 重启数据库&#xff1a;systemctl restart mysql;…...

Android开发 Layout布局 ScrollView

1.LinearLayout 属性 orientation&#xff1a;内部组件排列方式&#xff0c;可选vertical、horizontal&#xff0c;默认horizontal layout_weight: 与平级组件长宽比例&#xff0c;需要将layout_width、layout_height其中一个设置为0dp&#xff0c;表明长或宽与平级组件的长…...

手撕数据结构与算法——树(三指针描述一棵树)

&#x1f3c6;作者主页&#xff1a;king&南星 &#x1f384;专栏链接&#xff1a;数据结构 &#x1f3c5;文章目录&#x1f331;树一、&#x1f332;概念与定义二、&#x1f333;定义与预备三、&#x1f334;创建结点函数四、&#x1f340;查找五、&#x1f341;插入六、&a…...

字节跳动Java后端开发实习面经

最近在和同学一起找实习&#xff0c;投了b站、字节和miHoYo的后端开发。b站二月底就投了&#xff0c;但现在也还没回复&#xff1b;miHoYo也还没回复&#xff0c;估计是只面向24届了&#xff1b;感谢字节&#xff0c;给了我面试的机会。字节真的处理好快&#xff0c;不到一周官…...

STM32实战项目-触摸按键

前言&#xff1a; 通过触摸按键控制LED灯以及继电器&#xff0c;具体实现功能如下&#xff1a; 1、触摸按键1单击与长按&#xff0c;控制LED1&#xff1b; 2、触摸按键2单击与长按&#xff0c;控制LED2; 3、触摸按键3单击与长按&#xff0c;控制LED3; 4、触摸按键4单击与长…...

安全行业-术语(万字)

肉鸡 所谓“肉鸡”说一种很形象的比喻&#xff0c;比喻那些可以任意被我们控制的电脑&#xff0c;对方可以是Windows系统&#xff0c;也可以说UNIX/linux系统&#xff0c;可以说普通的个人电脑&#xff0c;也可以是大型的服务器&#xff0c;我们可以像操作自己的电脑那样来操控…...

P1113 杂务(拓扑排序 or 记忆回溯)

题目描述 John的农场在给奶牛挤奶前有很多杂务要完成&#xff0c;每一项杂务都需要一定的时间来完成它。比如&#xff1a;他们要将奶牛集合起来&#xff0c;将他们赶进牛棚&#xff0c;为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的&#xff0c;因为这样才有更…...

Web3中文|政策影响下的新加坡Web3步伐喜忧参半

如果说“亚洲四小龙”是新加坡曾经的荣耀&#xff0c;那么当时代进入21世纪的第二个十年&#xff0c;用新加坡经济协会&#xff08;SEE&#xff09;副主席、新加坡新跃社科大学教授李国权的话来说&#xff0c;新加坡现在的“荣耀”是全球金融的主要“节点”或区块链行业发展的关…...

Java数据库高阶面试题,好程序员学员分享百度Java面试流程

小源下面分享一位好程序员的学员去百度Java面试流程&#xff01;百度技术一面(20分钟)1、自我介绍很流畅捡重点介绍2、数据结构算法好不好挺好的(其实心还是有点虚&#xff0c;不过最近刷了很多好程序员出的题感觉没问题&#xff01;)3、找到单链表的三等分点&#xff0c;如果单…...

栈和队列习题精选(持续更新中)

第一题&#xff08;括号匹配&#xff09;给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。有效字符串需满足&#xff1a;1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。…...

大数据开发 - Java入门6

目录标题do-while循环练习1&#xff1a;从键盘输入单词&#xff0c;讲输入的单词输出到控制台&#xff0c;输入是exit时退出循环练习2&#xff1a;键盘输入密码和确认密码&#xff0c;两次密码一致就退出循环打印注册成功&#xff0c;两次密码不一致就循环输入两次密码死循环fo…...

开源超级终端工具——WindTerm

1、下载和安装&#xff08;我的是win10&#xff0c;其他版本各位自选&#xff09; Releases kingToolbox/WindTerm GitHub 安装的话&#xff0c;相信大家不用我赘述了。 初始界面是这样的&#xff1a; 2、WindTerm使用 2.1 本地会话&#xff08;最下面那个框&#xff0c;发…...

【Linux】信号常见概念

文章目录信号入门生活中的信号技术应用角度的信号signal函数注意事项信号的概念信号的产生信号的记录(保存)信号处理常见方式概述信号入门 生活中的信号 你在网上买了很多件商品,在等待不同商品快递的到来 但即便快递还没有到来,你也知道快递到了的时候应该怎么处理快递,也就…...

15000 字的 SQL 语句大全 第一部分

一、基础 1、说明&#xff1a;创建数据库CREATE DATABASE database-name 2、说明&#xff1a;删除数据库drop database dbname 3、说明&#xff1a;备份sql server--- 创建 备份数据的 device USE master EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat …...

突发——字节跳动被要求出售 TikTok 股票,否则禁令,低代码也曾被打压

一、欲加之罪&#xff0c;何患无辞&#xff01; 正值人们对TikTok和其它社交媒体平台对年轻用户的影响进行更广泛、持续的反思之际&#xff0c;美政客们以数据安全为由要求TikTok出售股票&#xff0c;已然不顾文明国家的体面。 在美国&#xff0c;TikTok拥有1.4亿用户&#x…...

2023年网络安全趋势

数据安全越来越重要。 我国《数据安全法》提出“建立健全数据安全治理体系”&#xff0c;各地区部门均在探索和简历数据分类分级、重要数据识别与重点保护制度。 数据安全治理不仅是一系列技术应用或产品&#xff0c;更是包括组织构建、规范制定、技术支撑等要素共同完成数据…...

html练习

1.用户注册界面 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"get"><table border"1" widt…...

【Redis】Redis 是如何保证高可用的?(背诵版)

Redis 是如何保证高可用的&#xff1f;1. 说一下 Redis 是如何保证高可用的&#xff1f;2. 了解过主从复制么&#xff1f;2.1 Redis 主从复制主要的作用是什么?2.2 Redis 主从模式的拓扑结构&#xff1f;&#xff08;1&#xff09;一主一从结构&#xff08;2&#xff09;一主多…...

Qt---去掉标题栏后,最大化应用程序窗口时,窗口遮住了任务栏

// showMaximized(); // Qt最大化显示函数 任务栏都会覆盖static bool max false;static QRect location this->geometry();if (max) {this->setGeometry(location);//回复窗口原大小和位置// ui->maxBtn->setIcon(QIcon(":/MAX_.png"));}else {// ui-…...

Cadence Allegro 导出Netin(non-back)报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Netin(non-back)作用3,Netin(non-back)示例4,Netin(non-back)导出方法4.1,方法1:4.2,方法2:B站关注“硬小二”浏览更多演示视频...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...