SQL必备知识(自用)

news/2024/4/18 19:46:56/文章来源:https://blog.csdn.net/weixin_43995844/article/details/129203691

数据库基础知识

    • sql和mysql的区别:
    • 数据库查询大全(select)
      • 1、select 字段名 from 表;
      • 2、In查询:用于过滤你所需要查询的内容
      • 3、范围查询:between
      • 4、模糊查询:like
      • 5、查询空值/非空:is null/not null
      • 6、去除重复结果:distinct
      • 7、多条件查询: and、or
      • 8、分组查询:查询的每个分组中首次出现的一条记录
      • 9、对查询结果排序:order by(默认升序)
      • 10、对查询结果数量进行限制:limit
    • Select+聚合函数:
      • (1)总数:count
      • (2)最大值:max
      • (3)最小值:min
      • (4)求和:sum
      • (5)平均值:AVG
      • (6)比较运算符
      • (7)模糊查询:like
      • (8)范围查询
      • (9)空判断
      • (10)优先级
      • (11)group by(分组)
      • (12)Order by(排序)
      • (13)from(表)+连接查询:
      • (14)查询去重:distinct
      • (15)所有、任一:all&any
    • MySQL常见命令:
        • (1)创建学生表 Student :
        • (2)插入数据:
        • (3)查询名字为张三的学生表数据:
        • (4)修改编号2的学生名字为李四:
        • (5) 删除名字为张三的学生:
        • (6)查询语文老师的名字:用inner join联查两个表
        • (7)统计语文成绩大于70的学生信息:
        • (8)统计各科分数大于80的人:
      • 2、mysql默认端口为:
      • 3、mysql索引:


sql和mysql的区别:

1、sql是一种数据库语言,而mysql是DBMS数据库管理系统;
2、SQL用于访问,更新和操作数据库中的数据,而mysql允许保持数据库中存在的数据;
3、sql的语言是固定的,而mysql可以获得频繁的更新。

数据库查询大全(select)

1、select 字段名 from 表;

2、In查询:用于过滤你所需要查询的内容

select 字段名 from 表名 where 字段名 in(具体内容)

3、范围查询:between

    select 字段名 from 表名 where 字段名 between 数值1 and 数值2Eg:查询当字段Salary范围在3000~5000时,字段Name和Salary的内容。select Name,Salary from t_emp where Salary between 3000 and 5000

4、模糊查询:like

    select 字段名 from 表名 where 字段名 like '模糊条件'模糊条件中”%”与”_”区别:“%a”:无论字符a前面有多少字符 ;”_a”:字符a前面只有一个字符。Eg:查询所有Name以字母,C为第二个字符,员工的Name和Salary的内容。select Name,Salary from t_emp where Name like '_C%'

5、查询空值/非空:is null/not null

    select 字段名 from 表名 where 字段名 is null

6、去除重复结果:distinct

    Eg:返回数据表中字段Name不重复的内容。select distinct Name from t_emp

7、多条件查询: and、or

    Select 字段名 from 表名 where 表达式1 and/or 表达式2

–查询10号部门,工资大于1000的员工信息
select * from emp where deptno=10 and sal>1000;
–查询10号部门,或者工资小于2000的员工信息
select * from emp where deptno=10 or sal<2000;

    in后面跟一个集合或者子查询

oracle中表示一个简单的集合 ,(元素,元素,… 元素) 例如 (1,2,3,4,5) (‘a’,‘b’,‘c’,‘d’)
–查询emp表中,工资是800,1600,或者3000的员工信息
select * from emp where sal in(800,1600,3000);

8、分组查询:查询的每个分组中首次出现的一条记录

    select 字段名 from 表名 group by 待分组的字段名

9、对查询结果排序:order by(默认升序)

    Select 字段名 from 表名 where 条件 order by 待排序字段名 asc/descasc:升序(默认值可省略)    desc:降序Eg:查询class_id为1的所有信息,以score降序的方式显示结果。select * from tb_score where class_id = 1 order by score desc

10、对查询结果数量进行限制:limit

    Select 字段名 from 表名 limit 偏移值 记录个数Eg:按成绩降序后查询班级中第2名到第5名的学生信息。select * from tb_score group by score desc limit  1,4注:偏移值默认为0,可不写,1代表从第一个数开始取,4代表共记录4个结果

Select+聚合函数:

(1)总数:count

    count(*):表示计算总行数,括号中写星与列名,结果相同

例1.查询登录系统学总数
select count(*) from StudentBindPaperTypeEntity
–查询员工表中的员工人数
select count(empno) from emp;

select count(*) from emp;

(2)最大值:max

    max(列):求此列的最大值

例2.求下表的最大编号
select max(StudentID) from StudentBindPaperTypeEntity
–查询10号部门的最高工资
select max(sal) from emp where deptno=10;

(3)最小值:min

    min(列):求此列的最小值

例3.求下表编号最小编号
select min(StudentID) from StudentBindPaperTypeEntity
–查询最低工资
select min(sal) from emp;

(4)求和:sum

    sum(列):求此列之和(注:sum运算符与数字类型连用)

例4.查询当前在线的学生(IsUse=0表示未在线,1表示在线)
select SUM(IsUse) from StudentBindPaperTypeEntity
–查询工资总和
select sum(sal) from emp;

(5)平均值:AVG

    avg(列) :表示求此列的平均值(注:avg运算符与数字类型连用)

例5:查询学生编号的平均数
select avg(StudentID) from StudentBindPaperTypeEntity
–查询员工的平均工资
select avg(sal) from emp;

(6)比较运算符

例1.查询学号>18832650890的学生
select * from StudentBindPaperTypeEntity where StudentID>18832650890
例2.查询学号!=18832650890的学生(<>同效)
select * from StudentBindPaperTypeEntity where StudentID!=18832650890

(7)模糊查询:like

    %表示任意多个字符

例1.查询1月8号考试的学生
select * from StudentBindPaperTypeEntity where TimeTamp like ‘2020-01-08%’
例2.查询不是1月8号考试的学生
select * from StudentBindPaperTypeEntity where TimeTamp not like ‘2020-01-08%’

(8)范围查询

    in关键字为非连续查询

例1.查询两个不相邻的学号的学生
select * from StudentBindPaperTypeEntity where StudentID in(‘19100142001’,‘19100142006’)
Between…and…为连续查询(注:sql软件情况不一样,可能不包含and后的值)
例2.查询两个学号之间的学生
select * from StudentBindPaperTypeEntity where StudentID Between 19100142001 and 19100142006

(9)空判断

    is null判断为空

例1.查询没有试卷的学生
select * from StudentBindPaperTypeEntity where PaperType is null
is not null 判断非空
例2.查询有试卷的学生
select * from StudentBindPaperTypeEntity where PaperType is not null

(10)优先级

优先级由高到低的顺序为:
小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用

(11)group by(分组)

   作用:将字段间一对多的关系,向一的方向靠拢分组

例1.查出参加考试有几个学院
select CollegeID from StudentBindPaperTypeEntity group by CollegeID
例2.查出各个学院参加考试的人数
select CollegeID, count(StudentID) from StudentBindPaperTypeEntity group by CollegeID
–查询各个部门的部门编号和部门的平均工资
select deptno,avg(sal) from emp group by deptno;
–查询各个部门的员工人数
select deptno,count(empno) from emp group by deptno;

   where和having的异同:

where:条件,where后面跟的条件比having后的条件先执行,条件中不允许使用聚合函数。
having:条件中可以使用聚合函数,一般having和group by联用。

   group by+having:having的作用跟where子句功能一样,只不过having只用在group by

例3.查出学院ID大于10的学院
select CollegeID from StudentBindPaperTypeEntity group by CollegeID having CollegeID>10

(12)Order by(排序)

排序查询语法:
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,…]
如果列1的值相同,则按照列2排序,以此类推。
1.asc从小到大(升序)
2.desc从大到小(降序)
例1.根据学院分组ID降序(desc)
select CollegeID from StudentBindPaperTypeEntity group by CollegeID order by CollegeID desc
例2.将上表升序(asc)
select CollegeID from StudentBindPaperTypeEntity group by CollegeID order by CollegeID asc
–查询员工信息,按照部门编号升序排序,如果部门编号相同时,按照工资的升序排序。
select * from emp order by deptno asc,sal asc;

(13)from(表)+连接查询:

连接查询:
1.内连接:Inner join
2.左连接:Left join
3.右连接:Right join
左外连接:左表的值会全部显示出来,右表的值显示on条件搜索的的结果,搜索不到为NULL。
select score.studentID,score.score,s.CollegeID,s.major,s.majorClass
from StudentInfoEntity as s left join ScoreEntity as score on s.studentID=score.studentID

右外连接与左外连接相反(右表的值全部显示出来)。
select score.studentID,score.score,s.CollegeID,s.major,s.majorClass
from ScoreEntity as score right join StudentInfoEntity as s on s.studentID=score.studentID

(14)查询去重:distinct

表示查询得到的结果如果有重复,就删掉。
select distinct sex from student;

(15)所有、任一:all&any

后面都跟一个集合或者子查询

all:表示大于集合中最大的元素 >all(1,2,3,4,5) 等价于 >5

<all:表示小于集合中最小的元素 <all(1,2,3,4,5) 等价于 <1

any:表示大于集合中最小的元素 >any(1,2,3,4,5) 等价于 >1

<any:表示小于集合中最大的元素 <any(1,2,3,4,5) 等价于 <5

–查询员工信息,要求员工的工资比以下的值都低 1600,2000,3000
select * from emp where sal <all(1600,2000,3000);

–查询比下任意一个(1600,2000,3000)工资高的员工信息
select * from emp where sal>any(1000,2000,3000);

–查询工资比所有人(1600,2000,3000)都高的员工信息
select * from emp where sal > all(1600,2000,3000);

MySQL常见命令:

(1)创建学生表 Student :

Create table Student(
Sid varchar(10) not null primary key,
Sname varchar(10) not null,
Sage int(2) not null,
Ssex varchar(2),
)

(2)插入数据:

insert into Student(Sid,Sname,Sage,Ssex) values (‘1’,‘张三’,‘20’,‘女’);

(3)查询名字为张三的学生表数据:

select * from Student where Sname=‘张三’

(4)修改编号2的学生名字为李四:

update Student set Sname=‘李四’ where Sid=‘2’

(5) 删除名字为张三的学生:

delete from Student where Sname=‘张三’

(6)查询语文老师的名字:用inner join联查两个表

select teacher.Tname from teacher
inner join course
where teacher.Tid = course.Tid and course.Tname = ‘语文’

(7)统计语文成绩大于70的学生信息:

select a.Sname,a.Sage,a.Ssex,b.score from Student a, SC b
where a.Sid=b.Sid and b.Cid=1 and b.score >70

(8)统计各科分数大于80的人:

select a.Sid,a.Sname
from student a,
(select Sid from sc
group by Sid
having min(score) > 80) as b
where b.Sid = a.Sid;

2、mysql默认端口为:

3306,Windows通过更改my.ini配置更改端口,linux通过更改my.conf来更改端口。

3、mysql索引:

mysql索引的建立大大的提高了mysql的检索速度,但是对数据的update,insert,delete的效率就有所降低。

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

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

相关文章

【ArcGIS Pro二次开发】(7):地图(Map)的基本操作

地图是ArcGIS Pro中的基础起点&#xff0c;也是大多数工程的基础。主要用于显示表示空间数据的图层。 一、地图(Map)的基本操作示例 1、获取当前地图 var map MapView.Active.Map; 2、获取一级图层 var lys map.Layers; 用于获取地图中的单一图层&#xff0c;以及图层组…

深入了解Java线程锁(一)

在上一篇《如何保证线程的原子性》中&#xff0c;我们谈到了锁&#xff08;Synchronized&#xff09;&#xff0c; 这次我们就来深入探讨一下Java多线程中的锁。 互斥锁的本质是共享资源。 如上图所示&#xff0c; Thread1访问受保护资源&#xff0c;对其加锁&#xff0c;将…

【GO】k8s 管理系统项目16[前端部分–前端布局]

【GO】k8s 管理系统项目[前端部分–前端布局] 1. 前端布局 2. Layout 2.1 layout src/layout/Layout.vue <template><div class"common-layout"><el-container><el-side width"200">Aside</el-side><el-container>…

CAN总线开发一本全(3) - 微控制器集成的FlexCAN外设

CAN总线开发一本全&#xff08;3&#xff09; - 微控制器集成的FlexCAN外设 苏勇&#xff0c;2023年2月 文章目录CAN总线开发一本全&#xff08;3&#xff09; - 微控制器集成的FlexCAN外设引言硬件外设模块系统概要总线接口单元 - 寄存器清单数据结构 - 消息缓冲区MB初始化过…

React(一):初识React、类组件、jsx的基础语法

React&#xff08;一&#xff09;一、初识React1.简单介绍2.React的三个依赖3.Hello React案例二、类组件1.定义类组件并渲染2.绑定事件函数&#xff08;奇怪的this问题&#xff09;3.数组形式数据的展示&#xff08;电影案例&#xff09;4.计数器案例三、jsx语法详解1.jsx的书…

利用InceptionV3实现图像分类

最近在做一个机审的项目&#xff0c;初步希望实现图像的四分类&#xff0c;即&#xff1a;正常&#xff08;neutral&#xff09;、涉政&#xff08;political&#xff09;、涉黄&#xff08;porn&#xff09;、涉恐&#xff08;terrorism&#xff09;。有朋友给推荐了个github上…

机器学习笔记之近似推断(一)从深度学习角度认识推断

机器学习笔记之近似推断——从深度学习角度认识推断引言推断——基本介绍精确推断难的原因虽然能够表示&#xff0c;但计算代价太大无法直接表示引言 本节是一篇关于推断总结的博客&#xff0c;侧重点在于深度学习模型中的推断任务。 推断——基本介绍 推断(Inference\text{…

Python中实现将内容进行base64编码与解码

一、需求说明需要使用Python实现将内容转为base64编码&#xff0c;解码&#xff0c;方便后续的数据操作。二、base64简介Base64是一种二进制到文本的编码方式【是一种基于 64 个可打印字符来表示二进制数据的表示方法&#xff08;由于 2^664&#xff0c;所以每 6 个比特为一个单…

国产音质好的蓝牙耳机有哪些?国产音质最好的耳机排行

随着时间的推移&#xff0c;真无线蓝牙耳机逐渐占据耳机市场的份额&#xff0c;成为人们日常生活中必备的数码产品之一。蓝牙耳机品牌也多得数不胜数&#xff0c;哪些国产蓝牙耳机音质好&#xff1f;下面&#xff0c;我们从音质出来&#xff0c;来给大家介绍几款国产蓝牙耳机&a…

硬件系统工程师宝典(11)-----去耦电容布局“有讲究”

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们说到在电源完整性分析的目标就是要做到电源的干净、稳定和快速响应&#xff0c;以及针对不同噪声处理的实现方法。今天我们来看看去耦电容…

父传子与子传父步骤

父传子&#xff1a; 问题&#xff1a;父页面中引入子组件 把想要传给子页面的值用在子组件中用 &#xff1a;值“值” (用同一个值好区分)来绑定。 在子页面中用props接收 子组件不能改变父组件传过来的值。&#xff08;传多个页面的时候是&#xff0c;比如父传孙的时候我会…

【2023】华为OD机试真题Java-题目0221-AI处理器组合

AI处理器组合 题目描述 某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中的处理器不能通信,如下图所示。现给定服务器可用的处理器编号数…

STM32---备份寄存器BKP和 FLASH学习使用

BKP库函数 学习BKP&#xff0c;首先就是知道BKP每一个函数的作用然后如何使用即可 使用备份域的作用只需要操作上面的两个函数即可&#xff0c;其余的都是它的其他功能 BKP简介 备份寄存器是42个16位的寄存器&#xff0c;可用来存储84个字节的用户应用程序数据。他们处在备份…

如何高效管理自己的时间,可以从这几个方向着手

如果你是上班族&#xff0c;天选打工人&#xff0c;你的绝大多数时间都属于老板&#xff0c;能够自己支配的时间其实并不多&#xff0c;所以你可能察觉不到时间管理的重要性。但如果你是自由职业者或者创业者&#xff0c;想要做出点成绩&#xff0c;那你就需要做好时间管理&…

2. Dart 开发工具环境配置

很多编辑器都可以用来开发dart&#xff0c;所以大家可以选择自己喜欢的编辑器去进行开发。我还是比较喜欢vs code如果你不用vs code来开发dart的话&#xff0c;这篇文章可以直接跳过。如果想要在vs code里有dart的语法提示&#xff0c;我们需要安装相关的插件如图点开插件输入d…

预编译(回顾)

浏览器运行机制变量提升机制私有变量提升步骤全局对象 GO 和全局变量对象 VO的区别带var和不带var的区别系统输出顺序变量提升在条件判断下的处理防止函数的变量提升 浏览器运行机制 为了能够让代码执行&#xff0c;浏览器首先会形成一个执行环境栈 ECStack(Execution Contex…

TCP协议和TCP连接

TCP协议和TCP连接一、TCP协议的简介二、TCP连接的简介1、TCP连接的建立&#xff08;TCP三次握手&#xff09;2、TCP连接的断开&#xff08;TCP四次挥手&#xff09;一、TCP协议的简介 TCP&#xff08;Transmission Control Protocol&#xff09;传输控制协议是一种面向连接的、…

java 接口 详解

目录 一、概述 1.介绍 : 2.定义 : 二、特点 1.接口成员变量的特点 : 2.接口成员方法的特点 : 3.接口构造方法的特点 : 4.接口创建对象的特点 : 5.接口继承关系的特点 : 三、应用 : 1.情景 : 2.多态 : ①多态的传递性 : ②关于接口的多态参数和多态…

股票量化交易SQL特征工程入门

虽然现在各种量化教程和自助平台铺天盖地&#xff0c;但是对于新人来说入门最重要的事情就是挖掘特征。 对于传统的学习路径第一步是学习Python或者某一门编程语言&#xff0c;虽说Python入门容易上手快&#xff0c;但是要在实际应用中对股票数据进行分析&#xff0c;并挖掘有…

2023/2/24 图数据库Neo4j的理解与应用

1 什么是图数据库&#xff08;graph database&#xff09; 十大应用案例&#xff1a;https://go.neo4j.com/rs/710-RRC-335/images/Neo4j-Top-Use-Cases-ZH.pdf “大数据”每年都在增长&#xff0c;但如今的企业领导者不仅需要管理更大规模的数据&#xff0c;还迫切需要从现有…