数据库复习

select 查询

字段别名用 as (可以为中文) 例如 select ''

distinct 关键字 去重复值 例如select distinct deptno from test

where 条件过滤

and or 和 not运算符 and同时成立  or有一个成立就可以了 优先级and>or>not不符合(!)

in 匹配多个值 select 1 where 1 in (3,2)

Between:  SELECT * FROM Websites

WHERE alexa BETWEEN 1 AND 20; >=1 <=20

like搜索匹配的字符串: select * from test where name like '王%' 查询到 王111111  %匹配任意长度的字符串 —表示单一的字符 select * from test where name like '_王' 查询到1王而不会查询到11王

order by排序 默认是升序 从低到高 可以加关键字 desc降序 例如select name,salary from test order by salary desc;

单行注释-- 多行注释 /* */

null 空值 select 1 where '' is null  ->no 我们一般来说把不知道的值设置为null

not in的坑 not in表示不在集合中 not in 不能对空值进行判断

update更新一个或多个字段 update 表名 set 字段名 where 条件

例如 update test set name=1 where name='zs'

update中使用子查询 select * from test where deptno in (select deptno from depart where managerno=2 or managerno=3)

Delete删除记录 truncate table == delete from table  效率不同 truncate比delete高很多,把这个分配空间直接删除

Delete中使用子查询  从员工表中删除所有在二楼办公的员工

delete from test where deptno in (select deptno from test where loc like '二楼')

传统的多表连接方式

select name,dname,departments.deptno from employees,departments where employess.deptno=departments.deptno

一般来说,我们可以使用别名

select name,dname,d.deptno from employees e,departments d where e.deptno=d.deptno

inner join内连接 select name,dname,e.deptno from employees e inner join departments d on e.deptno=d.deptno 就是把这个俩个表连接在一起,好查询

self join 自连接 就是表自己连接自己 奥秘就是一个表使用不同的别名进行连接,别名好像是表的实体化一样,化成多个表进行连接

select t1.name,t2.empno,t1.empno from test t1 join test t2 on t1.name=t2.name and t1.empno<>t2.empno 这样就能找到 员工名字相同但是员工号不同的记录

outer join 外连接  

select * from A inner join B on A.id = B.id

select * from A inner join B on A.id = B.id

select * from A inner join B on A.id = B.id

cross join 交叉连接

select * from a cross join b

select * from a full join b on a.id = b.id

union集合联合

select empno,deptno from employees union select managerno,deptno from departments

加到一张表中,重复的只加一次

select empno,deptno from employees union all select managerno,deptno from departments

重复的也会加

select empno,deptno from employees  intersect select managerno,deptno from departments

俩张表中交互的内容

常用的分组函数

max()最大 min()最小 avg() 平均 sum()汇总 count(*)记录数

group by 分组

select deptno 部门,avg(salary) as 平均工资 from employees group by deptno 按部门分类 这里有一个注意点当跟order by 结合起用 顺序不能出问题现有group by 然后有order by

having过滤分组 在groupby后面的专门用来修饰group by

子查询 就是用一条数据实现多条数据的查询  查询入职时间比李四早的员工 select name from test where date<(select date from test where name='李四')

IN运算符中的子查询  查询所有在二楼办公的员工的姓名 select empno,name from employess where deptno in (select deptno from departments where depart loc='二楼')

子查询和连接 select empno,name from employess join departments  on employees.deptno=departments.deptno where loc='二楼' 效果也是一样的

all关键字 查询比所有1号部门所有员工工资高的员工

select name from employees where salary > all (select salary from employees where deptno=1);

ANY关键字

查询比2号部门任一员工工资低的员工

select name from test where salary < any (select salary from test where deptno=2)

其次in都可以修改为any

相关子查询 就是在子查询中使用外部查询的值

查询出比自己部门平均工资高的员工

select name,deptno,salary from test t where salary>(select avg(salary) from test where deptno=e.deptno)

变蓝色的就是外部查询 括号里面,绿色的就是子查询

EXISTS运算符

EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

有时用来替代in 执行效率不同 如果子查询返回来的记录比较多,使用exists 如果主记录比较多,那就使用in

SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);

select子句中的子查询

select name,salary,deptno,(select avg(salary) from test where deptno=e.deptno) 部门平均工资 

        from test t

from子句中的子查询

select * from (

        select name,salary,deptno,(select avg(salary) from test where deptno=e.deptno) 部门平均工资 

        from test t

)t2 order by salary

PARTITION BY 分区函数  这个函数跟group by有相似之处,但是功能要比group by厉害很多

写法:over(partition by cno order by degree )

SELECT    *

FROM    (select sno,cno,degree,

          rank()over(partition by cno order by degree desc) mm

          from score)

where mm = 1;

case where 表达式

select empno,deptno,

-> case deptno

->when 1 then '开发部'

->when 2 then '测试部'

-> when 3 then '销售部'

-> else '其他部门' end deptname

-> from employees

cte共用表达式

with 表名(自己定)as

    (

    select * from test where id in (select name from test2)

)   //结果集

select * from 表明

view视图

在 SQL 中,视图(View)是一个虚拟表,它由一个查询定义而成,并且可以像真实的表一样进行查询操作。视图并不实际存储数据,而是根据定义时指定的查询结果动态生成。

视图可以简化复杂的查询操作,并提供了一种安全机制,可以隐藏底层数据结构和敏感信息。通过创建视图,用户可以以一种更简单、更易理解的方式访问数据库中的数据。

创建视图

CREATE VIEW high_salary_employees AS

SELECT name, position, salary

FROM employees

WHERE salary >= 5000;

SELECT * FROM high_salary_employees;

查看视图

SHOW COLUMNS FROM high_salary_employees;

修改视图

ALTER VIEW high_salary_employees AS

SELECT name, position, salary

FROM employees

WHERE salary >= 6000;

更新视图数据

UPDATE employees

SET salary = 5500

WHERE employee_id = 123;

删除视图

DROP VIEW high_salary_employees;

注释注入

就是原本是select * from test where name='zs' and password='123';

一个完整的句子,但是前台如果输入zs';# 那么就会变成

select * from test where name='zs';#' and password='123';它会把查询到的所有句子返回

也可以select * from test where name='zs' and password=123 or 1=1;

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

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

相关文章

个人号的微信API接口,微信机器人二次开发

前段时间应公司需求&#xff0c;要开发一套自定义的微信机器人&#xff0c;具体需求是可以自己批量添加好友、批量打标签等进行好友管理&#xff0c;社群管理需要自动聊天&#xff0c;自动回复&#xff0c;发朋友圈&#xff0c;转发语音&#xff0c;以及定时群发等&#xff0c;…

Redis简介(1)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ 文章目录 Redis简介1、NoSQL1.1、什么是NoSQL&#xff1f;1.2、NoSQL 特点…

Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

python实现接口压力测试

python实现接口压力测试 直接上代码&#xff1a; # -*- coding: utf-8 -*-import json import requests import logginglogging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__)restime …

ES系列--文档处理

一、文档冲突 当我们使用 index API 更新文档 &#xff0c;可以一次性读取原始文档&#xff0c;做我们的修改&#xff0c;然后重 新索引 整个文档 。 最近的索引请求将获胜&#xff1a;无论最后哪一个文档被索引&#xff0c;都将被唯一存 储在 Elasticsearch 中。如果其他人同时…

15 大模型训练 内存优化

先看GPU结构&#xff0c;我们常说显存的时候&#xff0c;说的一般就是Global memory 训练的过程中&#xff0c;我们为了反向传播过程&#xff0c;必须将中间的结果&#xff08;激活值&#xff09;存储下来。 在训练的过程中&#xff0c;那些会消耗内存呢&#xff1f; model we…

Centos 8 / TencentOS Server 3.1 安装 docker-ce

目录 前言安装 docker-ce设置Docker Hub 镜像缓存参考 前言 TencentOS Server 3.1(与 CentOS 8用户态完全兼容&#xff0c;配套基于社区5.4 LTS 内核深度优化的 tkernel4版本) 安装 docker-ce 先卸载老版本&#xff0c;没有老版本的跳过 yum remove docker \docker-client \d…

行为型模式 - 命令模式

概述 日常生活中&#xff0c;我们出去吃饭都会遇到下面的场景。 定义&#xff1a; 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储、传递、调用、增加与管理。 结构 …

MyBatis PostgreSQL实现数组类型的操作

我的GitHub&#xff1a;Powerveil GitHub 我的Gitee&#xff1a;Powercs12 (powercs12) - Gitee.com 皮卡丘每天学Java 最近在学习数据库PostgreSQL&#xff0c;遇到如何实现对数组类型的数据操作&#xff0c;试着自己尝试学习实现。 话不多说&#xff0c;直接撸代码。 建表…

云计算之OpenStack核心

云计算之OpenStack核心 一、OpenStack架构1.1 OpenStack概念架构1.2 OpenStack逻辑架构1.3 拓扑部署1.4 使用OpenStack CLI1.4.1 OpenStack 服务都有自己的 CLI 二、OpenStack核心服务2.1 认证服务Keystone2.1.1 基本功能2.1.2 基本概念2.1.3 举例说明&#xff1a;admin用户查看…

【从零开始学习CSS | 第三篇】选择器优先级

目录 前言&#xff1a; 常见选择器的优先级&#xff08;从高到低&#xff09; 选择器的权重&#xff1a; 总结&#xff1a; 前言&#xff1a; 在前几篇文章中我们介绍了大量的选择器&#xff0c;那么大量的选择器在使用的时候&#xff0c;一定是有一个优先级顺序的&#xff…

Haystack:建立端到端的NLP应用程序的工具箱

Haystack是一个端到端的自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;可以使用语言模型、Transformer模型、向量搜索等功能来构建NLP应用程序。无论您想进行问题回答、答案生成、语义文档搜索&#xff0c;还是构建能够进行复杂决策和查询解决的工具&#xff0c;都可…

MongoDB源码安装

文章目录 MongoDB源码安装&#xff1a;注&#xff1a;下载&#xff1a;解压&#xff1a;创建数据目录&#xff1a;创建软链接&#xff1a;创建变量脚本&#xff1a;执行脚本&#xff1a;启动mongodb:检查&#xff1a;连接mongodb&#xff1a; MongoDB源码安装&#xff1a; 注&…

ceph安装部署

Ceph 简介 存储基础 单机存储设备 单机存储的问题 分布式存储的类型 分布式存储&#xff08;软件定义的存储 SDS&#xff09; Ceph 架构 Ceph 核心组件 ​编辑 Pool中数据保存方式支持两种类型 OSD 存储后端 Ceph 数据的存储过程 Ceph 集群部署 基于 ceph-deploy …

Microsoft Outlook如何定时发送邮件

点击New Emai 选择Options→Delay Delivery→Do not deliver before→Close

迭代器模式:相比直接遍历集合数据,使用迭代器有哪些优势?

今天&#xff0c;我们学习另外一种行为型设计模式&#xff0c;迭代器模式。它用来遍历集合对象。不过&#xff0c;很多编程语言都将迭代器作为一个基础的类库&#xff0c;直接提供出来了。在平时开发中&#xff0c;特别是业务开发&#xff0c;我们直接使用即可&#xff0c;很少…

redis 和mongodb基础操作练习

目录 redis作业 string、list、hash 数据类型 举例说明list和hash的应用场景&#xff0c;每个至少一个场景 mongodb作业 1. 创建一个数据库 名字grade 2. 数据库中创建一个集合名字 class 3. 集合中插入若干数据 文档格式如下 4. 查找 5. 增加、更新、删除、统计 re…

Python 和 RabbitMQ 进行消息传递和处理

一、RabbitMQ 简介 RabbitMQ 是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;标准。它的官方客户端提供了多种编程语言的接口&#xff0c;包括 Python、Java 和 Ruby 等。它支持消息的持久化、多种交换机类型、消息通知机制、灵活…

架构训练营3:架构设计流程和架构师职责

架构师相关职责&#xff1a; 架构师是业务和技术之间的桥梁&#xff0c;架构师不能只顾技术&#xff0c;不懂业务&#xff0c;架构师很容易两头不讨好 三个核心能力&#xff1a; 判断&#xff1a;1业务理解力2.技术能力3.沟通能力 拆解&#xff1a;1技术深度2.技术宽度3.技术…

软件基础问答题

性能&#xff1a; 负载压力测试是指在一定约束条件下测试系统所能承受的并发用户量、运行时间、数据量等&#xff0c;以确定系统所能承受的最大负载压力。 负载测试是通过逐步增加系统负载&#xff0c;测试系统性能的变化&#xff0c;并最终确定在满足性能指标的情况下&#xf…