mysql 语言学习
整理了一下 mysql 操作语言,不是很全,部分地方也许需要修改,先放上来,有时间再慢慢完善。
一、数据库操作
连接数据库
$ sudo mysql [-h ip] -u root -p [-P 3306]
初始化数据库
$ mysql_secure_installation
备份数据库
# 备份一个或多个数据库
$ sudo mysqldump [options] --databases 数据库名,... > 备份文件# 备份所有数据库
$ sudo mysqldump [options] --all-databases > 备份文件# 备份一个或多个表
$ sudo mysqldump [options] 数据库名 [表名,...] > 备份文件
常用的 options:
- -u, --user= username :数据库用户名。
- -p, --password[= password]:数据库密码。
- -P, --port= portnumber :指定端口。
- -h, --host= hostname :指定主机名。
- -r, --result-file= filename :将导出结果保存到指定的文件中,等同于“>”。
- -t:只备份数据。
- -d:只备份表结构。
还原数据库
$ sudo mysql [-h 主机名] [-P 3306] -u 用户名 -p 数据库名 < 已备份文件
二、数据库系统变量操作
mysql 系统变量有全局变量和会话变量两类。
- 全局变量(global variables)的修改只在当前 mysql 服务有效,当 mysql 服务重启后变量将重新初始化;
- 会话变量(session variables)的修改只在当前会话中有效,关闭会话并重新打开会话后该变量设置失效。
-- 查看所有全局|会话变量,省略参数则默认为会话变量
mysql> show [global|session] variables;
-- 查看字符集变量
mysql> show variables like '%character%';
-- 查看密码规则变量
mysql> show variables like 'validate_password%';
-- 修改密码策略(0 low,1 medium,2 strong)
mysql> set global validate_password.policy=0;
注意:用 set 修改全局变量,mysql重启失效;修改会话变量后,关闭会话失效。
三、数据库用户管理
mysql 的用户信息(用户名、允许访问的地址、密码验证策略、有关权限等等)存储在 mysql.user 表中。
-- 创建数据库用户
mysql> create user '用户名'@'主机名' identified [with 密码验证规则] by '密码';
主机名表示在哪台主机上可以登录 mysql,可以是 ip 地址,并且可以使用 % 通配符。其中:localhost 表示本机,% 通配符则表示任意 ip。
通过 create 创建的用户没有任何权限,需要通过 grant 来对用户授权。
-- 给数据库用户赋权
mysql> grant privileges on 数据库名.数据库对象名 to '用户名'@'主机名' [with grant option];
priveleges 表示用户的操作权限,如
select
,insert
,update
等,多个权限之间⽤逗号分开。如果要授予所有的权限则使用all
。
数据对象名主要为:表、视图、存储过程、存储函数等。*.*表示所有任意数据库的任意对象。
with grant option
:可选参数,表示该用户可以给将⾃⼰拥有的权限授权给别⼈。
-- 刷新权限,赋权之后通常要刷新权限
mysql> flush privileges;
-- 查看用户权限
mysql> show grants [for '用户名'@'主机名'];
-- 撤销用户权限,参数与 grant 赋权的参数含义相同
mysql> revoke privileges on 数据库名.表名 from '用户名'@'主机名';
-- 修改数据库用户
mysql> alter user '用户名'@'主机名' identified [with 密码验证规则] by '密码';
-- 删除数据库用户
mysql> drop user [if exists] '用户名'@'主机名';-- 因为数据库用户存储在mysql.user表中,因此可以通过表操作语言来删除,但记得要调用flush privileges 来刷新权限。
mysql> delete from mysql.user where user='用户名' and host='主机名';
mysql> flush privileges;
四、数据库管理
-- 创建数据库
mysql> create database [if not exists] 数据库名 [character set 字符集名];-- 显示所有数据库
mysql> show databases;-- 选择数据库
mysql> use 数据库名;-- 修改数据库
mysql> alter database 库名 character set 字符集名;-- 删除数据库
mysql> drop database [if exists] 库名;
五、表相关语法
-- 创建表
mysql> create table [if not exists] 表名(…字段名 字段类型 [约束],...);-- 查看表结构
mysql> desc table_name;-- 查看所有表
mysql> show tables;-- 添加列
mysql> alter table 表名 add column 列名 类型 [first|after 字段名];-- 修改列类型&约束
mysql> alter table 表名 modify column 列名 新类型 [新约束];-- 修改列名称
mysql> alter table 表名 change column 旧列名 新列名 类型;-- 删除列
mysql> alter table 表名 drop column 列名;-- 修改表名
mysql> alter table 表名 rename [to] 新表名;-- 删除表
mysql> drop table[if exists] 表名;-- 复制表
mysql> create table 表名 like 旧表;-- 复制表结构&数据
mysql> create table 表名 select 查询列表 from 旧表[where 筛选];-- 创建索引
mysql> create [unique|fulltext|spatial] index index_name[using index_type] on table_name (index_col_name,...)-- 删除索引
mysql> alter table table_name drop index index_name;-- 查看索引
mysql> show index from table_name;
插入数据语法
-- 插入多行
mysql> insert into 表名(字段名,…) values(值,…);-- 子查询插入
mysql> insert into 表名 (查询语句);
删除数据语法
mysql> delete from 表名 [where 筛选条件][limit 条目数];
修改数据语法
mysql> update 表名 set 字段=值,字段=值 [where 筛选条件];
查询数据语法
-- 综合
mysql> select 查询列表 from 表1 [别名 连接类型 join 表2 on 连接条件 where 筛选 group by 分组列表 having 筛选 order by排序列表 limit 起始条目索引,条目数];-- 通配符
mysql> select 查询列表 from 表名 where 列名 like 'test%'-- 子查询
mysql> select 查询列表 from 表名 where 列名 in(子查询)-- 子查询为真才有结果
mysql> select 查询列表 form 表名 where exists (子查询)
表连接查询语法
-- 返回两个表中联结字段相等的行
mysql> select * from table1 A inner join table2 B on A.id=B.id;-- 左表中的所有记录和右表中联结字段
mysql> select * from table1 A left join table2 B on A.id=B.id;相等的记录-- 右表中的所有记录和左表中联结字段相等的记录
mysql> select * from table1 A right join table2 B on A.id=B.id;
视图相关语法
-- 创建视图
mysql> create view 视图名 as select 语句;-- 删除视图
mysql> drop view 视图名
union集语法
-- 不重复并集
mysql> [SELECT 语句 1] UNION [SELECT 语句 2];-- 重复并集
mysql> [SELECT 语句 1] UNION ALL [SELECT 语句 2];
case语法
select case (列名) when '条件1' then '结果1' when '条件2' then '结果2'[else '结果N']endfrom 表名
六、存储过程
存储过程创建的格式为:CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...] 过程体
,其中过程体是以 BEGIN
作为开始标志,以 END
作为结束标志的,下面进行简单的演示:
创建存储过程
mysql> use mysql; --选择 mysql 数据库
mysql> DELIMITER $$ --声明分隔符为 $$ (默认分隔符是分号,声明 $$ 分隔符后再碰到分号,就不会立即执行语句了)
mysql> CREATE PROCEDURE Proc(IN p1 varchar(32)) --创建存储过程,过程名为Proc,带字符型输入参数 p1-> BEGIN --过程体以关键字 BEGIN 开始-> select user,host from user where user=p1; --过程体语句,查找用户名为 p1 的用户-> END --过程体以关键字 END 结束-> $$ --输入 $$ 分隔符,执行上面的语句,也就是完成了存储过程的创建
mysql> DELIMITER ; --将语句的结束符号恢复为分号
调用存储过程
mysql> SET @p1='root' --因此上面的存储过程有一个输入参数,所以先定义一个变量 @p1
mysql> call Proc(@p1); --调用存储过程
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)
查看存储过程
mysql> show procedure status where db='mysql'; --查看 mysql 数据库中所有的存储过程状态信息
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| mysql | proc | PROCEDURE | root@localhost | 2023-12-09 22:03:36 | 2023-12-09 22:03:36 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci |
+-------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)mysql> select routine_name from information_schema.routines where routine_schema='mysql'; --查看 mysql 数据库中所有的存储过程名
+--------------+
| ROUTINE_NAME |
+--------------+
| proc |
+--------------+
1 row in set (0.00 sec)mysql> SHOW CREATE PROCEDURE mysql.Proc; --查看某个存储过程的具体信息
删除存储过程
mysql> DROP PROCEDURE IF EXISTS Proc; --仅当存在时删除,如果指定的过程不存在,则产生一个错误
有关函数
1)数学函数
SQRT(number) --求平方根
ABS(number) --绝对值
CEILING(number2) --向上取整
CONV(number2,from_base,to_base) --进制转换
FLOOR(number2) --向下取整
FORMAT(number,decimal_places) --保留小数位数
BIN(decimal_number) --十进制转二进制
HEX (DecimalNumber) --十进制转十六进制,HEX()中还传入字符串,返回值是其ASC-11码,如HEX('DEF')返回4142143
GREATEST(x1,x2…) --求最大值
LEAST(number , number2 [,..]) --求最小值
MOD(numerator ,denominator) --求余
POWER(number ,power) --求指数
RAND([seed]) --随机数
ROUND(number,decimals) --四舍五入,decimals 为小数位数
2)聚合函数
avg() --平均值
count() --个数
min() --最大值
max() --最小值
sum() --求和
3)字符串函数
SPACE(count) --生成count个空格
REVERSE(str) --字符串反转
CHARSET(str) --返回字串字符集
CONCAT(str [,... ]) --连接字串
LCASE(str ) --转换成小写,也可用lower(str)
UCASE(str ) --转换成大写,也可用UPPER(str )
LEFT (str ,length ) --从str中的左边起取length个字符
RIGHT(str ,length ) --从str中的右边起取length个字符
LENGTH (str ) --返回长度
LOAD_FILE (file_name ) --从文件读取内容
INSTR (str,substring ) --返回substring首次在str中出现的位置,不存在返回0
LOCATE (substring , string [,start_position ] ) --同INSTR,但可指定开始位置
LPAD (str ,length ,pad ) --重复用pad加在string开头,直到字串长度为length
LTRIM (str ) --去除前端空格
REPEAT (str ,count ) --重复count次
REPLACE (str ,search_str ,replace_str ) --在str中用replace_str替换search_str
RPAD (str ,length ,pad) --在str后用pad补充,直到长度为length
RTRIM (str ) --去除后端空格
STRCMP (str1 ,str2 ) --逐字符比较两字串大小,返回-1,0,1
SUBSTRING (str , position [,length ]) --从str的position开始,取length个字符
4) 日期时间函数
ADDTIME (date2 ,time_interval ) --将time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) --转换时区
CURRENT_DATE ( ) --当前日期
CURRENT_TIME ( ) --当前时间
CURRENT_TIMESTAMP ( ) --当前时间戳
DATE (datetime ) --返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) --在date2中加上日期或时间
DATE_FORMAT (datetime ,FormatCodes ) --使用formatcodes格式显示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) --在date2上减去一个时间
DATEDIFF (date1 ,date2 ) --两个日期差
DAY (date ) --返回日期的天
DAYNAME (date ) --英文星期
DAYOFWEEK (date ) --星期(1-7) ,1为星期天
DAYOFYEAR (date ) --一年中的第几天
EXTRACT (interval_name FROM date ) --从date中提取日期的指定部分
MAKEDATE (year ,day ) --给出年及年中的第几天,生成日期串
MAKETIME (hour ,minute ,second ) --生成时间串
MONTHNAME (date ) --英文月份名
NOW ( ) --当前时间
SEC_TO_TIME (seconds ) --秒数转成时间
STR_TO_DATE (string ,format ) --字串转成时间,以format格式显示
TIMEDIFF (datetime1 ,datetime2 ) --两个时间差
TIME_TO_SEC (time ) --时间转秒数]
WEEK (date_time [,start_of_week ]) --第几周
YEAR (datetime ) --年份
DAYOFMONTH(datetime) --月的第几天
HOUR(datetime) --小时
LAST_DAY(date) --date的月的最后日期
MICROSECOND(datetime) --微秒
MONTH(datetime) --月
MINUTE(datetime) --分返回符号,正负或0
相关文章:
mysql 语言学习
整理了一下 mysql 操作语言,不是很全,部分地方也许需要修改,先放上来,有时间再慢慢完善。 一、数据库操作 连接数据库 $ sudo mysql [-h ip] -u root -p [-P 3306] 初始化数据库 $ mysql_secure_installation备份数据库 # 备…...

微信小程序基础bug
1.苹果11手机小程序请求数据不显示 设置-》隐私-》分析与改进-》开启 ”与开发者共享“ 2.<navigator>组件回退delta不成功 tabBar 页面是不能实现后退的效果的. 因为, 当我们跳转到 tabBar 页面,会关闭其他所有非tabBar 页面,所以当处于 tabBar 页面时, 无…...

13、pytest为失败的断言定义自己的解释
官方实例 # content of ocnftest.py from test_foocompare import Foodef pytest_assertrepr_compare(op, left, right):if isinstance(left, Foo) and isinstance(right, Foo) and op "":return["Comparing Foo instances:",f" vals:{left.val} !…...
Flink优化——数据倾斜(二)
目录 数据倾斜 判断是否存在数据倾斜 数据倾斜的解决 KeyBy之前发生数据倾斜 KeyBy之后发生的数据倾斜 聚合操作存在数据倾斜 窗口聚合操作存在数据倾斜 数据倾斜 判断是否存在数据倾斜 相同 Task 的多个 Subtask 中,个别 Subtask 接收到的数据量明显大于其…...

Unity打包到Webgl平台以及遇到的问题
Unity打包到Webgl平台以及遇到的问题 参考网站 Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题(本地测试)-CSDN博客 unity打包到Webgl 并配置能正常运行 这里我用的是Unity2022.3.3f1c1版本 有两种方法 1、配置本地web服务 2、安装vsCode>添加插件LiveServe…...
c语言编程题经典100例——(90~95例)
1,写一个函数,实现数字的加密和解密。 下面是一个简单的C语言函数,可以实现数字的加密和解密。这个函数采用简单的加密算法,将输入的数字乘以一个固定的密钥,然后加上一个固定的偏移量。解密过程就是将加密后的数字减去偏移量&am…...

Redis核心知识点总结
1.Redis介绍 Redis 是 NoSQL,但是可处理 1 秒 10w 的并发(数据都在内存中) 使用 java 对 redis 进行操作类似 jdbc 接口标准对 mysql,有各类实现他的实现类,我们常用的是 druid 其中对 redis,我们通常用 J…...
stm32Flash操作
//G0B0 flash大小 0x08000000-0x0807FFFF 512K(0400 1K)//2k 1页 //初始化标记数据地址 放最前面 脱机烧写器可擦除掉 #define CONST_INITMARKDATA_ADDRESS (0x0807D000UL) //2k 1页 //射频数据地址 #define CONST_FREQDATA_ADDRESS (0x0807F000UL) //2…...

云原生系列1
1、虚拟机集群环境准备 VirtualBox类似vmware的虚拟化软件,去官网https://www.virtualbox.org/下载最新版本免费的,VirtualBox中鼠标右ctrl加home跳出鼠标到wins中。 VirtualBox安装步骤 https://blog.csdn.net/rfc2544/article/details/131338906 cent…...
设计原则 | 里式替换原则
一、里式替换原则(Liskov Substitution Principle ) 1、原理 子类型必须能替换掉它们的基类型,在使用继承时,遵循里式替换原则,在子类中尽量不要重写父类中的方法。里式替换原则告诉我们,继承实际上让两个…...
第7节:Vue3 动态绑定多个属性
可以使用v-bind指令将多个属性动态绑定到元素上。以下是一个简单的实例: <template><view class"container"><text v-bind"dynamicProps">{{ message }}</text><button click"toggleActive">切换激活…...

【文件上传系列】No.1 大文件分片、进度图展示(原生前端 + Node 后端 Koa)
分片(500MB)进度效果展示 效果展示,一个分片是 500MB 的 分片(10MB)进度效果展示 大文件分片上传效果展示 前端 思路 前端的思路:将大文件切分成多个小文件,然后并发给后端。 页面构建 先在页…...

性能测试 —— Jmeter分布式测试的注意事项和常见问题
Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠性。 Jmeter分布式测试时需要特别注意的几个方面 1. 参数化文件的位置和内容 如果使用csv文件进行参数化&#x…...

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用
近年来,国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究,他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合,评价不同类型研究区的生态脆弱特征,其研究内容…...

总结|哪些平台有大模型知识库的Web API服务
截止2023/12/6 笔者个人的调研,有三家有大模型知识库的web api服务: 平台类型文档数量文档上传并解析的结构api情况返回页码文心一言插件版多文档有问答api,文档上传是通过网页进行上传有,而且是具体的chunk id,需要设…...

TOMCAT9安装
1、官网下载 2、解压到任意盘符,注意路径不要有中文 3、环境变量 path 下 配置 %CATALINA_HOME%\bin 4、找到tomcat9/bin, 点击 start.bat启动 tomcat...

QT中时间时区处理总结
最近项目中要做跨国设备时间校正功能,用到了时区时间,在此做一下记录。 目录 1.常见时区名 2.测试代码 3.运行效果 1.常见时区名 "Pacific/Midway": "中途岛 (UTC-11:00)", …...

OpenAtom OpenHarmony三方库创建发布及安全隐私检测
OpenAtom OpenHarmony 三方库(以下简称“三方库”或“包”),是经过验证可在 OpenHarmony 系统上可重复使用的软件组件,可帮助开发者快速开发 OpenHarmony 应用。三方库根据其开发语言分为 2 种,一种是使用 JavaScript …...

【1】一文读懂PyQt简介和环境搭建
目录 1. PyQt简介 1.1. Qt 1.2. PyQt 1.3. 关于PyQt和PySide 2. 通过pip安装PyQt5 3. 无法运行处理 4. VSCode配置PYQT插件 PyQt官网:Riverbank Computing | Introduction 1. PyQt简介 PyQt是一套Python的GUI开发框架,即图形用户界面开发框架。 Python中经常使用的GU…...

windows install git
refer: https://developers.weixin.qq.com/miniprogram/dev/devtools/wechatvcs.html https://blog.csdn.net/weixin_40228200/article/details/128451324 在使用小程序的时候,需要初始化项目,需要注册Git账号 1.在本地确认cmd没有安装Git,进入Git官网…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...