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

关于SQL

数据库简介:

数据库分类

关系型数据库模型:

优点:易于维护,可以实现复杂的查询

缺点:海量数据 读取写入性能差,高并发下数据库的io是瓶颈

是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

非关系型数据库模型:

包含键值存储数据库、列存储数据库(行存储数据库就是关系型数据库)、面向文档数据库、图形数据库(Neo4j)等。

常用列存储数据库:Cassandra。

文档数据库:存储的是文档结构的数据,json、xml等,常用的文档数据库:MongoDB

oracle连接工具:

提高了sqlplus连接数据库,帮助文档:sqlplus-help

示例:sqlplus usernmae/password@127.0.0.1:1521/orcl

orcl是远程数据库服务名,不是数据库名

SID:标识数据库的一个实例,一般一个数据库对应一个实例(集群时一个数据库可以有多个实例)

SERVICE_NAME:服务名,对应的是一个数据库。

配置tnsname.ora时,可以用SERVICE_NAME(建议用),也可以用SID

PostgreSql连接工具:

自带连接工具-psql

psql时它的一个命令行交互式客户端工具,类似于Orcale的命令行工具sqlplus。

接入PostgreSQL数据库:psql -h IP地址 -p 端口 -U 数据库名

例:psql -h localhost -p 5432 -U postgres

postgresql自带图形化客户端工具-pgAdmin(通过浏览器访问、对浏览器有要求)Chrome 72+、Firefox 65+、Edge 44+、Safari 12+

第三方连接工具-Navicat for PostgreSQL

常用的SQL/函数

关于表连接:

左连接 left-join:

以左表的记录为基础的,左表的记录将会全部表示出来,而右边只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

右连接 right-join:

以右表的记录为基础的,右表的记录将会全部表示出来,而左边只会显示符合搜索条件的记录。左表记录不足的地方均为NULL。

全连接 full-join:

左表和右表都不做限制,所有记录都显示,两表不足的地方用null填充。

内连接 inner-join:

两表都限制,两表都有的数据才显示。

等值连接:

group by、having用法:

group by对查询的结果进行分组,相同组合的分组条件在结果集中只显示一行记录。使用group by从句时候,通过添加聚合函数(COUNT()、SUM、MAX()、MIN()等)可以使数据聚合。

having是在分组的结果的基础上过滤,和where不一样,where是在分组之前的过滤

union 和 union all的用法:

union对两个结果集取并集不包含重复结果同时进行默认规则的排序。而union all对两个结果集去并集,包括重复行,不进行排序。

union需要进行重复值扫描,效率低,如果没有要删除重复行,应该使用union all。

with子句的用法:

使用SQL with子句的优点:

增加了SQL的易读性,如果构造了多个子查询,结果会更清晰。更重要的是:“一次分析,多次使用”。当在一个sql语句中需要多次使用到某个子查询的结果的时候,可以提升sql语句的性能。

分析函数:

是以一定的方法在一个与当前行相关的结果子集中进行计算,也成为窗口函数。

例如聚集函数有:avg、count、min、max、sum等等

字符函数有:concat(str1,str2)字符串拼接函数、length(str)返回表达式中的字符数、lower(str)将字符串转换为小写、upper(str)将字符串转换为大写、nvl(x,value)如果x为null则返回value否则返回x值本身、replace(x,search_string,replace_string)从字符串x中搜搜search_string字符串,用replace字符串替换

数值函数有:abs(value)返回绝对值、ceil(value)返回大于等于value的最小整数、floor(value)返回小于等于value的最大整数、round(value,n)对value四舍五入,保存小数点右侧的n位。

oracle、postgresql常用函数差异:

Oracle创建编写sql时,默认大写,没有使用双引号对表面和列明进行限定的时候,表名不论是大小写,最后都默认成大写。

postgresql创建表和字段时对大小写敏感,编写sql默认小写,如果表面、字段名要大写需要使用双引号。

常见语句差异:

-decode

oracle中:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

postgresql:CASE WHEN condition1 THEN result1

WHEN condistion2 THEN result2

...

WHEN condistionN THEN resultN

ELSE default_result

END

-merge into

(-用的很少)

分页:

rownum :

是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列。

它总是从1开始排起,所以选出的结果不可能跳过1,而有其他大于1的值。

rownum仅仅针对新的结果集动态标记,而排序并不会产生新的结果集。

limit:

select * from persons limit A offset B;

A就是需要多少行,B就是查询的起点位置。

备份还原(小数据量)

oracle备份还原:

postgresql备份

还原-pgadmin

postgresql备份还原:

http://www.lryc.cn/news/348421.html

相关文章:

  • 大模型时代下两种few shot高效文本分类方法
  • Linux0.11 中全局描述符表(GDT)
  • 搜维尔科技:数据手套用于外固定虚拟现实模拟 、外固定增强现实模拟
  • 《三》菜单栏_工具栏_状态栏动作与实现
  • 基于NTP服务器获取网络时间的实现
  • Web APIs(获取元素+操作元素+节点操作)
  • Android adb shell关于CPU核的命令
  • 基于springboot+mybatis+vue的项目实战之页面参数传递
  • CSS-浮动
  • MFC:字符串处理
  • 虚拟仿真云平台在教育应用中的优势和意义
  • CPU的的处理流程如何快速记忆
  • AI视频教程下载:基于OpenAl、LangChain、 Replicate开发AI应用程序
  • 【C++】继承相关(基类与派生类的继承关系以及细节整理)
  • 【Web后端】监听器Listener
  • C/C++ 初级球球大作战练手
  • ES6之字符串的扩展
  • 微信小程序开发,构建NPM报错解决
  • 【异常】SpringBoot整合RabbitMQ-发送消息报错
  • 通过钉钉卡片进行工单审批
  • C语言中的控制语句:深入解析与案例实践2
  • 【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】
  • 深入解析C#中的async和await关键字
  • 【VUE.js】前端框架——未完成
  • 开源的文件压缩和解压缩软件7-Zip
  • 搜维尔科技:Patchwork 3D 新功能:爆炸视图动画
  • Redis——RedLock、Zookeeper及数据库实现分布式锁
  • OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析
  • 记录一次 vue2 前端项目整合过程
  • 物联网五层架构分析