SQL 连接查询 SQL 连接查询 JOIN INNER JOIN INNER JOIN 关键字在表中存在至少一个匹配时返回行。 123456789SELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name=table2.column_name;-- 或。SELECT column_name(s)FROM table1JOIN 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 查询视图 SQL 查询视图 视图定义后,用户就可以像对基本表一样对视图进行查询了。 [例3.92]:在信息系学生的视图中找出年龄小于20岁的学生。 123SELECT Sno,SageFROM IS_StudentWHERE Sage<20; 关系数据库管理系统执行对视图的查询时,首先进行有效性检查,检查查询中涉及的表,视图等是否存在,如果存在,则从数据字典中取出视图的定义,把定义中的子查询和用 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 嵌套查询 SQL 嵌套查询 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块,将查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询(nested query)例如: 123456SELECT Sname --外层查询或父查询。FROM StudentWHERE Sno IN (SELECT Sno --内层查询或子查询。 FROM 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 基于派生表的查询 SQL 基于派生表的查询 子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(derived table)成为主查询的查询对象,例如,例3.57找出每个学生超过他自己选修课程平均成绩的课程号,也可以用如下的查询完成: 123456SELECT Sno,CnoFROM SC,(SELECT Sno,Avg(Grade) FROM SC 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 数据查询 SQL 数据查询 数据查询是数据库的核心操作,其一般格式为: 12345SELECT [ALL|DISTINCT] <目标列表达式> [别名] [,<目标列表达式> [列别名] ] ...FROM <表名或视图名> [,<表名或视图名>] | (<SELECT语句) [AS 表别名][WHERE <条件表达式> ][GROUP BY 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 数据更新 SQL 数据更新 插入数据 插入元组 123INSERTINTO<表名>[(<属性列1>[,<属性列2>]..)]VALUES(<常量1>[,<常量2>]...) 注意: 其功能是将元组插入指定表中,其中新元组的属性列1的值为常量1,属性列2的值为常量2,…INTO子句中没有出现的属性列,新元组在这些列上将取空值,但必须注意的是,在定 2024-03-17 Software BackEnd Database 关系数据库 DDL
SQL 单表查询 SQL 单表查询 查询指定列 在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通过在SELECT子句的<目标列表达式>中指定要查询的属性列。 [例3.16]:查询全体学生的学号与姓名。 12SELECT Sno,SnameFROM Student; 该语句的执行过程可以是这样的:从Student表中取出一个元组,取出该元组在属性Sno和Sname上的值,形成一个新的元组 2024-03-17 Software BackEnd Database 关系数据库 DDL 数据查询
SQL 视图 SQL 视图 还可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。 视图机制间接地实现支持存取谓词的用户权限定义,例如,在某大学中假定王平老师只能检索计算机系学生的信息,系主任张明具有检索和增删改计算机系学生信息的所有权限,这就要求系统能支持"存取谓词"的用户权限定 2024-03-17 Software BackEnd Database 关系数据库 DCL
SQL 用户与权限 SQL 用户与权限 用户管理 查看用户 用户信息表。 1SELECT * FROM mysql.user 添加用户 12CREATE USER '用户名' IDENTIFIED BY ['PASSWORD'] [WITH] [DBAA|RESOURCE|CONNECT];CREATE USER test IDENTIFIED BY '12345 2024-03-17 Software BackEnd Database 关系数据库 DCL
SQL 函数 SQL 函数 数据函数 1234567891011121314ABS(x) -- 绝对值 abs(-10.9) = 10FORMAT(x, d) -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46CEIL(x) -- 向上取整 ceil(10.1) = 11FLOOR(x) -- 向下取 2024-03-17 Software BackEnd Database 关系数据库 DDL
SQL 数据库角色 SQL 数据库角色 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合,因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。 在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。 角色的创建 创建角色的SQL语句格式是: 1CREATE ROLE <角色名> 2024-03-17 Software BackEnd Database 关系数据库 DCL
SQL 审计 SQL 审计 AUDIT语句用来设置审计功能,NOAUDIT语句则取消审计功能。 审计一般可以分为用户级审计和系统级审计,用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。 统级审计只能由数据库管理员设置,用以i检测成功或失败的登陆要求,监测授权和收回操作以及其他数据库级权限下的 2024-03-17 Software BackEnd Database 关系数据库 DCL
Redis 高可用问题 Redis 高可用问题 缓存穿透 缓存穿透是指用户请求的数据在缓存中不存在即没有命中,同时在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍,如果有恶意攻击者不断请求系统中不存在的数据,会导致短时间大量请求落在数据库上,造成数据库压力过大,甚至导致数据库承受不住而宕机崩溃。 缓存穿透的关键在于在Redis中查不到key值,它和缓存击穿的根本区别在于传进来的key在Redis中是不存 2024-03-17 Software BackEnd Database Redis
Redis 哨兵模式 Redis 哨兵模式 哨兵模式能够后台监控主机是否故障,如果故障了则自动将从节点转换为主节点。 原理 哨兵通过发送命令,等待 Redis服务器响应,从而监控运行的多个 Redis实例,让 Redis服务器返回其运行状态。 当哨兵监测到主节点宕机,会自动将从节点切换成主节点,然后通过发布订阅模式通知其他的从节点,修改配置文件并切换主节点。 当主节点恢复连接后,原主节点自动转换为从节点,现主节点不 2024-03-17 Software BackEnd Database Redis 高可用
Redis 主从复制 Redis 主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点(master/leader) ,后者称为从节点(slave/follower) 默认情况下,每台Redis服务器都是主节点,且一个主节点可以有0或多个从节点,但一个从节点只能有一个主节点,数据的复制是单向的,只能由主节点到从节点。 作用 数据冗余:主从复制实现了数据的热备份,是 2024-03-17 Software BackEnd Database Redis 高可用
Redis 配置文件 Redis 配置文件 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf 查看配置 可以通过 CONFIG 命令或配置文件查看配置项。 1$ CONFIG GET CONFIG_SETTING_NAME 实例 1234$ CONFIG GET loglevel1) "loglevel"2) "notice" 使用 * 2024-03-17 Software BackEnd Database Redis
Redis Cluster Redis Cluster Cluster 是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。 优点 通过利用多台计算机内存,可以构造更大的数据库。 通过利用多台计算机的多核,允许我们扩展计算能力。 通过利用多台计算机的网络适配器,可以扩展网络带宽。 Cluster 的不足 涉及多个key的操作通常是不被支持的,例如,当两个set映射到不同的Redis实例上时 2024-03-17 Software BackEnd Database Redis 高可用
管理Redis数据库 管理Redis数据库 select Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。 Redis默认有0~15共16个数据库,可在配置文件中修改。 1$ SELECT index 实例 12345678910111213141516171819$ SET db_number 0 # 默认使用 0 号数据库。O 2024-03-17 Software BackEnd Database Redis
Redis 管理服务 Redis 管理服务 启动Redis Redis 通过监听一个 TCP 端口或者 Unix Socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 Socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个 Socket 设置TCP_NODELAY属性,禁用 Nagle 算法。 然后创 2024-03-17 Software BackEnd Database Redis
Redis 测试 Redis 测试 ping 使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。 1$ PING 实例 123456789# 客户端和服务器连接正常$ PINGPONG# 客户端和服务器连接不正常(网络不正常或服务器未能正常运行)$ PINGCould not connect to Re 2024-03-17 Software BackEnd Database Redis