软考数据库---2.SQL语言
主要记忆:表、索引、视图操作语句;数据操作;通配符、转义符;授权;存储过程;触发器
这部分等等整理一下:
“”"
1、 数据定义语言。 SQL DDL提供定义关系模式和视图、 删除关系和视图、 修改关系模式的命令。
数据库 DDL 的全称是 Data Definition Language。
2、 交互式数据操纵语言。 SQL DML提供查询、 插入、 删除和修改的命令。
3、 事务控制。 SQL提供定义事务开始和结束的命令。
4、 嵌入式SQL和动态SQL。 用于嵌入到某种通用的高级语言中混合编程。 其中, SQL负责操纵数据库,
高级语言负责控制程序流程。
5、 完整性。 SQL DDL包括定义数据库中的数据必须满足的完整性约束条件的命令, 对于破坏完整性
约束条件的更新将被禁止。
6、 权限管理。 SQL DDL中包括说明对关系和视图的访问权限。
7、 SQL语言中完成核心功能的9个动词:
(1) 数据查询: Select
(2) 数据定义: Create、 Drop、 Alter
(3) 数据操纵: Insert、 Update、 Delete
(4) 数据控制: Grant、 Revoke
不常用的sql语句
check 为什么不用in?
数据库表的复合属性:是指由两个或更多基本属性组成,用来共同描述一个复杂的数据项的属性。复合属性体现了现实世界中某些实体属性的内在联系与结构化特征,它们不能被进一步拆分为独立的、原子性的属性。在数据库设计中,复合属性有助于更准确、更完整地表示实体的复杂特性,同时也便于数据的一致性和完整性管理。以下是对复合属性的详细说明:
示例与特征
示例:
家庭住址:由省、市、区、街道、门牌号等多个部分构成,这些部分一起构成了一个完整的地址信息。
联系电话:可能包括国家代码、区号、电话号码,甚至分机号,整体构成了一个可拨打的电话联系方式。
时间戳:由年、月、日、时、分、秒组成,共同标识一个精确的时间点。
“”"
发权限
grant 允许;同意
赋所有权限:GRANT ALL PRIVILEGES
on 表 to人
收权限
revoke 撤回
RESTRICT 限制
CASCADE 垂直
视图
行级视图:通常指从行的角度来理解和操作矩阵。
列级视图:更强调从列的角度来分析矩阵。
触发器
触发器是一种特殊的数据库对象,它们与特定的表相关联,并且在特定的数据库操作(即事件)发生时自动执行预定义的逻辑。
触发器通常与以下三种数据库操作事件关联:
- INSERT:当向表中插入新行时触发。
- UPDATE:当修改表中已存在的行时触发。
- DELETE:当从表中删除行时触发。
SELECT不使用触发器
这些事件均涉及到对表数据的实际改动,因此触发器可以在这些操作前后执行,以便检查条件、执行额外的数据修改、记录变更历史或其他所需的操作。
行级触发器(Row-Level Trigger): 行级触发器是在对表中的某一行执行 INSERT、UPDATE 或 DELETE 操作时被触发的。每当这样的操作影响到表中的一个具体行时,行级触发器就会被激活并执行一次。这意味着,如果一个 SQL 语句影响到了多行数据(例如,一个批量更新或删除操作),行级触发器会为受影响的每一行单独触发并执行一次。行级触发器可以在触发操作之前(BEFORE 触发器)或之后(AFTER 触发器)执行,适用于需要对每一行变化进行细致控制、日志记录、数据校验、计算派生值等场景。
语句级触发器(Statement-Level Trigger): 语句级触发器则是在执行某个影响表的 SQL 语句时,无论该语句影响了多少行数据,触发器只会被触发一次。也就是说,即使一个 SQL 语句更改了成百上千行,语句级触发器也仅执行一次其定义的逻辑。这类触发器适用于需要对整个操作过程进行统一处理、执行一次性清理或初始化任务、或者在事务层面实施某种策略的情况。
创建触发器时需指定:
(1) 触发器名称
(2) 在其上定义触发器的表
(3) 触发事件: 触发器将何时激发
(3) 触发条件: 满足什么条件时执行触发动作
(4) 触发动作: 指明触发器执行时应做的动作
创建触发器
更改、删除触发器
嵌入式SQL
类似于mybatis,能在c、java等其他代码里面,直接调用sql。
例如:在c语言中的使用
#include <stdio.h>
#include <sql.h> /* 假设为某个数据库提供的头文件 */int main() {int emp_id;char name[50];float salary;/*EXEC SQL 调用 sql*/EXEC SQL SELECT name, salary INTO :name, :salary FROM employees WHERE id = :emp_id;if (sqlca.sqlcode == 0) { /* sqlca 检查SQL执行状态 */printf("Employee Name: %s\nSalary: %.2f\n", name, salary);} else {printf("Error retrieving employee details: %s\n", sqlca.sqlerrm.sqlerrmc); /* 输出错误信息 */}/* 关闭数据库连接等后续操作 */return 0;
}
SQL提供了将SQL语句嵌入到某种高级语言中的方式, 通常采用预编译的方法。
1、 区分主语言与SQL语句的方式:EXEC SQL <SQL语句>
2、 向主语言传递SQL语句执行的状态信息的方式:SQLCA
3、 主变量(共享变量) :
• 主语言通过主变量向SQL语句提供参数, 主变量是由主语言的程序定义的, 并用SQL的DECLARE语句说明。
• 在SQL语句中, 为了与SQL中的属性名区分, 在引用共享变量时, 前面需要加“: ”
游标
这是啥,会不了一点,等等再学。
存储过程
存储过程是指保存的SQL语句集合,可以接受和返回用户提供的参数。
存储过程已在服务器注册。
存储过程具有安全特性(例如权限)和所有权链接,以及可以附加到它们的证书。
存储过程可以强制应用程序的安全性。
存储过程允许模块化程序设计。
存储过程是命名代码,允许延迟绑定。
存储过程可以减少网络通信流量。
回顾
学了一大圈,其实要记得语句并不多,在这里总结个背诵版:
参加软考(全国计算机技术与软件专业技术资格(水平)考试)的数据库相关考试,考生需要熟悉和掌握一系列 SQL 语句以应对试题中涉及的数据库操作与查询任务。以下是一些关键的 SQL 语句类别和具体的语法,这些都是备考时应重点复习和理解的内容:
数据定义语言 (Data Definition Language,DDL)
处理数据库、表、索引、视图
数据库和表的操作
-
创建数据库 (
CREATE DATABASE
):CREATE DATABASE database_name;
-
删除数据库 (
DROP DATABASE
):DROP DATABASE database_name;
-
创建表 (
CREATE TABLE
):CREATE TABLE table_name (column1 datatype [column_constraint],column2 datatype [column_constraint],...[table_constraint] );
-
删除表 (
DROP TABLE
):DROP TABLE table_name;
-
修改表 (
ALTER TABLE
):- 添加列:
ALTER TABLE table_name ADD COLUMN column_name datatype [column_constraint];
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 更改列定义:
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype [column_constraint];
- 重命名列:
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
- 添加、修改或删除表约束:
ALTER TABLE table_name ADD [CONSTRAINT constraint_name] constraint_type ...; ALTER TABLE table_name DROP CONSTRAINT constraint_name;
- 添加列:
索引
-
创建索引 (
CREATE INDEX
):CREATE [UNIQUE] INDEX index_name ON table_name (column_name [ASC|DESC]);
-
删除索引 (
DROP INDEX
):DROP INDEX index_name ON table_name;
视图
关键词:as sql语句
-
创建视图 (
CREATE VIEW
):CREATE VIEW view_name AS SELECT column_list FROM table_name WHERE condition;
-
修改视图 (
ALTER VIEW
): 视图修改通常限于重定义视图的查询语句。ALTER VIEW view_name AS SELECT column_list FROM table_name WHERE new_condition;
-
删除视图 (
DROP VIEW
):DROP VIEW view_name;
数据操纵语言 (DML)
DML是处理数据的,DDL是处理数据库的。
数据操作
-
插入数据 (
INSERT
):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
-
更新数据 (
UPDATE
):UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
-
删除数据 (
DELETE
):DELETE FROM table_name WHERE condition;
查询数据
-
基本查询 (
SELECT
):SELECT column_list FROM table_name [WHERE condition] [ORDER BY column_name [ASC|DESC]];
-
联接查询 (
JOIN
):SELECT column_list FROM table1 JOIN table2ON table1.column = table2.column [WHERE condition]; -- 包含 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
-
分组与聚合函数 (
GROUP BY
,HAVING
,COUNT
,SUM
,AVG
,MIN
,MAX
):SELECT column1, COUNT(column2), AVG(column3) FROM table_name GROUP BY column1 HAVING condition;
-
子查询 (
SELECT
withinSELECT
):SELECT column_list FROM table_name WHERE column IN (SELECT subquery_column FROM another_table WHERE condition);
-
集合查询 (
UNION
,INTERSECT
,EXCEPT
):SELECT column_list FROM table1 UNION [ALL] SELECT column_list FROM table2;
数据控制语言 (DCL)
管理权限
权限管理
-
授予权限 (
GRANT
):GRANT privilege_list ON object TO user [WITH GRANT OPTION];
-
收回权限 (
REVOKE
):REVOKE privilege_list ON object FROM user;
事务处理 (BEGIN TRANSACTION
, COMMIT
, ROLLBACK
):
BEGIN TRANSACTION;
-- SQL statements...
COMMIT;
-- 或
ROLLBACK;
触发器 (CREATE TRIGGER
):
CREATE TRIGGER trigger_name
[BEFORE|AFTER] event_type ON table_name
FOR EACH ROW
BEGIN-- SQL statements...
END;
存储过程 (Stored Procedure)
存储过程是一种预编译的数据库对象,包含一组可重复使用的SQL语句和控制流语句。存储过程封装了复杂的业务逻辑,提高了代码复用性、执行效率和安全性。
类似于python函数,java中定义类
创建存储过程
CREATE PROCEDURE procedure_name
([IN param1 datatype, OUT param2 datatype, ...]
)
BEGIN-- SQL statements, control flow constructs (IF, CASE, LOOP, etc.)-- and other procedures or functions calls
END;
调用存储过程
CALL procedure_name(param_value1, param_value2, ...);
修改存储过程
ALTER PROCEDURE procedure_name
BEGIN-- Updated SQL statements and logic
END;
删除存储过程
DROP PROCEDURE procedure_name;
嵌入式SQL (Embedded SQL)
嵌入式SQL是将SQL语句直接嵌入到高级程序设计语言(如C、C++、Java等)源代码中的一种编程技术。
定义与使用主变量
EXEC SQL BEGIN DECLARE SECTION;
int id;
char name[50];
EXEC SQL END DECLARE SECTION;// ...EXEC SQL SELECT id, name INTO :id, :name FROM employees WHERE id = 1;
预编译与动态SQL
- 使用预编译器对嵌入SQL的源代码进行预处理。
- 使用
EXEC SQL INCLUDE
或EXEC SQL PREPARE
语句处理动态SQL。
游标 (Cursor)
游标是数据库中用于遍历、检索和操作结果集的一种机制。
虽然游标和存储过程都能使用控制语句,但是游标主要用来处理查询结果,类似于dao层的xml文件,而存储过程处理完会改变表存储。
声明游标
DECLARE cursor_name CURSOR FOR
SELECT column_list FROM table_name WHERE condition;
打开游标
OPEN cursor_name;
使用游标读取数据
FETCH cursor_name INTO variable_list;
关闭游标
CLOSE cursor_name;
游标操作示例
DECLARE employee_cursor CURSOR FOR
SELECT id, name, salary FROM employees WHERE department = 'IT';OPEN employee_cursor;LOOPFETCH employee_cursor INTO emp_id, emp_name, emp_salary;EXIT WHEN NOT FOUND;-- Process fetched row-- ...
END LOOP;CLOSE employee_cursor;
相关文章:
软考数据库---2.SQL语言
主要记忆:表、索引、视图操作语句;数据操作;通配符、转义符;授权;存储过程;触发器 这部分等等整理一下: “”" 1、 数据定义语言。 SQL DDL提供定义关系模式和视图、 删除关系和视图、 修改关系模式的…...
基于顺序表实现通讯录
上篇我们讲了顺序表是什么,和如何实现顺序表。这篇文章我们将基于顺序表来实现通讯录。 文章目录 前言一、基于顺序表是如何实现的二、通讯录的头文件和实现文件三、通讯录的实现3.1 定义通讯录结构3.2 初始化通讯录3.3 销毁通讯录3.4 通讯录添加数据3.5 查找联系人…...
咸鱼之王_手游_开服搭建架设_内购修复无bug运营版
视频演示 咸鱼之王_手游_开服 游戏管理后台界面 源码获取在文章末尾 源码获取在文章末尾 源码获取在文章末尾 或者直接下面 https://githubs.xyz/y28.html 1.安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &…...
【JSON2WEB】14 基于Amis的CRUD开发30分钟速成
【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…...
Java入门教程||Java 变量
Java 变量 Java教程 - Java变量 变量由标识符,类型和可选的初始化程序定义。变量还具有范围(可见性/生存期)。 Java变量类型 在Java中,必须先声明所有变量,然后才能使用它们。变量声明的基本形式如下所示࿱…...
基于Java的校园快递一站式服务系统 (源码+文档+包运行)
一.系统概述 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园快递一站式服务系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞…...
通讯录的实现(顺序表版本)
我们知道通讯录是基于顺序表的前提下,要写好通讯录我们就要深入了解好顺序表。我们先来看看什么是顺序表。(注意今天代码量有点多,坚持一下)。冲啊!兄弟们! 顺序表的简单理解 对于顺序表,我们首…...
利用Sentinel解决雪崩问题(一)流量控制
1、解决雪崩问题的常见方式有四种: 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待;舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离;熔断降级:由断路器统计业务…...
二叉树总结
递归返回值 1、如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值。 2、如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。 3、如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,…...
接口优化技巧
一、背景 针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案 二、接口优化方案总结 1.批处理 批量思想:批量操作数据库&a…...
【工具】NPS 内网穿透搭建
背景 在日常开发中经常会涉及到使用公网某个端口进行开发调试的情况,但我们日常开发的机器IP是非公网IP,所以需要使用内网穿透的手段,使我们的服务在公网上能被访问到。 常用的内网穿透工具分两大类,一类是付费/免费服务…...
【数学】主成分分析(PCA)的详细深度推导过程
本文基于Deep Learning (2017, MIT),推导过程补全了所涉及的知识及书中推导过程中跳跃和省略的部分。 blog 1 概述 现代数据集,如网络索引、高分辨率图像、气象学、实验测量等,通常包含高维特征,高纬度的数据可能不清晰、冗余&am…...
微信跳转页面时发生报错
报错如下图所示: 解决方法:(从下面四种跳转方式中任选一种,哪种能实现效果就用哪个) 带历史回退 wx.navigateTo() //不能跳转到tabbar页面 不带历史回退 wx.redirectTo() //跳转到另一个页面wx.switchTab() //只能…...
8:系统开发基础--8.1:软件工程概述、8.2:软件开发方法 、8.3:软件开发模型、8.4:系统分析
转上一节: http://t.csdnimg.cn/G7lfmhttp://t.csdnimg.cn/G7lfm 课程内容提要: 8:知识点考点详解 8.1:软件工程概述 1.软件的生存周期 2.软件过程改进—CMM Capability Maturity Model能力成熟度模型 3.软件过程改进—CMMI—…...
【简单讲解下Symfony框架】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
[Linux基础]ln硬链接和ln -s软链接的方法参数及区别
区别: 1、ln创建硬链接;ln -s 创建软链接 2、硬链接的两个文件指向同一个inode(inode:存放着文件的目录、权限、block块编号等信息);软链接的目标文件指向源文件,目标文件内存储的是源文件的目…...
开源博客项目Blog .NET Core源码学习(15:App.Hosting项目结构分析-3)
本文学习并分析App.Hosting项目中前台页面的关于本站页面和点点滴滴页面。 关于本站页面 关于本站页面相对而言布局简单,与后台控制器类的交互也不算复杂。整个页面主要使用了layui中的面包屑导航、选项卡、模版、流加载等样式或模块。 面包屑导航。使用layui…...
【muzzik 分享】3D模型平面切割
# 前言 一年一度的征稿到了,倒腾点存货,3D平面切割通常用于一些解压游戏里,例如水果忍者,切菜这些,今天我就给大家讲讲怎么实现3D切割以及其原理,帮助大家更理解3D中的 Mesh(网格),以及UV贴图和…...
SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…...
nodejs安装常用命令
安装 Node.js 后,你可以在命令行中使用以下常用命令: node:启动 Node.js 的交互式解释器,可以直接在命令行中执行 JavaScript 代码。 npm install <package-name>:安装一个 Node.js 模块,<packag…...
使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态
作者:朱亚光,之江实验室工程师,云原生/开源爱好者。 KubeSphere 边缘节点的可观测性 在边缘计算场景下,KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应…...
OSI七层网络模型 —— 筑梦之路
在信息技术领域,OSI七层模型是一个经典的网络通信框架,它将网络通信分为七个层次,每一层都有其独特的功能和作用。为了帮助记忆这七个层次,有一个巧妙的方法:将每个层次的英文单词首字母组合起来,形成了一句…...
状态模式:管理对象状态转换的动态策略
在软件开发中,状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。这种模式把与特定状态相关的行为局部化,并且将不同状态的行为分散到对应的状态类中,使得状态和行为可以独立变化。本文将详细介绍状态…...
【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器
【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器一、介绍二、联系工作三、方法四、实验结果 Multi-class Token Transformer for Weakly Supervised Semantic Segmentation 本文提出了一种新的基于变换…...
FMix: Enhancing Mixed Sample Data Augmentation 论文阅读
1 Abstract 近年来,混合样本数据增强(Mixed Sample Data Augmentation,MSDA)受到了越来越多的关注,出现了许多成功的变体,例如MixUp和CutMix。通过研究VAE在原始数据和增强数据上学习到的函数之间的互信息…...
2024蓝桥A组A题
艺术与篮球(蓝桥) 问题描述格式输入格式输出评测用例规模与约定解析参考程序难度等级 问题描述 格式输入 无 格式输出 一个整数 评测用例规模与约定 无 解析 模拟就好从20000101-20240413每一天计算笔画数是否大于50然后天数; 记得判断平…...
Linux journalctl命令详解
文章目录 1.介紹2.概念设置system time基本的日志查阅方法按时过滤日志(by Time)显示本次启动以来的日志(Current Boot)按Past Boots按时间窗口按感兴趣的消息筛选按unit按进程、用户、Group ID按组件路径显示内核消息按消息优先级…...
恢复MySQL!是我的条件反射,PXB开源的力量...
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...
Storm详细配置
一、认识Storm Apache Storm是个实时数据处理的“大能”,它可以实时接收、处理并转发大量数据流,就像一个高速运转的物流中心,确保数据及时、准确地到达目的地。我们要做的,就是把这个物流中心搭建起来,并且根据我们的…...
linux redis部署教程
单节点部署: 单节点部署 Redis 非常简单,只需要在一台服务器上安装 Redis 服务即可。以下是在 Linux 环境下的单节点部署步骤: 安装 Redis:打开终端,并执行以下命令来更新软件包列表并安装 Redis 服务器:…...
阿里云服务器学生优惠/宁波seo外包平台
1、测试心理 上文中曾经提到过研发和测试在思路和观念上的一些矛盾。多数情况下,研发工程师并不精通软件测试的思路,因此可能会认为测试无非就是走一个流程,认为“软件测试就是证明软件不存在错误的过程”,或者“测试的目的在于证…...
网站解析不过来/郑州网站推广
令人头疼的问题 现在,Docker技术正如狂风暴雨般改变着我们的基础设施架构。在腾讯,我们构建了大规模的容器云平台,其上运行了不同的应用,如广告推荐,消息推送等。其中也包括了像机器学习模型训练这类任务,这…...
河南那家公司做家具行业网站好/重庆seo排名外包
十步法的第二步是竞争对手分析,说到底其实就是“机会大不大”。比如,现在手头上有一张完整的香喷喷的大饼,是只有你一个人还是有好几个竞争对手都流着口水“觊觎”着这块大饼?实力强弱决定了能够抢到的大饼份额的大小,…...
ui做网站流程/网站提交
PublicClassTestClass Test Private_classid AsString <summary> 设置和获取分类ID </summary>PublicPropertyclassid() GetReturn_classid EndGetSet(ByValvalue) _classid value EndSetEnd PropertyEnd Class...
怀化网站seo/青岛seo青岛黑八网络最强
white-space:nowrap; overflow:hidden; -o-text-overflow:ellipsis; text-overflow:ellipsis; 语法: text-overflow : clip | ellipsis 参数: clip : 不显示省略标记(...),而是简单的裁切 (clip这个参数是不常用的!) ellipsis : 当对象内…...
上海企业网站设计制作/销售网站排名
hash赋能前言一、缺失的第一个正数二、hash赋能1、hashSet2、原地数组hash总结参考文献前言 hash赋能可以为后面的工作大大减少搜索的时间,可用hash数组、hashSet、hashMap、原地数组hash。 一、缺失的第一个正数 二、hash赋能 1、hashSet //hash赋能//Time:O(n…...