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

Mysql 容易忘的 sql 指令总结

目录

一、操作数据库的基本指令

二、查询语句的指令

1、基本查询语句

2、模糊查询

3、分支查询

4、 分组查询

5、分组查询

6、基本查询总结:

7、子查询

8、连接查询

三、MySQL中的常用函数

1、时间函数

2、字符串函数

3、聚合函数

4、运算函数

         四、表的操作指令

五、权限管理的指令

六、SQL 优化中使用的指令

(1)索引的使用

1、创建索引

2、查看索引

3、测试索引

4、删除索引

(2)存储引擎的相关指令

1、查看表引擎

2、修改表引擎


一、操作数据库的基本指令

-- 连接mysql数据库

-- mysql -u用户名 -p密码

mysql -uroot -p123456

-- 查看所有数据库

show databases;

-- 创建数据库 默认编码为utf8

-- create database 数据库名;

create database java11;

-- 创建数据库 指定编码格式

-- create database 数据库名 character set 编码格式;

create database java111 character set 'gbk';

-- 创建数据库 判断数据库不存在再创建

create database if not exists java111 character set 'gbk';

-- 查看数据库的创建信息

-- show create database 数据库名;

show create database java11;

-- 删除数据库

-- drop database 数据库名;

drop database java11;

-- 删除数据库 如果存在才删除

-- drop database if exists 数据库名;

drop database if exists java11;

-- 修改数据库

-- alter database 数据库名 character set '字符集'

alter database java111 character set 'utf8';

-- 查看当前使用的数据库

select database();

-- 连接数据库

-- use 数据库名;

use java111;

二、查询语句的指令

1、基本查询语句

-- 查询不是10部门的员工信息

select * from t_employees where DEPARTMENT_ID <> 10; -- <> 也是 != 的意思

select * from t_employees where DEPARTMENT_ID != 10;

-- 查询工资在 10000 到 15000之间的员工信息

-- between 起始值 and 终止值 包含起始值和终止值

-- 写法1: select * from t_employees where salary > 10000 and salary < 15000;

-- 写法2: select * from t_employees where SALARY BETWEEN 10001 and 14999;

2、模糊查询

-- 模糊条件(like not like)

-- 占位符 % 表示0个或多个任意字符 _表示一个任意字符

-- 查询所有员工姓氏中包含'S'的员工信息

select * from t_employees where last_name like 's'; -- 此时的like相当于=号

select * from t_employees where last_name like '%S%'; -- 查询所有员工姓氏中'S'开头的员工信息 select * from t_employees where last_name like 'S%';

-- 查询所有员工姓氏中第二个字母为'S'的员工信息

select * from t_employees where last_name like '_S%';

-- 查询所有员工姓氏中'S'开头并且姓氏的长度至少7个字符的员工信息

select * from t_employees where last_name like 'S%' and last_name like '%___%';  -- 7个_

-- 查询所有员工姓氏中不包含'S'的员工信息

select * from t_employees where last_name not like '%S%';

3、分支查询

-- 分支查询,相当于构建一个字段

/*

case when 条件1 then 结果1

        when 条件2 then 结果2

        when 条件3 then 结果3

        ...

        else 不满足条件的结果

end 别名

*/

-- 查询所有的员工信息,工资按照登记划分(12000以上A类、10000以上B类、8000以上C类、5000以上D类、其他E类)

select last_name,salary, case when salary > 12000 then 'A类'

                                                when salary > 10000 then 'B类'

                                                when salary > 8000 then 'C类'

                                                when salary > 5000 then 'D类'

                                                else 'E类'

                end salGrade from t_employees;

4、 分组查询

-- 语法1: select 列1,列2,.. from 表名 group by 分组字段

-- 语法2: select 列1,列2,.. from 表名 group by 分组字段 having 分组条件

-- 查询2018年的各渠道的消费数量

select CHANNEL_CODE,count(1) from user_order uo group by channel

having ORDER_DATE ='2018-01-01';

-- 注意:上述语句会报错,因为having 的分组条件是基于查询的列来进行筛选的,select 查询的列中并没有 order_date 这一列,所以就不能在 having 中判断该条件。

-- 正确写法

select CHANNEL_CODE,count(1) from user_order uo where ORDER_DATE ='2018-01-01'

group by channel

5、分组查询

-- 分页查询

-- 语法1: select 列1,列2,.. from 表名 limit m m表示查询的条数(默认从第一条开始查询)

-- 语法2: select 列1,列2,.. from 表名 limit n,m n表示起始位置(默认从0开始),m表示查询的条数

-- 总结:

当前页currentPage、每一页条数pageSize -- 分页公式 (currentPage-1)*pageSize,pageSize

6、基本查询总结:

/*

SQL的 编写顺序 :select from where group by having order by limit

SQL的 执行顺序 :①from ②where ③group by ④having ⑤select ⑥order by ⑦limit

*/

7、子查询

-- 子查询:在一个查询语句中嵌套另个查询语句,一般都在 from 或者 where 之后使用。

/*

子查询用在where从句后面:

        子查询的结果为:

                单行单列:可以直接比较

                多行单列: in >all大于最大 <all小于最小 >any 大于最小 <any 小于最大

        子查询用在from从句后面: 多行多列:注意:必须要取别名

*/

8、连接查询

连接查询的分类:

        内连接 特点:左表中的数据必须要与右表的中的数据关联,才会被查询出来。

                语法1:select 列1,列2,... from 左表,右表 where 左表.关联字段 = 右表.关联字段;

                语法2:select 列1,列2,... from 左表 [inner] join 右表 on 左表.关联字段 = 右表.关联字段;

        外连接

                左外连接

                        特点:左表中的数据如果没有与右表关联,那么也会被查询出来,右表中的数

                                   据用null表示

                        语法:select 列1,列2,... from 左表 left join 右表 on 左表.关联字段 = 右表.关联字段;                 右外连接

                        特点:右表中的数据如果没有与左表关联,那么也会被查询出来,左表中的数据用

                                   null表示

                        语法:select 列1,列2,... from 左表 right join 右表 on 左表.关联字段 = 右表.关联字

                                   段;

        全连接

                合并查询

                        UNION:合并两张表的数据,并且会去重

                        UNION ALL:合并两张表的数据,不会去重

                        注意:合并两个查询结果,要保证两个查询的列数相同,数据类型要兼容

三、MySQL中的常用函数

1、时间函数

-- 获取系统当前的日期时间

select sysdate();

-- 获取系统当前的日期时间

select now();

-- 获取系统当前的日期 select curdate();

-- 获取系统当前的时间 select curtime();

-- 获取时间的年份 select year('2021-02-22');

-- 计算两个时间的差值 select datediff(sysdate(),'2021-10-20');

-- 在指定的日期上添加指定的天数 select adddate(sysdate(),25);

2、字符串函数

-- 拼接字符串

select concat('hello','world','!');

-- 查询所有员工的姓名

select CONCAT(last_name," ",first_name) name from t_employees;

-- 将'hello,java!!' 改为 'hello,mysql!!'

select insert('hello,java!!',7,4,'mysql');

-- 将字符串变成小写形式

select lower('HELLO');

-- 将字符串变成大写形式

select upper('hello');

-- 截取字符串

select substr('hello,java!!!',7,4);

-- 判断字符串中是否有该子串

select instr('hello,java!!!','java');

3、聚合函数

-- sum函数

-- 查询公司一个月要支付的员工费用(工资+绩效)

select sum(salary + salary * ifnull(COMMISSION_PCT,0)) from t_employees;

-- avg函数

-- 查询公司的员工平均工资 select avg(salary) from t_employees;

-- max函数

-- 查询公司的最高工资 select max(salary) from t_employees;

-- min函数

-- 查询公司最低的工资 select min(salary) from t_employees;

-- count函数 表示所有列 count函数只会统计指定的列不为null的列

-- 查询公司的总人数

select count(1) from t_employees; select count(1) from t_employees;

-- 注意:在使用 min() 和 max() 查询的时候,不要再查询其他字段的数据,因为这样查询没有意义,它会返回这一列数据的第一条数据

-- select min(salary),last_name from t_employees; -- 不正确写法

4、运算函数

-- 将运算结果已百分比形式展示,round 保留小数位

select concat(ROUND(IFNULL(a.price,0) / (IFNULL(a.total_price,0))*100,2),'%') priceRate

from user_order a;

-- ifnull() 和 is null 的区别

ifnull() 是一个函数,用来判断空值然后给一个默认值,一般用于 select 查询字段。

is null 是用来判断该值是否为空,一般用于 where 判断条件。

四、表的操作指令

-- 查询当前数据所有表

-- show tables;

-- 查看表结构

-- desc 表名

desc emp;

-- 创建表

/*

create table 表名( 字段名1 字段类型 [约束], 字段名2 字段类型 [约束], 字段名3 字段类型 [约束], ... );

*/

create table student(

        ID int primary key auto_increament, -- 主键并且自增 => 主键:非空+唯一

        NAME varchar(25) default 'cxk', -- 设置默认值

        AGE int not null, -- 不能为空

        ADDR varchar(25) unique -- 唯一 可以为空

)

insert into user (ID,AGE,ADDR) values (1,20,null)

-- 删除表

-- 语法: drop table 表名;

-- 语法: drop table if exists 表名;

drop table if exists student;

-- 修改表

-- 修改表名

-- 语法:alter table 表名 rename 新的表名

alter table student rename user;

-- 添加列

-- 语法:alter table 表名 add 字段名 数据类型

alter table student add birthday datetime;

-- 修改列数据类型

-- 语法: alter table 表名 modify 字段名 数据类型

alter table student modify birthday date;

-- 删除列

-- 语法:alter table 表名 drop 字段名

alter table student drop age;

-- 修改列名

-- 语法: alter table 表名 change 旧字段名 新字段名 数据类型

alter table student change name sname varchar(50);

五、权限管理的指令

-- 创建用户

-- 语法:create user 用户名 identified by 用户密码

create user 'cxk' identified by '123456';

-- 用户授权

-- 语法:grant 权限名称(select、update、insert、alter、create..) on 数据库.数据表 to 用户

 grant all on . to 'cxk'; grant select on java11.emp to 'cxk';

-- 回收权限

-- 语法:revoke 权限名称(select、update、insert、alter、create..) on 数据库.数据表 from 用户 revoke select on java11.emp from 'cxk';

-- 删除用户

-- 语法: drop user 用户名

drop user 'cxk';

六、SQL 优化中使用的指令

(1)索引的使用

1、创建索引

-- 主键索引:设置为主键默认创建

-- 普通索引(单字段)

-- create index 索引名称 on 表名(字段名)

-- 普通索引(多字段)

-- create index 索引名称 on 表名(字段1,字段2)

-- 唯一索引

-- create unique index 索引名称 on 表名(字段名)

-- 全文索引

-- create fulltext index 索引名称 on 表名(字段名)

-- 示例:为 if_member 列创建索引

create index member on user_order(if_member)

2、查看索引

show create table table_name; -- 展示表的创建信息

show indexes from table_name;

show keys from table_name;

3、测试索引

explain select * from 表名 where 条件;

4、删除索引

drop index index_name on 表名;

(2)存储引擎的相关指令

1、查看表引擎

-- 查看表的创建信息

show create table tablename;

-- 查看该数据库下每张表的引擎

SHOW TABLE STATUS FROM db_name;

-- 查看该数据库下指定数据表的引擎

SHOW TABLE STATUS FROM db_name WHERE NAME='table_name';

2、修改表引擎

alter table table_name engine=innodb;

alter table table_name engine=myisam;

相关文章:

Mysql 容易忘的 sql 指令总结

目录 一、操作数据库的基本指令 二、查询语句的指令 1、基本查询语句 2、模糊查询 3、分支查询 4、 分组查询 5、分组查询 6、基本查询总结&#xff1a; 7、子查询 8、连接查询 三、MySQL中的常用函数 1、时间函数 2、字符串函数 3、聚合函数 4、运算函数 四、表…...

【SD】tile 模型 - 固定衣服 生成人物 ☑

原理1&#xff1a;tile re 生成固定衣服的人物 tile1-1 re1-1 原理2&#xff1a;tile re 生成随机衣服的人物 tile0.5-1 re0.5-1 原理3&#xff1a;更改动作 必须使用衣服LORA 才可以进行穿衣服 测试大模型&#xff1a;###最爱的模型\meinamix_meinaV11.safe…...

StackOverflowError的JVM处理方式

背景&#xff1a; 事情来源于生产的一个异常日志 Caused by: java.lang.StackOverflowError: null at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:908) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.ArrayL…...

基于DFA算法实现敏感词过滤

何为DFA DFA&#xff0c;全称为Deterministic Finite Automaton&#xff0c;即确定有穷自动机、确定有限状态自动机或确定有限自动机 对于一个给定的属于该自动机的状态和一个属于该自动机字母表Σ的字符&#xff0c;它都能根据事先给定的转移函数转移到下一个状态&#xff0…...

模式识别与机器学习-无监督学习-聚类

无监督学习-聚类 监督学习&无监督学习K-meansK-means聚类的优点&#xff1a;K-means的局限性&#xff1a;解决方案&#xff1a; 高斯混合模型&#xff08;Gaussian Mixture Models&#xff0c;GMM&#xff09;多维高斯分布的概率密度函数&#xff1a;高斯混合模型&#xff…...

Python中property特性属性是什么

在Java中&#xff0c;通常在类中定义的成员变量为私有变量&#xff0c;在类的实例中不能直接通过对象.属性直接操作&#xff0c;而是要通过getter和setter来操作私有变量。 而在Python中&#xff0c;因为有property这个概念&#xff0c;所以不需要写getter和setter一堆重复的代…...

vue3 全局配置Axios实例

目录 前言 配置Axios实例 页面使用 总结 前言 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它提供了一种简单、一致的 API 来处理HTTP请求&#xff0c;支持请求和响应的拦截、转换、取消请求等功能。关于它的作用&#xff1a; 发起 HTTP …...

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.【EI级】 Matlab实现TCN-BiGRU-Mult…...

WeNet语音识别分词制作词云图

在线体验 ,点击识别语音需要等待一会&#xff0c;文件太大缓存会报错 介绍 本篇博客将介绍如何使用 Streamlit、jieba、wenet 和其他 Python 库&#xff0c;结合语音识别&#xff08;WeNet&#xff09;和词云生成&#xff0c;构建一个功能丰富的应用程序。我们将深入了解代码…...

Proxyman:现代本地Web调试代理工具

1. 简介 1.1 什么是Proxyman&#xff1f; Proxyman是一款专为macOS设计的现代本地Web调试代理工具&#xff0c;它不仅支持macOS平台&#xff0c;还能无缝地与iOS和Android设备进行集成。作为一个网络调试工具&#xff0c;Proxyman的设计旨在提供高性能、直观且功能丰富的解决…...

k8s中DaemonSet实战详解

一、DaemonSet介绍 DaemonSet 的主要作用&#xff0c;是在 Kubernetes 集群里&#xff0c;运行一个 Daemon Pod。DaemonSet 只管理 Pod 对象&#xff0c;然后通过 nodeAffinity 和 Toleration 这两个调度器参数的功能&#xff0c;保证了每个节点上有且只有一个 Pod。 二、Daem…...

信号处理设计模式

问题 如何编写信号安全的应用程序&#xff1f; Linux 应用程序安全性讨论 场景一&#xff1a;不需要处理信号 应用程序实现单一功能&#xff0c;不需要关注信号 如&#xff1a;数据处理程序&#xff0c;文件加密程序&#xff0c;科学计算程序 场景二&#xff1a;需要处理信…...

Linux权限的基本理解

一:&#x1f6a9;Linux中的用户 1.1&#x1f966;用户的分类 &#x1f31f;在Linux中用户可以被分为两种用户: 超级用户(root):可以在Linux系统中做各种事情而不被约束普通用户:只能做有限的事情被权限约束 在实际操作时超级用户的命令提示符为#,普通用户的命令提示符为$,可…...

AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲

【课程简介】 本课程介绍了chatGPT相关模型的具体案例实践&#xff0c;通过实操更好的掌握chatGPT的概念与应用场景&#xff0c;可以作为chatGPT领域学习者的入门到进阶级课程。 【课程时长】 1天&#xff08;6小时/天&#xff09; 【课程对象】 理工科本科及以上&#xff0…...

nat地址转换

原理 将内网地址转换成外网地址 方式 掌握动态NAT的配置方法 掌握Easy IP的配置方法 掌握NAT Server的配置方法 实验 r1 r2 是内网 ar1 ip地址 ip add ip地址 掩码 ip route-static 0.0.0.0 0 192.168.1.254 默认网关 吓一跳网关 相等于设置了网关 ar2 …...

第12课 循环综合举例

文章目录 前言一、循环综合举例1. 质数判断问题2. 百人百砖问题3. 猴子吃桃问题4. 质因数分解问题5. 数字统计问题。 二、课后练习2. 末尾3位数问题3. 求自然常数e4. 数据统计问题5. 买苹果问题。6. 找5的倍数问题。 总结 前言 本课使用循环结构&#xff0c;介绍了以下问题的解…...

Tuxera NTFS for Mac2024免费Mac读写软件下载教程

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…...

C++ 具名要求

此页面中列出的具名要求&#xff0c;是 C 标准的规范性文本中使用的具名要求&#xff0c;用于定义标准库的期待。 某些具名要求在 C20 中正在以概念语言特性进行形式化。在那之前&#xff0c;确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做&#xf…...

大创项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…...

C++初阶——基础知识(函数重载与引用)

目录 1.命名冲突 2.命名空间 3.缺省参数 4.函数重载 1.函数重载的特点包括&#xff1a; 2.函数重载的好处包括&#xff1a; 3.引用 引用的特点包括 引用的主要用途包括 引用和指针 引用 指针 类域 命名空间域 局部域 全局域 第一个关键字 命名冲突 同一个项目之间冲…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...