MySQL常用SQL

news2024/9/22 7:39:26

目录

库操作 

查询数据库

创建数据库

 删除数据库

 选择数据库

表操作

查看表

创建表

 查看表结构

 查看建表sql

删除表 (整表删除)

 CRUD操作

insert增加 

 update修改

delete删除

select查询

去重distinct

空值查询

union合并查询

带in子查询

分页查询

排序order by

分组group by

聚合函数

查看SQL语句的执行计划

实战例子:


SQL主要可以划分为以下 3 个类别:

         DDL(Data Definition Languages)语句 数据定义语言,这些语句定义了不同的数据库、表、列、索引等数据库对象的定义。常用的语句关 键字主要包括 create、drop、alter等。

        DML(Data Manipulation Language)语句 数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字 主要包括 insert、delete、update 和select 等。

        DCL(Data Control Language)语句 数据控制语句,用于控制不同的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户 的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

库操作 

查询数据库

show databases;

创建数据库

create database ChatDB;

 删除数据库

drop database ChatDB;

 选择数据库

use ChatDB;

表操作

查看表

show tables;

创建表

create table user(id int unsigned primary key not null auto_increment,

                                name varchar(50) not null,

                                age tinyint not null,

                                sex enum('M','W') not null) engine=INNODB default charset=utf8;

 查看表结构

desc user;

 查看建表sql

show create table user\G (\G 结尾是按分行形式查看  ;结尾是按表格显示)

删除表 (整表删除)

 drop table user;

 CRUD操作

insert增加 

insert into user(nickname, name, age, sex) values('fixbug', 'zhang san', 22, 'M');

insert into user(nickname, name, age, sex) values('666', 'li si', 21, 'W'), ('888', 'gao yang', 20, 'M');


insert into user(nickname, name, age, sex) values('fixbug', 'zhang san', 22, 'M'),('fixbug', 'zhang san', 22, 'M'),('fixbug', 'zhang san', 22, 'M'),('fixbug', 'zhang san', 22, 'M'),('fixbug', 'zhang san', 22, 'M');

多行一起插入,优势在于减少client与server连接的过程,性能提升

 update修改

update user set age=23 where name='zhang san';
update user set age=age+1 where id=3;

delete删除

delete from user where age=23;
delete from user where age between 20 and 22;
delete from user;

select查询

select * from user;
select id,nickname,name,age,sex from user;
select id,name from user;
select id,nickname,name,age,sex from user where sex='M' and age>=20 and age<=25;
select id,nickname,name,age,sex from user where sex='M' and age between 20 and
25;
select id,nickname,name,age,sex from user where sex='W' or age>=22;

去重distinct

select distinct name from user;

空值查询

select * from user where name is null;

union合并查询

默认去重,不用修饰distinct

SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY
country;

带in子查询

select * from user where id in(10, 20, 30, 40, 50)
select * from user where id not in(10, 20, 30, 40, 50)
select * from user where id in(select stu_id from grade where average>=60.0)

分页查询

加了一些范围 限制  (没有索引的时候且需要的数据行数知道)

select id,nickname,name,age,sex from user limit 10;
select id,nickname,name,age,sex from user limit 2000,10; (偏移,行数)

 limit对于性能优化也有好处,比如说limit 1,当在表中查到我们想要第一个的结果就停止了

实际过程中:

 pageno:页数 ,通过设置偏移量 ,产看当前页有我们的数据 (效率低,偏移消耗效率)

         

排序order by

select id,nickname,name,age,sex from user where sex='M' and age>=20 and age<=25
order by age asc; 升序
select id,nickname,name,age,sex from user where sex='M' and age>=20 and age<=25
order by age desc; 降序

分组group by

select sex from user group by sex;
select count(id),sex from user group by sex;
select count(id),age from user group by age having age>20;
select age,sum(age) sum from user group by age;

将相同类型的分组,再通过Mysql的聚合函数

聚合函数

count、sum、avg、max、min

查看SQL语句的执行计划

explain + sql语句

实战例子:

 1. 

select count(serno), sum(amount) from bank_bill;

 2.

select brno,date,sum(amount) as money from bank_bill group by brno,date order by brno,money desc;

 连接查询(多表联合查询)

 

 

 定义三张表:

        第一张表 学生信息 ; 第二张表 课程信息 ; 第三张表 考试分数

        第三张表通过 添加关联父表的主键 联系起来

 

 内连接查询 :

SELECT a.属性名1,a.属性名2,...,b,属性名1,b.属性名2... FROM table_name1 a inner join table_name2 b on a.id = b.id where a.属性名 满足某些条件;

 预置条件:uid:1    cid :2

select score from exame where uid=1 and cid=2;

(可以直接通过加a.的方式区分)
select a.uid,a.name,a.age,a.sex from student a where a.uid=1;

select c.score from exame c where c.uid=1 and c.cid=2;

// on a.uid=c.uid 区分大表 和 小表,按照数据量来区分,小表永远是整表扫描,然后去大表搜索  索引加在大表上

// 从student小表中取出所有的a.uid,然后拿着这些uid去exame大表中搜索

// 对于inner join内连接,过滤条件写在where的后面和on连接条件里面,效果是一样的

select a.uid,a.name,a.age,a.sex,c.score from student a inner join exame c on a.uid=c.uid where c.uid=1 and c.cid=2;

select a.uid,a.name,a.age,a.sex,b.cid,b.cname,b.credit,c.score
from exame c
inner join student a on c.uid=a.uid
inner join course b on c.cid=b.cid
where c.uid=1 and c.cid=2;

select a.uid,a.name,a.age,a.sex,b.cid,b.cname,b.credit,c.score
from exame c
inner join student a on c.uid=a.uid
inner join course b on c.cid=b.cid
where c.cid=2 and c.score>=90.0;


select b.cid,b.cname,b.credit,count(*)
from exame c
inner join course b on c.cid=b.cid
where c.score>=90.0
group by c.cid
having c.cid=2;


select b.cid,b.cname,b.credit,count(*) cnt
from exame c
inner join course b on c.cid=b.cid
where c.score>=90.0
group by c.cid
order by cnt;

外连接查询


外连接的条件过滤应该写在on的后面

左连接查询

SELECT a.属性名列表, b.属性名列表
 FROM table_name1 a LEFT [OUTER] JOIN table_name2 b 
 on a.id = b.id;

// 把left这边的表所有的数据显示出来,在右表中不存在相应数据,则显示NULL
select a.* from User a left outer join Orderlist b 
on a.uid=b.uid where a.orderid is null;


右连接查询

SELECT a.属性名列表, b.属性名列表 
FROM table_name1 a RIGHT [OUTER] JOIN table_name2 b 
on a.id = b.id

// 把right这边的表所有的数据显示出来,在左表中不存在相应数据,则显示NULL
select a.* from User a right outer join Orderlist b 
on a.uid=b.uid where b.orderid is null;
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器从输入URL到页面渲染加载的过程(浏览器知识体系整理)

文章目录 前言一、梳理主干流程二、浏览器接收url并开启一个新进程1. 浏览器是多进程的2. 浏览器内核是多线程的3. JS引擎单线程的原因4. GUI渲染线程与JS引擎线程互斥 二、解析URL三、DNS域名解析1. DNS是什么&#xff1f;2. IP和域名的关系3. 域名服务器概念图4. DNS域名解析…

使用 OpenCV 进行基于 ESP32 CAM 的目标检测和识别

概述:基于 ESP32 CAM 的目标检测和识别 本教程介绍了使用OpenCV基于 ESP32 CAM的目标检测和识别主题。OpenCV 是一个开源的图像处理库,不仅在工业界而且在研发领域都得到了非常广泛的应用。 这里对于对象检测,我们使用了cvlib 库。该库使用 COCO 数据集上的预训练 AI 模型…

Flume系列:Flume Sink使用

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;HDFS Sink HDFS小文件的处理 HDFS存入大量小文件的影响&#xff1a; HDFS小文件处理&#xff1a; 2&#xff1a;logger Sink 3&#xff1a;写入Kafka - 可以使用kafka channel代替 Apache Hadoop生态-目录汇总-持…

力扣sql中等篇练习(十八)

力扣sql中等篇练习(十八) 1 银行账户概要 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT u.user_id,u.user_name,u.creditIFNULL(t1.c1,0) credit,case when u.creditIFNULL…

分享一个无需账号完全免费的 ChatGPT-4 的平台

AIGC从入门到精通教程 1. 访问 SteamShip2. 进入创建页面,选择新建一个 GPT-4 实例。3. 完成创建后,您便可以尽情体验 GPT-4本教程收集于: AIGC从入门到精通教程 大家都知道,ChatGPT4.0是要订阅Plus(一个月20美元)后才能体验的。 今天就给大家弄一个白嫖ChatGPT4.0的教程…

DEJA_VU3D - Cesium功能集 之 107-卫星探测效果

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,…

c++STL之常用的算法

目录 常用的遍历算法 for_each() transform() for_each()和transform&#xff08;&#xff09;算法比较 常用的查找算法 adjacent_find() binary_search count() count_if() find() 常用的排序算法 merge() sort() random_shuffle() reverse() 常用的拷…

基于`IRIS`,动态解析`HL7`消息

文章目录 基于IRIS&#xff0c;动态解析HL7消息什么是HL7HL7 版本HL7 消息结构段&#xff08;Segment&#xff09;字段&#xff08;Field&#xff09; HL7 数据类型在IRIS中查看HL7数据结构传统方式拼写HL7消息结构动态对象解析HL7消息结构。 基于IRIS&#xff0c;动态解析HL7消…

SpringCloud:微服务保护之隔离和降级

1.FeignClient整合Sentinel SpringCloud中&#xff0c;微服务调用都是通过Feign来实现的&#xff0c;因此做客户端保护必须整合Feign和Sentinel。 1.1.修改配置&#xff0c;开启sentinel功能 修改OrderService的application.yml文件&#xff0c;开启Feign的Sentinel功能&…

详细版易学版TypeScript - 类

一、类 - 类的属性和方法 class MyPreson {// 类的属性// 属性需要在类里先定义并确定类型&#xff0c;才可以在constructor里面用this访问name: stringage: numberconstructor(name: string, age: number) {this.name name;this.age age;}// 类的方法sendStr(str: string) {…

工业4.0时代来临,POWERLINK协议在千兆网卡下的性能

“工业 4.0”的高歌猛进&#xff0c; “智能制造”&#xff0c;“智慧工厂”的呼声越来越响亮。这些需求使得数据传输量越来越大&#xff0c;实时性越来越高&#xff0c;因此我们将 POWERLINK 从 100Mbps 升级到1000Mbps。测试下POWERLINK这种工业总线协议的性能&#xff0c;最…

jest基础指示

describ&#xff08;类似java中的class&#xff0c;在这里定义的变量可以在所有it中使用&#xff09; 针对某一方面的测试&#xff0c;一个描述性的东西&#xff0c;针对某一个方面的测试&#xff0c;或者说是一个作用域 一组测试用例的集合。 有两个参数&#xff0c;参数1 &…

Vue 3.0 学习笔记

Vue 3 学习笔记 文章目录 Vue 3 学习笔记[toc]一、初识vue3二、 常用Composition API&#xff08;组合式API&#xff09;**1. setup函数****2. ref函数****3. reactive函数****4. Vue3.0中的响应式原理****Vue2.x的响应式****Vue3.x的响应式** **5. reactivce对比ref****6. set…

为什么我在大厂待了三个月就选择离开?我聊聊应届生该选择大厂还是小公司

我在互联网大厂只待了3个月就离开了&#xff0c;主要原因不是大厂的福利或者薪资不够好&#xff0c;只是因为我发现在大厂里每天都有开不完的会&#xff0c;忙碌到没有自己的生活。当时我每天10点上班&#xff0c;晚上要工作到11甚至是12点&#xff0c;甚至半夜两三点都接到过工…

LangChain-Agents 入门指南

LangChain-Agents 入门指南 LangChain-Agents 入门指南注册 Serpapi运行高级 Agents API 测试运行 Google Search其它 Here’s the table of contents: LangChain-Agents 入门指南 LangChain是一个使用LLMs构建应用程序的工具箱&#xff0c;包含Models、Prompts、Indexes、Mem…

Vue3-黑马(二)

目录&#xff1a; &#xff08;1&#xff09;vue3-ref与reactive &#xff08;2&#xff09;vue3-基础-属性绑定与事件绑定 &#xff08;3&#xff09;vue3-基础-表单绑定 &#xff08;1&#xff09;vue3-ref与reactive ref函数可以把普通的数据变成响应式的数据&#xff0…

Firewall Testing Checklist 分析

不管是在服务器、云技术、嵌入式、车载等场景&#xff0c;防火墙的作用尤为重要&#xff0c;下面从信息收集、管理审核流程、操作系统安全、已实现规则和检查配置&#xff0c;这五个方面来进行分析firewall的具体作用和能力&#xff0c;然后提供一些实用的网络firewall工具给大…

【Spring框架全系列】SpringBoot配置文件相关操作

&#x1f307;哈喽&#xff0c;大家好&#xff0c;我是小浪。上篇博客我们已经学习了如何创建一个Spring项目&#xff0c;那么创建Spirng项目还可以直接通过在Spring官网的方式来创建&#xff0c;做法也非常的简单&#xff0c;感兴趣的小伙伴可以在C站搜个教程尝试一下&#xf…

22年广东河南省赛-隐藏信息探索

任务十: 1、访问服务器的FTP服务,下载图片QR,从图片中获取flag,并将flag提交; QR.png的内容如下,可以看到,找到二维码的前三块都被反转了,需要反转回来,把这个二维码做成一个正方形,使用截图工具分隔、配合画图工具拼接+旋转。平均分为4块,分出4个方块。即可。 2、…

django 基本使用

django 下载 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django查看版本 django-admin --version 4.2.1创建项目 django-admin startproject project创建一个 app python manage.py startapp app注册 app project/settings # app名称.apps.app名称Config…