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;

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

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

相关文章

【elk-day01】es和kibana搭建及验证---Mac-Docker

Mac系统使用Docker下载搭建和验证eskibana Docker下载安装es安装es验证kibana安装kibana验证 Docker下载安装 Docker Desktop官网安装下载地址 说明一下为什么要安装desktop版本的docker&#xff0c;因为docker作为工具使用&#xff0c;我们需要的是开箱即用&#xff0c;没有必…

QT中的信号与槽的讲解

文章目录 信号及其特点槽及其特点代码演示标准信号与标准槽函数方式一方式二 自定义信号和槽connect()函数信号和槽函数存在函数重载的情况下Qt的信号槽机制注意事项 信号及其特点 信号&#xff1a;是一种特殊的函数&#xff0c;又称信号函数&#xff0c;俗称信号&#xff0c;…

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 &#xff0c;作者CUGGZ 近日&#xff0c;Vue 新一代开发者工具&#xff08;DevTools&#xff09;正式开源&#xff01;Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具&#xff0c;它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…

第九部分 图论

目录 例 相关概念 握手定理 例1 图的度数列 例 无向图的连通性 无向图的连通度 例2 例3 有向图D如图所示&#xff0c;求 A, A2, A3, A4&#xff0c;并回答诸问题&#xff1a; 中间有几章这里没有写&#xff0c;感兴趣可以自己去学&#xff0c;组合数学跟高中差不多&#xff0c…

记录汇川:MODBUS TCP-梯形图

H5U的MODBUS通信不需要编写程序&#xff0c;通过组态MODBUS通信配置表&#xff0c;实现数据通信。 Modbus-TCP 主站即Modbus-TCP客户端&#xff0c;通过Modbus-TCP配置&#xff0c;可最多支持同时与31个 Modbus-TCP服务器&#xff08;从站&#xff09;进行通讯。 …

【51单片机系列】DS18B20温度传感器模块

本文是关于温度传感器的相关内容。 文章目录 一、 DS18B20数字温度传感器介绍1.1、 DS18B20温度传感器的特点1.2、DA18B20内部结构1.3、 DS18B20的温度转换规则1.4、 DS18B20的ROM指令表1.6、 计算温度1.7、 读写时序 二、DS18B20使用示例 一、 DS18B20数字温度传感器介绍 DS1…

CloneNotSupportedException的解决方案 + Object的clone方法分析

CloneNotSupportedException的解决方案 引入问题&#xff1a; 在一次测试clone方法时&#xff0c;D类Override了Object类的clone方法 public class D {private Integer A1;private Integer A2;public D() {}public D(Integer a1, Integer a2 {A1 a1;A2 a2;}Overrideprotec…

Vlan的封装模式和端口讲解(Access、Trunk、Hypbrid端口)

目录 Vlan的封装模式 ISL协议 802.1Q协议 二层接口类型 Access接口 Trunk接口 Hybrid接口 不同Vlan之间的通信 Vlan的作用&#xff08;Vlan工作于OSI参考模型的第二层&#xff09; Vlan&#xff08;Virtual Local Area Network&#xff09;虚拟局域网&#xff0c;将一个…

公司电脑文件加密系统——防止内部核心文件数据 | 资料外泄,自动智能透明加密保护

一套从源头上保障企业电脑数据安全和电脑使用安全的加密软件。天锐绿盾加密软件包含了表格数据加密、图纸加密、文档文件加密、内网文件加密流转、密级管控、电脑离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。天锐绿盾加密系统全面覆盖Mac、Win…

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

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

用CSS中的动画效果做一个转动的表

<!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title></title><style>*{margin:0;padding:0;} /*制作表的样式*/.clock{width: 500px;height: 500px;margin:0 auto;margin-top:100px;border-rad…

力扣:62. 不同路径(动态规划,附python二维数组的定义)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

使用vmware,在ubuntu18.04中使用笔记本的摄像头

步骤1&#xff1a;在windows中检查相机状态 win10系统中&#xff0c;在左下的搜索栏&#xff0c;搜索“相机”&#xff0c;点击进入即可打开相机&#xff0c;并正常显示图像。 注意&#xff1a;如果相机连接到了虚拟机&#xff0c;则不能显示正常。 步骤2&#xff1a;在ubuntu…

百度沧海文件存储CFS推出新一代Namespace架构

随着移动互联网、物联网、AI 计算等技术和市场的迅速发展&#xff0c;数据规模指数级膨胀&#xff0c;对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板&#xff0c;只能适应有限的场景&#xff1a; >> 新型分布式…

Vue.js学习笔记(1)——Visual Studio Code搭建Vue.js框架

1 安装Node.js 1、下载安装包&#xff1a;进入官网&#xff08;https://nodejs.org/en&#xff09;&#xff0c;下载左侧的稳定版。 2、选择安装位置&#xff0c;不用勾选自动安装必要工具。 其他都默认Next。 配置环境&#xff0c;具体参考本文章&#xff1a; https://blo…

性能测试-jmeter:安装 / 基础使用

一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具&#xff0c;主要用于模拟大量用户并发访问目标服务器&#xff0c;以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请…

Markdown之EBNF语法介绍(二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

2023 年中国金融级分布式数据库市场报告:TiDB 位列领导者梯队,创新能力与增长指数表现突出

近日&#xff0c;沙利文联合头豹研究院发布了中国数据库系列报告之《2023 年中国金融级分布式数据库市场报告》。 报告认为&#xff0c;金融行业对于分布式数据库信任度与认可度正在逐步提高&#xff0c;中国金融级分布式数据库市场正处于成熟落地的高增长阶段&#xff0c;行业…

Ubuntu安装K8S的dashboard(管理页面)

原文网址&#xff1a;Ubuntu安装k8s的dashboard&#xff08;管理页面&#xff09;-CSDN博客 简介 本文介绍Ubuntu安装k8s的dashboard&#xff08;管理页面&#xff09;的方法。 Dashboard的作用有&#xff1a;便捷操作、监控、分析、概览。 相关网址 官网地址&#xff1a;…

Android Studio如何创建尺寸大小及API通用的模拟器

目录 前言 一、操作步骤 二、总结 三、更多资源 前言 在开发移动应用程序的过程中&#xff0c;使用模拟器进行测试是一种常见和方便的方式。Android Studio是一款功能强大的集成开发环境&#xff0c;它提供了创建和管理模拟器的功能。在本文中&#xff0c;我们将介绍如何创…