【数据库系统】SQL和T-SQL

第四章 SQL

  • 基本内容

  • 系统结构、DDL、DML、视图、数据控制、嵌入式SQL

  • SQL介绍

    • 特点
    • 一体化;面向集合操作;非过程化语言;可以单独写,也可以作为嵌入式语言(JDBC)

    • 体系结构
    • 在这里插入图片描述
  • 数据库存储结构

    • 逻辑存储结构
    • 面向用户可视化部分

    • 物理存储结构
    • 存储在磁盘上的文件,包括数据文件和事务日志文件

      • 主数据文件,.mdf
        • 数据库起点,指向数据库中的其他文件
        • 每个数据库 有且仅有一个主数据文件
      • 次要数据文件,.ndf
        • 除了主数据文件之外的文件都是次要数据文件
        • 一个数据库科可以包含零个或多个次要数据文件
      • 事务日志文件,.ldg
        • 存储所有事物及每个事务对数据库的修改,用于对数据库的恢复,
        • 每个数据库至少有一个日志文件
  • 数据库主要对象

    • 用户创建数据库时仅仅创建了物理文件,逻辑数据库在逻辑角度对数据库进行描述,提供给用户逻辑视图
    • 主要对象有:表table,视图view,关系,存储过程procedure,触发器trigger,索引index,约束constrain,规则rule,角色role,用户user,用户定义数据类型,用户自定义函数function
  • 数据库组成

    • 系统数据库,用于记录系统信息的数据库
      • master
        • 记录SQL Server的所有系统级信息,还记录其他数据库是否存在,以及这些数据库文件的位置
        • 需要经常备份master数据库,修改后备份一次
      • model
      • 为新建的数据库创建一个模板,在用户执行CREATE DATABASE 自动生成不可删除

      • msdb
      • 提供程序调度警报和作业及记录操作员使用

      • resource
      • 只读数据库,包含所有系统对象

      • tempdb
      • 保存所有临时表和临时存储过程,每次启动时都重新创建

    • 用户数据库
    • 示例数据库
  • 数据库数据类型

    • 整数类型
      • bigint,8字节
      • int,4字节
      • small,2字节
      • tinyint,1字节
    • 浮点数类型
      • real,4字节,可以存储正或负的十进制数
      • float,8字节
      • decimal,小数
      • numeric
    • 字符类型
      • char(n),固定长度字符串,1字节,n取值为1~8000
      • varchar(n | max),可变长度字符串
      • text,可变长度字符串
    • 日期和时间类型
      • date,3字节, 数据格式为“YYYY-MM-DD”
      • time,5字节, 据格式为“hh:mm:ss[.nnnnnnn]”
  • 数据库操作, @面试

    • 创建数据库

    • 在这里插入图片描述

    • 创建模式,创建模式就是创建数据库

    • create scheme scheme_name authorization user_name

      • 也可以在创建表的时候,显示指明模式,从而同时创建二者
      • create table STT.student (sno.....)

    • 创建表

      • create table student(sno char(6) not null unique, sage int, ssex char(2), cno char(6) not null, constrain c1 check ssex in ('男','女'), constarin pk primary key(sno), constrain fk foreign key (cno));
      • constrain规定了列级(作用域一列)或者表级(作用于整个表)的约束
      • 其中,可以使用创建域来约束域
      • create domain domain_name data_type

    • 修改表

      • alter table add 列名 类型
      • alter table drop 列名 [cascade | restrict]
      • alter table modify 列名 类型
      • 创建约束
          1. 添加主键约束
        • Alter table 表名 add Constraint 主键名 primary key(字段)
          1. 添加唯一约束
        • Alter table 表名 add Constraint 约束名 unique(字段)
          1. 添加默认约束
        • Alter table 表名 add Constraint 约束名 default(默认内容) for 字段名
          1. 添加检查约束
        • Alter table 表名 add Constraint 约束名 check (字段表达)
          1. 添加外键约束
        • Alter table 表名 add Constraint 约束名 foreign key(字段) references 表名(字段名)
    • 撤销表

      • drop table table_name
    • 删除数据,删除一个或多个元组

      • delete from table [where P]
    • 插入数据, 列名和值一一对应 @面试 ,没有写到的属性为null

      • 可以省略列名,默认为全部属性且values的值必须按照顺序进行排布。
      • 成批插入数据是把一次子查询的所有结果插入指定表中
      • DBMS在执行插入语句后会自动检查是否破坏了完整性约束
      • insert into table_name(属性列) values(值|子查询)
    • 更新数据, 主码数据不允许修改 @面试

      • update table_name set 列名 = 表达式|子查询
    • 截断表, truncate table table_name

    • 删除表的所有行数据

      • 比delete更快,且使用更少的事务和系统资源
      • 操作不可以回滚,delete可以回滚
    • 索引

    • 一种数据结构,可以提高查询速度,可以在一个表上建立一个或者多个索引

      • 索引的数据结构
        • B树/B+树
        • Hash索引
      • 建立索引
        • 有的DBMS自动创建索引,建立在PK上
        • 也可以由DBA自己建立索引
          • create [unique] index index_name on table_name (列表名)
        • 非聚簇索引
        • 索引存储在一个地方,数据存储在另一个地方,通过指针进行指明

        • 聚簇索引, @面试
        • 数据进行重新排序存储,索引和数据混为一体

          • 一个表只能有一个聚簇索引,但是聚簇索引可以包含多个列
          • 适用于:很少增删;很少对变长列修改
          • 找到一个值后,寻找后续索引可以直接找相邻物理位置,有助于提高查询性能
        • 删除索引
        • drop index index_name

        • 索引选择 @面试
        • 在进行索引选择上应该考虑到空间和时间效率

          • 对某一列进行索引可以提高其查询效率,还可以加快连接
          • 带索引的表会占用更多空间,同时对数据进行插入、更新等操作会有更大的代价
          • 更适合建立索引情况
            • 查询操作多于更新操作
            • 经常出现在where中的属性
        • 索引优化 @面试
          • 在进行查询操作时不要使用非索引列
          • 可以使用多列索引提高效率
          • 优先使用选择性强的索引,即在选择性强的列设置索引
      • DBMS自动维护和使用索引,不需要用户管理
      • 索引失效的情况
        • 对数据进行增删
        • 没有在索引列进行查找
        • 使用like模糊查询
        • 索引列的判断条件是is NULL或is not NULL
    • 元组操作

    • 针对表中元组的操作

      • 查询select 在这里插入图片描述

        • select选中的属性名默认是all,也可以使用distinct来消除重复值
        • select中可以使用四则元素对属性的域进行修改,但是这种修改不会执行到数据库中
        • 执行和编写顺序:join->where->group by->having
        • group by中的属性必须在select中写出
        • 查询语句与关系代数对应关系
          • select——投影
          • where——选择
          • join——连接
      • 聚集函数

        • avg、max、min、sum(对数值类型进行操作)、count(对任意类型操作)
        • 出了count函数,其他都不对null进行操作,即直接忽视null

        • 常常用在having操作中
        • 不能出现在where子句中
      • like模糊查询, @面试

        • % 包含 零个或更多 字符的任意字符串。
        • _(下划线) 任何 单个 字符,如a_b可以是abb,aab,ahb
        • 指定 范围 (例如 [a-f]) 或集合 (例如 [abcdef])内的任何单个字符。
        • [^] 不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。
        • 实例
          • LIKE ‘赵%’ 将搜索姓赵的人名或者说以汉字‘赵’ 开头的字符串(如 赵刚、赵小刚等)。
          • LIKE ‘%刚’ 将搜索以汉字‘刚’结尾的所有字符串(如 刘刚、李小刚等)。
          • LIKE ‘%小%’ 将搜索在任何位置包含汉字‘小’的所有字符串(如赵小刚、李小刚、山本小郎等)。
          • LIKE ‘_小刚’ 将搜索以汉字“小刚”结尾的所有三个汉字的名称(如 李小刚、赵小刚)。
    • 集合操作

    • 针对整个集合的操作

      • union:并集

      • 如果需要保留重复的元组,需要使用union all

      • intersect:交集

      • except:差集 @面试

      • 在这里插入图片描述

      • 以上都是自动去重,若不需要自动去重在后面加上all

      • order语句只能出现在最后

    • 嵌套子查询

      • where + 嵌套
        • 集合成员比较where expression (not) in 子查询

        • 非相关子查询 ,子查询与外层无关,只执行一次,效率高

          • 实例
          • 在这里插入图片描述
        • 集合之间比较where expression comparison_operator some|any子查询

        • 在这里插入图片描述

        • 集合基数where (not) exist 子查询

        • 相关子查询 ,子查询与外层查询有关,依赖于外层查询结果或引用了外层查询

      • from + 嵌套
      • having + 嵌套
      • 可以用嵌套子循环替换and操作和一些自然连接, 优化效率
    • 空值操作, @面试

      • SQL中有三种逻辑值:true,false,unknown
      • 任何值(包括null)与null进行 逻辑运算 都会返回unknown
      • null与 数值 进行运算时,会返回null
      • 在where 和having条件中,unknown会被视作false处理
      • 在check约束中,unknown会被视作true处理
      • 空值判断只可以使用 name (not) is null, 可以使用 =,但是最好使用 is, 判断条件未必是个单值,如果返回值多个则会出错
      • 聚集函数中,只有count不会忽视null进行操作
    • 视图, @面试

    • 根据基本表导出,也叫虚表,不存储与内存中

      • 特点

        • 对不同用户提供 个性化服务
        • 提高 数据库安全性 ,限制了用户对数据的访问范围
        • 提供了 逻辑独立性
        • 不会出现数据冗余 ,基表中数据发生变化,视图中数据也会变化
        • 不占用存储空间 ,以定义的方式存储在数据库中,使用时只是执行了查询语句
        • 视图上还可以定义视图
      • 创建视图

      • create view view_name as <子查询> 【with check option】

      • 撤销视图

      • drop view view_name ,删除基表时,视图也会删除

      • 插入视图

      • insert into view_name values('Lee','1000')

      • 修改视图

      • 在这里插入图片描述

        • 最好不使用视图更新,有些视图是无法被更新的,更新视图是基于更新基本表的情况更新的
        • 视图更新约束
          • 只有视图包含基本表得主键时才可以更新
          • 目标列不包含聚集函数
          • 不使用unique和distinct
          • 不包括group by
      • 视图查询

        • 检查视图是否存在
        • 将视图临时实体化,生成临时表,
        • 查询视图转化为查询临时表
        • 查询完毕删除临时表
        • 也可以使用视图消解法,即将对视图得查询语句进行修改,然后转化为对基表得查询语句
    • 关系连接join ​ @连接 第三章 关系数据库

      • 内连接 inner join
      • 默认是笛卡尔乘积

        • select * from table1 inner join table2 on condition
        • 等值连接
        • 保留重复列的自然连接,也就是关系数据库运算中的theta连接

        • select * from T_student s inner join T_class c on s.classId <运算符> c.classId
      • 外连接 outer join
      • 默认相当于取并集,分成左外连接和右外连接,left outer join,right outer join

        • 全连接,对于并集中没有的用null填充
      • 自连接self join, @面试
      • select * from table as t1,table as t2

        • 当一个表需要多次使用时使用
      • 交叉连接cross join
      • 就是笛卡尔连接,实际上很少使用

    • compute by

      • group by返回的数据集中只保留合计数据,并没有保留原始数据,使用compute by函数可以使得合计数据作为附加项附加到原始数据集的最后
      • compute by前面必须使用order by
    • 嵌入式SQL, @面试

      • SQL使用方式
      • 在终端使用得交互式SQL 在高级语言中使用的嵌入式SQL,高级语言称作宿主语言,

      • 实现方式
      • k扩种宿主语言的编译器,使之可以编译SQL语言 进行预处理方式

      • 嵌入式SQL在嵌入高级语言时,已经确定,无法更改
    • 动态SQL, @面试

      • 传统在高级语言中嵌入SQL(例如JDBC)需要预先编译好语句,虽然可以用占位符但是还是不方便
      • 根据用户输入或者外部条件动态组合的SQL语句,根据不同的需求完成不同的任务
      • 经过预处理和执行阶段
        • 预处理只需要执行一次
        • 多次调用需要多次执行编译
  • T-SQL,transact SQL, @面试

  • 提供了变量定义,赋值操作,流程控制,函数等语句,供用户使用。标准SQL的非过程性的缺陷

    • 数据类型

      • 系统定义数据类型

      • 在这里插入图片描述

      • 用户自定义数据类型

      • 用户自定义数据类型是建立在 SQL Server 系统数据类型基础上的

        • 一般情况下,当多个表的列中要存储同样类型的数据,且想确保这些列具有完全相同的数据类型、长度、取值范围和是否等特点时,可使用用户定义数据类型。
        • SQL Server 为 用 户 提 供 了 两 种 方 法 来 创 建 自 定 义 数 据 类 型 即
          • 使 用 SQL ServerManagement Studio 创建用户自定义数据类型
          • 调用 系统存储过程 sp_addtype 创建用户自定义数据类型。
          • sp_addtype type_name 系统数据类型

    • 常量

      • 整型常量
      • 实型常量
      • 日期型常量
      • 货币常量
    • 变量

      • 局部变量(必须先定义后使用)

        • 命名: @ 标识符
        • 定义: declare @标识符 类型
        • 赋值
          • set @标识符 = 值
          • select @标识符 = 值
          • set 和select区别
            • set一次只能赋值一个变量,select一次可以赋值多个变量
              • set @变量1 = value1
              • set @变量2 = value2
              • select @变量1 = value1,@变量2 = value2
            • 当表达式返回多个值时,select会返回最后一个,而set会报错
              • set @变量 = (select 属性 from 表)(报错)
              • select @变量 = 属性 from 表
            • 当表达式返回空值时, set会赋空值,select则保持不变
              • set @变量 = (select 属性 from 表)(报错)
              • select @变量 = 属性 from 表
            • 使用标量子查询时,如果无返回值,SET和SELECT一样,都将置为NULL
        • 用途:函数和存储过程参数,局部使用,供用户使用
        • 强制转化操作
        • cast @ 变量 as type

        • 初始化为null
        • 在这里插入图片描述
      • 全局变量

        • 命名@@标识符
        • 常见的由系统提供,存储系统的信息
        • 在这里插入图片描述
    • 流程控制

    • 流程控制和程序设计语言中的流程控制类似,是SQL提供给用户用于改变语句执行顺序的控制语句

      • begin and相当于程序设计语言中的一个语句块,{ } 在这里插入图片描述
      • 批处理中的语句一旦出现错误,和事务一样,一句也不执行
    • 函数

    • T-SQL提供了很多内置函数

      • 字符串函数
      • 数学函数
      • 时间和日期函数
        • DATENAME(YYYY,GETDATE()) 返回日期中某部分字符串
        • DATEPART(MM,GETDATE()) 返回日期中某部分数据
        • DATEADD(datepart,number,date) 在一个日期格式上增加间隔,返回值还是日期值
        • DATEDIFF(datepart,startdate,enddate) 计算两个日期的间隔
        • GETDATE() 获取当前的日期
      • 用户自定义函数
        • create function 【database_name】 function_name
        • (【@参数名 参数类型】)
        • returns **参数数据类型**
        • as
        • begin
          • function body
          • return **返回参数**
        • end
      • 使用函数
      • select @变量 = **database.函数名(参数)**

    • 游标

    • 从包含多条数据记录的结果集中返回一条记录,每次处理一行或一部分行

      • 可以被视作一个指针,可以指向结果集中的任意一个位置并对其进行处理,
      • 使用过程:声明游标-》打开游标-》检索游标-》关闭游标-》释放游标
      • 在这里插入图片描述
      • 声明游标
      • declare 游标名 cursor for select语句

      • 打开游标
      • open 游标名

      • 检索游标
      • fetch【next | prior | first | last | 】from 游标名 into 变量名称

      • 检查游标,是否有更多行可以提取,使用系统变量 @@FTECH_STATUS
        • WHILE @@FTECH_STATUS = 0
        • BEGIN
          • FETCH [NEXT | PRIOR | FIRST | LAST] FROM 游标名 into 变量名称
        • END
      • 关闭游标,删除游标
      • clsoe 游标名;deallocate 游标名;

        • 关闭游标并释放资源,关闭了的游标与原来的查询结果集不再关联,可以被再次打开与新的结果集进行关联
      • 游标系统变量
        • @@CURSOR_ROWS 表示当前打开的游标中存在的记录数量。
        • @@FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态
    • 存储过程和触发器

      • 存储过程
      • 是SQL中的一种对象,封装了可重用的模块和子程序,可以接受、输出参数,返回单个或多个结果集以及返回值

        • 存储过程经数据库编译后存储在数据库服务端,应用程序只需要调用一次代码便可以执行存储过程的所有代码,类似于程序设计语言中的函数

        • 优点

          • 执行前已经存储在数据库中,比起函数有更好的性能
          • 用户不用访问数据库的数据和对象
          • 提供了安全性机制
          • 减少了网络通信量,用户只需要执行存储过程即可,存储过程内大量的代码已经在服务器中存储
        • 分类

          • 系统存储过程:用于完成某些特殊的功能,以sp_开头
          • 用户自定义存储过程
        • 创建存储过程

        • 在这里插入图片描述

        • 执行存储过程

        • EXEC procedure_name 参数

      • 触发器, @面试
      • 是一种特殊的存储过程 ,和数据库架构和表紧密关联,当数据库架构发生变化或表的结构发生变化(增、删、修改)时,触发器自动运行,一个表可以有多个触发器

        • 创建触发器

          • 实现设置好:触发器名称、触发器关联的表、触发器触发的时间、触发器触发执行的操作的类型(uupdate、delete、insert)、触发器触发后执行的语句
        • 分类

          • update触发器:检查修改操作是否符合要求
          • insert触发器:检查插入操作是否符合要求
          • delete触发器:用作级联删除和记录外键的删除操作
          • delete触发器不会被截断表truncate触发

        • 原理

          • 触发器创建时会创建两个表, deleted和inserted表 ,他们都是 临时表 ,DBMS会自动管理这些临时表, 触发器完成后自动删除 @面试
          • deleted表中存储的是被delete操作和update操作影响的数据,在从原表中操作后会自动记录一份副本到deleted表中
          • inserted表中存储的是inserted操作和update操作中受影响的数据,插入后会自动存一份副本到inserted表中
        • 创建触发器

        • 在这里插入图片描述

        • 触发器性能考虑

          • 触发器执行的语句尽量简单
          • 触发器执行速度快,因为deleted和inserted表都在缓存中
          • 尽量减少触发器中ROLLBACK语句使用,系统开销特别大
          • 在使用触发器前最好还是考虑使用check约束

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

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

相关文章

vue key的bug

今天遇到一个bug&#xff0c;列表删除元素时&#xff0c;明明在外层设置了key&#xff0c;但是列表元素的状态居然复用了&#xff0c;找了好久原因&#xff0c;最后是key的取值问题&#xff0c;记录一下。 首先key可以取undefine&#xff0c;这个是不会报错的 然后项目的代码结…

工商银行ECOS系统应用架构

2019 年 11 月 8 日&#xff0c;工商银行在北京正式发布 ECOS 智慧银行生态系统。ECOS 以 Ecosystem&#xff08;生态系统&#xff09;前四个字母命名。其中E 代表“企业级”&#xff08;Enterprise-level&#xff09;&#xff0c;C 代表“以客户为中心”&#xff08;Customer-…

rpc详解rpc框架

文章目录 概述rpc的优点组件工作流程&RPC的底层原理RPC的底层原理 RPC框架rpc框架优点RPC 的实现基础RPC的应用场景RPC使用了哪些关键技术rpc 调用异常一般怎么处理rpc和http的区别为什么RPC要比HTTP更快一些Dubbo和openfeign 区别远程调用RPC框架传输协议传输速度 概述 在…

6.shell case控制语句

case控制语句 1.什么是case case条件语句相当于多分支的if/elif/else条件语句&#xff0c;主要还是用来做条件判断的,常被应用于实现系统服务启动脚本。 case语句中&#xff0c;会将case获取的变量值与表达式部分的值1、值2、值3等逐个进行比较&#xff0c;如果变量值和某个表…

vue3 报错 require is not defined

问题 require is not defined 原因 vite 不支持require的用法&#xff0c; webpack是支持的 解决 方法一&#xff1a; 更改vite使用语法 vite官网 方法二 安装转换插件vite-plugin-require-transform 仓库地址 参考 关于Vite不能使用require问题 方法二Vite 踩坑 —— …

html5cssjs代码 036 CSS默认值

html5&css&js代码 036 CSS默认值 一、代码二、解释 CSS默认值&#xff08;也称为浏览器默认样式&#xff09;是指当HTML元素没有应用任何外部CSS样式时&#xff0c;浏览器自动为这些元素赋予的一组基本样式。这些样式是由浏览器的默认样式表&#xff08;User Agent sty…

【Godot4.2】实现鼠标控制对象(控件)旋转

概述 在一些情况下我们可能需要使用鼠标控制对一个图形或对象&#xff08;如控件&#xff09;进行旋转。 通过如下图的分析&#xff1a; 我们可以知道&#xff1a; 我们只需要求出对象&#xff08;如控件&#xff09;中心点C到鼠标点击的位置start的向量与中心点C到鼠标移动…

STM32最小核心板使用HAL库实现CAN接口通讯(轮询方式)

这里使用了CAN1的接口&#xff0c;具体使用MX创建项目就不放了 需要注意的是&#xff0c;由于是最小核心没有CAN的收发模块需要外接一个 STM32核心板接CAN收发模块不需要交叉 /**CAN GPIO ConfigurationPA11 ------> CAN_RXPA12 ------> CAN_TX */ CAN收发模块…

力扣454. 四数相加 II

思路&#xff1a;把四个数组拆成两对&#xff0c;两个分别相加&#xff0c;记录第一对的相加结果进map里&#xff0c;再把第二对数组 0-nums2-nums4 去map里面找出现了几次&#xff0c;这题不用对重复的四元组去重&#xff0c;所以出现多次都有效。 class Solution {public int…

[flask] flask的基本介绍、flask快速搭建项目并运行

笔记 Flask Flask 本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展Flask-Mail&#xff0c;用户认证Flask-Login&#xff0c;数据库Flask-SQLAlchemy&#xff09;&#xff0c;都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、…

ubuntu20.04搭建nginx rtmp视频服务到指定位置解决权限不足

1.安装依赖 apt-get install build-essential libpcre3 libpcre3-dev libssl-dev2.建一个目录 mldir rtmp_nginx 3.源码下载 wget http://nginx.org/download/nginx-1.21.6.tar.gz wget https://github.com/arut/nginx-rtmp-module/archive/master.zip4.解压缩 tar -xf ng…

新能源汽车充电桩站点烟火AI识别检测算法应用方案

新能源汽车作为现代科技与环保理念的完美结合&#xff0c;其普及和应用本应带给人们更加便捷和绿色的出行体验。然而&#xff0c;近年来新能源汽车充电火灾事故的频发&#xff0c;无疑给这一领域投下了巨大的阴影。这不禁让人深思&#xff0c;为何这一先进的交通工具在充电过程…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密工具流程

网络是一把利剑&#xff0c;可以方便企业开展各项工作业务&#xff0c;为企业提供极大的便利&#xff0c;但随着网络技术的不断发展与应用&#xff0c;网络数据安全威胁也在不断增加&#xff0c;给企业的正常生产运营带来了极大困扰&#xff0c;近日&#xff0c;云天数据恢复中…

AJAX-Promise

定义 Promise对象用于表示(管理)一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。 好处&#xff1a;1&#xff09;成功和失败状态&#xff0c;可以关联对应处理程序 2&#xff09;了解axios函数内部运作机制 3&#xff09;能解决回调函数地狱问题 语法&…

七仔充电桩平台 二轮电动自行车 四轮汽车 云快充1.5 云快充1.6

文章目录 一、产品功能部分截图1.手机端&#xff08;小程序、安卓、ios&#xff09;2.PC端 二、小程序体验账号以及PC后台体验账号1.小程序体验账号2.PC后台体验账号关注公众号获取最新资讯 三、产品简介&#xff1f;1. 充电桩云平台&#xff08;含硬件充电桩&#xff09;&…

ORACLE查询拼接字段,显示clob原因,及解决办法

今天查询一个字段&#xff0c;使用了拼接&#xff0c;然后查出来就显示clob&#xff1a; 代码如下&#xff1a; SELECT LOAD_DATE, CINO, WM_CONCAT(CITYP) AS CITYPFROM ODS.ZN_CUSTCITYP GROUP BY CINO,LOAD_DATE 显示如图&#xff1a; 解决办法&#xff1a; select t.普…

Java-SSM医院在线预约系统

Java-SSM医院在线预约系统 1.服务承诺&#xff1a; 包安装运行&#xff0c;如有需要欢迎联系&#xff08;VX:yuanchengruanjian&#xff09;。 2.项目所用框架: 前端:JSP、layui等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 1.管理员功能: a.修改个人信息…

[ Django ] 统计接口访问频次

需求及实现思路 需求&#xff1a;统计django项目中接口的调用次数 思路&#xff1a;中间件异步任务celery缓存redis/直接使用中间件&#xff08;会增加中间件的压力&#xff09; 具体思路&#xff1a; 定义中间件&#xff0c;在中间件中响应走的时候判断该请求的url是否存在…

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk&#xff0c;我们模拟器打开看一下 好好&#xff0c;抽卡模拟器是吧&#x1f600; jadx反编译看一下源码 找到生成flag的地方&#xff0c;大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…

综合知识篇15-开发管理考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…