sql注入原理与实战(二)数据库原理

简介: sql注入原理与实战(二)数据库原理

image.png

数据库架构

数据库结构是指数据库系统中数据的组织方式和存储方式。常见的数据库结构有单用户结构、主从式结构、分布式结构、客户-服务器结构、浏览器-应用服务器/数据库服务器结构等。数据库结构包括三个层次:外模式、概念模式和内模式。其中,外模式是用户看到的视图,概念模式是数据库的逻辑结构,内模式是数据库在存储介质上的物理结构。保证数据的物理独立性是数据库设计的一个重要目标,即当数据库的存储结构改变时,只需要修改模式/内模式映像,而不需要修改应用程序,从而保证了数据与程序的物理独立性。

image.png



数据库的存储特点

数据存放到表中,然后表再放到库中

一个库中可以有多张表,每张表具有唯一的表名用来标识自己

表中有一个或多个列,列又称为“字段”,相当于Java中“属性”

表中的每一行数据,相当于Java中“对象”

完整语法

一、语法

select [TOP|DISTINCT] [选择列表]|[*]

from 数据源

[where 查询条件]

[group by 分组条件]

[having 过滤条件]

[order by 排序条件 asc|desc nulls first|last];

二、执行顺序

(5)select [(5-3)TOP|(5-2)DISTINCT] (5-1)[选择列表]|[*]
(1)from 数据源
(2)[where 查询条件]
(3)[group by 分组条件]
(4)[having 过滤条件]
(6)[order by asc|desc nulls first|last];

简单查询

--查询所有员工的信息

select * from emp;

别名查询

--查询所有员工的姓名

select e.ename from emp e;

去重查询

--查询所有部门的编号

select distinct e.deptno from emp e;

条件查询

一、运算符

条件运算符:>、>=、<、<=、=、<=>、!=、<>

逻辑运算符:and、or、not

模糊运算符:

like:%任意多个字符、_任意单个字符、如果有特殊字符,需要使用escape转义

between and

not between and

in

is null

is not null

二、演示

--查询工资>3000的员工信息

select * from emp where sal > 3000;

3.6、分组查询

--统计每个部门有多少个人

select deptno as "部门",count(*) as "人数" from emp group by deptno;

3.7、分组过滤

--统计部门人数>5人的部门的编号
select deptno as "部门", count(*) as "人数"from emp
group by deptno
having count(*) > 5;

3.8、排序查询

--按照员工主管编号由高到低进行排序,NULL值放到最后边

select * from emp order by mgr desc nulls last;

3.9、分页查询

--查询前10条员工的信息
--注意:Oracle中不支持limit,需要在原始表加上一列:行号,然后使用子查询来实现分页
select *  
from (select rownum hanghao,e.* from emp e) t
where t.hanghao >=1 and t.hanghao <= 10;

3.10、多表查询

内连接

隐式内连接:select * from emp e1, dept d1 where e1.deptno = d1.deptno;

显示内连接:select * from emp e1 inner join dept d1 on e1.deptno = d1.deptno;

外连接

左外连接

隐式左外连接:select * from emp e1,dept d1 where e1.deptno = d1.deptno(+);

显示左外连接:select * from emp e1 left outer join dept d1 on e1.deptno = d1.deptno;

右外连接

隐式右外连接:select * from emp e1,dept d1 where e1.deptno(+) = d1.deptno;

显示右外连接:select * from emp e1 right outer join dept d1 on e1.deptno = d1.deptno;

全外连接:select * from emp e1 full outer join dept d1 on e1.deptno = d1.deptno;

交叉连接

隐式交叉连接:select * from emp, dept;

显示交叉连接:select * from emp e1 cross join dept d1;

3.11、联合查询

并集运算:将两个查询结果进行合并
/*
  union   : 它会去除重复的,并且排序
  union all  : 不会去除重复的,不会排序
*/
--工资大于1500或者20号部门下的员工
select * from emp where sal > 1500
union
select * from emp where deptno = 20;
--工资大于1500或者20号部门下的员工
select * from emp where sal > 1500
union all
select * from emp where deptno = 20;

交集运算:找两个查询结果的交集

--工资大于1500并且20号部门下的员工
select * from emp where sal > 1500
intersect
select * from emp where deptno = 20;

差集运算:找两个查询结果的差集

--1981年入职员工(不包括总裁和经理)
select * from emp where to_char(hiredate,'yyyy') = '1981'
minus
select * from emp where job = 'PRESIDENT' or job = 'MANAGER';

注意事项:

列的类型要一致

列的顺序要一致

列的数量要一致,如果不够,可以使用null填充


































相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
506 7
|
5月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
人工智能 关系型数据库 OLAP
聚光灯已就位!阿里云瑶池数据库邀你征战Cursor首届实战征文大赛
阿里云AnalyticDB携手Cursor中文社区,正式发起首届实战征文大赛!我们诚邀开发者融合Cursor的智能编程能力与AnalyticDB PostgreSQL提供的Supabase服务进行项目开发,让优秀项目被专家看见、被机遇拥抱!
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
943 152
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
785 156
|
4月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
497 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
3月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
291 6
|
4月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
4月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
385 8
|
5月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
710 8