02. SQL note

先登陆服务器: telnet 192.168.0.23 公帐号: openlab-open123 tarena-tarena
再进入SQL:sqlplus sd0807/sd0807 帐号:sd0807-密码同样 公帐号:openlab-open123

设置环境变量:
ORACLE_SID=oral10g\ --变局部变量
export ORACLE_SID --变全局变量
unset ORACLE_SID --卸载环境变量
ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下
export ORACLE_HOME=/oracledata/.../bin:

一、注意事项:
大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。
“!”在SQL环境下执行Unix命令。
SQL语句是由简单的英语单词构成;这些英语单词称为关键字/保留字,不做它用。SQL由多个关键字构成。
SQL语句由子句构成,有些子句是必须的,有些是可选的。
在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。
SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。
多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。
SQL语句的最后一句要以 “;”号结束

二、写子句顺序
Select column,group_function
From table
[Where condition]
[Group by group_by_expression]
[Having group_condition]
……
[Order by column]; --最后

三、常用简单语句:
clear screen:清屏
edit:编辑刚才的一句。
desc/describe:(列出所有列名称)
用法: DESCRIBE [schema.]object[@db_link]
dual:亚表,临时用。如:desc dual;/from dual;
rollback:回溯,回溯到上次操作前的状态,把这次事务操作作废,只有一次(DDL和DCL语句会自动提交,不能回溯)。
可以用commit语句提交,这样就回溯不回了。
set pause on\off :设置分屏(设置不分屏)
set pause "please put an enter key" 且 set pause on:设置带有提示的分屏
oerr ora 904 :查看错误
set head off :去掉表头
set feed off :去掉表尾
保存在oracle数据库中的所有操作细节:
spool oracleday01.txt :开始记录
spool off :开始保存细节

四、SELECT语句:选择操作、投影操作。
select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用)
当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。
当两个表有相同字段时必须加前缀,列名前需加表名和“.”,如“s_emp.id”。
1、用法:SELECT columns,prod2,prod3<列> FROM Table1,table2<表名> 分号结束
如: select id from s_emp;
select last_name,name from s_emp,s_dept where s_emp.dept_id=s_dept.id;--列表每人所在部门
SELECT * FROM Products; --检索所有列。
数据太多时,最好别使用上句,会使DBMS降低检索和应用程序的性能。(*通配符)
2、对数据类型的列可进行运算(如加减乘除)。
3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法
(单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号)
多表查询时,可给表起别名。(给列起别名,列<空格>列别名;给表起别名,表<空格>表别名;)。
如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E;
4、字段的拼接,可用双竖线(双竖线只能用于select语句里)。不同的DBMS可能使用不同的操作符;拼接的字段同样可以起别名。
如:Select first_name ||' '|| last_name || ', '|| title "Employees" From s_emp;

排他锁:Select id,salary From s_emp where id=1 For Update;
可以阻止他人并发的修改,直到你解锁。
如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait;
FOR UPDATE :可以再加 OF 精确到某格。如: ... For Update OF salary ...
注意要解锁。

五、ORDER BY 子句,排序
Order by:按某排序列表(默认升序 asc,由低到高;可加 desc,改成降序由高到低)
检索返回数据的顺序没有特殊意义,为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。
ORDER BY 子句取一个或多个列的名字。
对空值,按无穷大处理(升序中,空值排最后;降序中排最前)。
1、用法:Select prod_id,prod_price,prod_name From Products Order By prod_price,prod_name;
(从左到右执行排序,先排price)
ORDER BY子句中使用的列将是为显示所选择的列,但是实际上并不一定要这样,用非检索的列排序数据是完全合法的。
为了按多个列排序,列名之间用逗号分开。
2、支持按相对列位置进行排序。
输入 SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY 2,3 --(2指price,3指name)
3、升序、降序。默认是升序(asc,从小到大排序),想降序时用desc。
如:SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC;
注意:DESC 关键字只应用到直接位于其前面的列名。如果想在多个列上进行排序,必须对每个列指定DESC关键字。
升序是默认的,可不写,但降序必须写。


六、WHERE子句,选择、过滤
其后只能跟逻辑语句,返回值只有ture或false
如: select last_name,salary from s_emp where salary=1000;--找出工资1000的人

WHERE子句操作符:
1、逻辑比较运算符
= 等于
!= 不等于,还有(<> ^= 这两个同样表示不等于)
> 大于
>= 大于等于
< 小于
<= 小于等于

2、SQL 比较运算符
between…and… :在两者之间。(BETWEEN 小值 AND 大值)
如:select last_name,salary from s_emp where salary between 1000 and 1500;
--工资1000到1500的人,包括1000和1500。
in(列表):在列表里面的。
如:select last_name,dept_id from s_emp where dept_id in(41,42);第41、42部门的人
like : 包含某内容的。模糊查询
可以利用通配符创建比较特定数据的搜索模式,通配符只能用于文本,非文本数据类型不能使用通配符。
通配符在搜索模式中任意位置使用,并且可以使用多个通配符。
通配符%表示任何字符出现任意次数;还能代表搜索模式中给定位置的0个或多个字符。下划线匹配单个任意字符。
如:select table_name from user_tables where table_name like 'S\_%' escape'\';
' 找出“S_“开头的,由于下划线有任意字符的含义,故需另外定义转移符。
但习惯用“\”,为方便其他程序员阅读和检测,一般不改用其他的。
like 'M%':M开头的 like '_a%':第二个字符是a的 like '%a%'所有含a的
(“_”表示一个任意字符;“%”表示任意多个任意字符。)
单引号里面的内容,大小写敏感。单引号用来限定字符串,
如果将值与串类型的列进行比较,则需要限定引号;用来与数值列进行比较时,不用引号。
is null:是空。(NULL表示不包含值。与空格、0是不同的。)
如:SELECT prod_name,prod_price FROM Products WHERE prod_price IS NULL;


七、高级检索(逻辑运算符):
通常我们需要根据多个条件检索数据。可以使用AND或OR、NOT等连接相关的条件
计算次序可以通过圆括号()来明确地分组。不要过分依赖默认计算次序,使用圆括号()没有坏处,它能消除二义性。

and:条件与
如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price<4 AND vend_id=‘DELL’
or:条件或 (注: and 的优先级比 or 更高,改变优先级可用括号)
如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price<4 OR vend_id=‘DELL’
not:条件非。否定它之后所跟的任何条件
否定的SQL 比较运算符: NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL:
(注意,按英语习惯用 is not,而不是 not is)
NOT 与 IN 在一起使用时,NOT 是找出与条件列表不匹配的行。
IN 列表里有 NULL 时不处理,不影响结果;用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。
in :选择列表的条件
使用IN操作符的优点: 在长的选项清单时,语法直观; 计算的次序容易管理;
比 OR 操作符清单执行更快;最大优点是可以包含其他 SELECT 语句,使用能够动态地建立 WHERE 子句。
如 SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id IN(‘DELL’,’RBER’,’TTSR’);


八、单行函数:
函数一般在数据上执行,它给数据的转换和处理提供了方便。不同的DBMS提供的函数不同。
函数可能会带来系统的不可移植性(可移植性:所编写的代码可以在多个系统上运行)。
加入注释是一个使用函数的好习惯。
大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。

Null:空值
空值当成无穷大处理,所有空值参与的运算皆为空。
空值与空值并不相等,因为空值不能直接运算。
如:prod_price="" 这种写法是错的(不要受到corejava的影响)
prod_price=NULL 这种写法是错的(不要受到corejava的影响)
prod_price IS NULL 这种写法才是对的
NVL:处理空值,把空值转化为指定值。可转化为日期、字符、数值等三种(注意:转化时,两参数必须要同类型)
如:NVL(date, '01-JAN-95') NVL(title,'NO Title Yet') NVL(salary,0)
错误写法:
Select last_name,title,salary*commission_pct/100 COMM From s_emp;--没提成的人没法显示工资
正确写法:
Select last_name,title,salary*NVL(commission_pct,0)/100 COMM From s_emp;--把提成是空值的转化为0

DISTINCT:过滤重复
把重复的行过滤掉;多个字段组合时,只排除组合重复的。
DISTINCT必须使用列名,不能使用计算或者表达式。
所有的聚合函数都可以使用。如果指定列名,则DISTINCT只能用于COUNT(列名),DISTINCT不能用于COUNT(*)。
如:Select Distinct name From s_dept; Select Distinct dept_id,title From s_emp;

文本处理:
TRIM()/LTRIM()/RTIRM():去空格。只能去掉头和尾的空格,中间的不理。
trim(' heo Are fdou ') --> heo Are fdou
输入:select trim(' heo Are fdou ') from dual; -->:heo Are fdou
LOWER:转小写
lower('SQL Course') --> sql course
UPPER:转大写
upper(' SQL Course') --->SQL COURSE
INITCAP:首字母转大写,其余转小写
initcap(SQL Course') '--> Sql Course

CONCAT:合成。双竖线只能在select语句里面用,这个可用于任何语句。
Concat('Good','String') --> GoodString
SUBSTR:截取。
Substr('String', 1 ,3) --> Str
第一个数字“1”,表示从第几个开始截取;若要从倒数第几个开始,用负数,如“-2”表示倒数第2个。
上式中第2个数字“3”表示截取多少个。
LENGTH:统计长度。
Length('String') --> 6
NVL:转换空值

日期和时间处理:
Oracle日期格式:DD-MMM-YYYY (D代表日期date,M代表月month,Y代表年year)
如:SELECT prod_name (DAY表示完整的星期几,DY显示星期的前三个字母)
FROM Products
WHERE prod_time BETWEEN
to_date(’01-JAN-2008’)
AND to_date(’31-DEC-2008’);
日期可以进行加减,默认单位是1天。日期与日期可以相减,得出天数;日期与日期但不能相加。
sysdate -> 系统的当天
Months_Between('01-Sep-95','11-Jan-94') --> 19.774194 相差多少个月,Between里面也可以填函数。
Add_months('11-Jan-94',6) --> 11-Jul-94 增加多少个月
Next_day('01-Sep-95','Friday') --> '08-Sep-95' 下一个星期五。其中的'Friday'可用6替代,因为星期日=1
Last_day('01-Sep-95') --> '30-Sep-95' 这个月的最后一天


数值处理:可以运用于代数,三角,几何
ROUND:四舍五入
Round(45.925,2) -> 45.93 Round(45.925,0) -> 46 Round(45.925,-1) -> 50
逗号前一个数是要处理的数据源,后一个参数表示保留多少位小数。
后一参数是负数时,表示舍去小数点前的几位,例3是舍去个位及其后的。不写后一参数时,默认不保留小数。
TRUNC:舍去末位。直接舍去,不会进位。
Trung(45.925,2) -> 45.92 Trung(45.925,2) -> 45.92 Trung(45.925,2) -> 45.92
日期的舍取:


常用的数值处理函数有:
ABS() 绝对值 ABS(-5741.5854) --> 5741.5854
PI() 圆周率 注意:oracle中不支持 PI()函数;MYSql 支持PI()函数。
SIN() 正统值 Oracle还支持COS()、ASIN()、ACOS()函数
SQRT() 平方根


转化:
TO_CHAR(number,'fmt'):把数值转换成字符串
显示数字的命令
9:正常显示数字;
0:显示包括0的数值形式,空位强制补0;
$:以美元符号显示货币;
L:按当前环境显示相关的货币符号;
. 和,:在固定位置出现“.”点 和“,”逗号;不够位时,四舍五入。
例题:SQL> select 'Order'||To_char(id)||
2 'was filled for a total of'
3 ||To_char(total,'fm$9,999,999')
4 from s_ord
5 where ship_date ='21-SEP-92';

TO_NUMBER(char):把字符转换成数字


九、链接
内链接:严格匹配两表的记录。
外链接分左链接和右链接:
会使用一方表中的所有记录去和另一格表中的记录按条件匹配,空值也会匹配,这个表中的所有记录都会显示,
数据库会模拟出记录去和那些不匹配的记录匹配。
左链接 加号在右面
如:有 TABLE1 TABLE2
1的一条记录在2里面没有匹配上,那么1里面的记录保留
2的一条记录在1里面没有匹配上 ,那么2丢弃
右链接正好相反
--例题:哪些人是领导。
select distinct b.id,b.last_name manager
from s_emp a,s_emp b
where a.manager_id=b.id(+);
左右顺序有区别,这是另外新建一个表,要显示的是第二个表格的内容。
+放在没有匹配行的表一侧,令表格能完整显示出来。

标准写法:内连接用INNER,左连接用LEFT,右连接用RIGHT。
select distinct b.id,b.last_name manager
from s_emp a LEFT join s_emp b
ON a.manager_id=b.id;


十、组函数:
分组允许将数据分为多个逻辑组,以便能对每个组进行聚集计算。
Group:分组
Group by:分组。(默认按升序对所分的组排序;想要降序要用 order by)可以包括任意数目的列。
如果嵌入了分组,数据将在最后规定的分组上进行汇总。
GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式,但不能是聚集函数。
*如果在SELECT 中使用表达式,则必须在GROUP BY子句中指定相同的表达式,不能使用别名。
除聚合计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。
如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL,它们将分为一组。

Having:过滤。分组之后,不能再用where,要用having 选择过滤。Having不能单独存在,必须跟在group by后面。
WHERE在数据分组前进行过滤,HAVING在数据分组后过滤。
可以在SQL中同时使用 WHERE和HAVING,先执行WHERE,再执行HAVING。


聚合函数:
AVG:平均值 (忽略值为NULL的行,但不能用 AVG(*))
COUNT:计数 (Count(列)不计算空值;但 COUNT(*)表示统计表中所有行数,包含空值)
MAX:最大值 (忽略列值为 NULL 的行。但有些DBMS还允许返回文本列中的最大值,
在作用于文本数据时,如果数据按照相应的列排序,则 MAX()返回最后一行。)
MIN:最小值 (忽略值为 NULL 的行。不能用 MIN(*)。一般是找出数值或者日期值的最小值。
但有些DBMS还允许返回文本列中的最小值,这时返回文本最前一行)
SUM:求和 (忽略值为 NULL 的值。SUM 不能作用于字符串类型,而 MAX(),MIN()函数能。也不能 SUM(*))


子查询:查询语句的嵌套
可以用于任意select 语句里面,但子查询不能出现 order by。
子查询总是从内向外处理。作为子查询的SELECT 语句只能查询单个列,企图检索多个列,将会错误。
如:找出工资最低的人select min(last_name),min(salary) from s_emp;
或者用子查询select last_name,salary from s_emp where salary=(select min(salary) from s_emp);

E-R图:属性: E(Entity) -R(Relationship)
* (Mandatory marked 强制的) 强制的非空属性
o (Optional marked 可选的) 可选属性(可以有值也可以没有)
#* (Primary marked ) 表示此属性唯一且非空

约束:针对表中的字段进行定义的。
PK:primary key (主键约束,PK=UK+NN)保证实体的完整性,保证记录的唯一
主键约束,唯一且非空,并且每一个表中只能有一个主键,有两个字段联合作为主键,
只有两个字段放在一起唯一标识记录,叫做联合主键(Composite Primary Key)。
FK:foreign key (外建约束)保证引用的完整性,外键约束,外键的取值是受另外一张表中的主键或唯一值的约束,不能够取其他值,
只能够引用主键会唯一键的值,被引用的表,叫做parent table(父表),引用方的表叫做child table(子表);
child table(子表),要想创建子表,就要先创建父表,后创建子表,记录的插入也是如此,先父表后子表,
删除记录,要先删除子表记录,后删除父表记录,
要修改记录,如果要修改父表的记录要保证没有被子表引用。要删表时,要先删子表,后删除父表。
U:unique key(唯一键 UK),值为唯一,不能重复。
在有唯一性约束的列,可以有多个空值,因为空值不相等。
NN:NOT NULL,不能为空。
index(索引)是数据库特有的一类对象,实际应用中一定要考虑索引,view(示图)

数量关系: 一对一关系
多对一关系
一对多关系
多对多关系

范式:
好处:降低数据冗余;减少完整性问题;标识实体,关系和表
第一范式(First normal form:1Nf),每一个属性说一件事情。所有的属性都必须是单值,也就是属性只表示单一的意义。
(记录可以重复,会有大量冗余,没有任何限制)
第二范式(2N范式),最少有一个属性要求唯一且非空PK,其他跟他有关联(记录不可重复,但是数据可能会出现冗余)。
第三范式(3N范式),非主属性只能依赖于主属性,不能依赖于其他非主属性。(解决数据冗余问题,不能存在推理能得出的数据)
一般情况会做到第三范式。


创建表: Create Table 表名
(字段名1 类型(数据长度)(default ...) 约束条件,
字段名2 类型(数据长度) 约束条件 );
建表的名称:
必须字母开头;最多30字符;只能使用“A~Z、a~z、0~9、_、$、#”;
同一目录下不能有同名的表;表名不能跟关键字、特殊含意字符同样。
如:create table number_1 (n1 number(2,4), n2 number(3,-1), n3 number);
create table t_sd0808(id number(12) primary key,name varchar(30) not null);
MySQL的: create table student (oid int primary key, ACTNO varchar(20) not null unique,
BALANCE double); --MySQL的number类型分小类了,Oracle只有number,且MySQL的数值型不用定大小
Oracle的: create table t_ad (oid number(15) primary key,
ACTNO varchar(20) not null unique,BALANCE number(20));

INSERT:插入(或添加)行到数据库表中的关键字。
插入方式有以下几种:插入完整的行;插入行的一部分;插入某些查询的结果。
对于INSERT操作,可能需要客户机/服务器的DBMS中的特定的安全权限。
插入行(方式一) INSERT INTO products VALUES(2008,’TV’,222.22,’US’);
依赖于表中定义的顺序,不提倡使用。有空值时需要自己补上。
插入行(方式二) INSERT INTO products(id,name,price,vend_name) VALUES(2008,’TV’,222.22,’US’);
依赖于逻辑顺序,会自动补上空值,提倡使用。

插入检索出的数据:可以插入多条行到数据库表中
INSERT INTO products(*,*,*,*)
SELECT *,*,*,*
FROM products_copy;
如果这个表为空,则没有行被插入,不会产生错误,因为操作是合法的。
可以使用WHERE加以行过滤。

复制表: 将一个表的内容复制到一个全新的表(在运行中创建,开始可以不存在)
CREATE TABLE 新表名 AS
SELECT *
FROM 表名;

INSERT INTO 与 CREATE TABLE AS SELECT 不同,前者是导入数据,而后者是导入表。
任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY。
可利用联接从多个表插入数据。不管从多少个表中检索数据,数据都只能插入到单个表中。

更新数据 UPDATE 语句
需要提供以下信息:要更新的表;列名和新值;确定要更新的哪些行的过滤条件。
UPDATE 表名
SET vend_name = ‘HP’,
prod_name = ‘NEWCOMPUTER’
WHERE vend_name = ‘IBM’;
--UPDATE 语句中可以使用子查询,使得能用SELECT语句检索出的数据更新列数据。也可以将一个列值更新为 NULL。

删除数据 DELETE 语句
DELETE
FROM products
WHERE prod_name = ‘COMPUTER’;
全行删除,不要省略WHERE,注意安全。
DELETE不需要列名或通配符。删除整行而不是删除列。DELETE是删除表的内容而不是删除表。
如果想从表中删除所有内容,可以使用TRUNCATE TABLE语句(清空表格),它更快。

数字字典表:
Sequence:排列。存储物理地址

Index:索引。依附于表,为提高检索速度。

View:视图。看到表的一部分数据。
限制数据访问。简化查询。数据独立性。本质上是一个sql查询语句。
Create[or Relace][Force|noForce] View 视图名
[(alias[,alias]…)] 别名列表
As subquery
[With Check Option [Constraint ……]]
[With Read Only]
注意:有些DBMS不允许分组或排序视图,不能有 Order by 语句。可以有 Select 语句。
删除视图: DROP VIEW 视图名

Rownum:纬列。内存里排序的前N个。
在where语句中,可以用=1,和<=N 或 <N;但不能用=N 或 >N。
因为这是内存读取,没有1就丢弃再新建1。只能从1开始。需要从中间开始时,需二重子rownum语句需取别名。
经典应用: Top-n Analysis (求前N名或最后N名)
Select [查询列表], Rownum
From (Select [查询列表(要对应)]
From 表
Order by Top-N_字段)
Where Rownum <= N

分页显示:
--取工资第5~10名的员工(二重子rownum语句,取别名)
select rn,id,last_name,salary
From ( select id,last_name,salary,Rownum rn
From (Select id,last_name,salary
from s_emp
order by salary desc)
where rownum <= 10)
where rn between 5 and 10;


Union:合并表
Select … Union Select… 把两个Select语句的表合并。
要求两表的字段数目和类型按顺序对应。合并后的表,自动过滤重复的行。
Intersect:交。 同上例,把两个Select表相交。
Minus:减。 把相交的内容减去。
not exists 除运算。


添加字段(列):
Alter Table 表名
Add (column dataype [Default expr][Not Null]
[,column datatype]…);
添加有非空限制的字段时,要加Default语句
字段名字不可以直接改名,需要添加新字段,再复制旧字段后删除旧字段。
添加约束: Alter Table 表名
Add [CONSTRAINT constraint] type (column);
添加非空约束时,要用Modify语句。
查看约束名时,可以违反约束再看出错提示;或者查看约束字典desc user_constraints

减少字段:
Alter Table 表名
Drop (column [,column]…);
删除约束: Alter Table 表名
Drop CONSTRAINT column;
或: Alter Table 表名
Drop Primary Key Cascade;

暂时关闭约束,并非删除:
Alter Table 表名
Disable CONSTRAINT column Cascade;
打开刚才关闭的约束:
Alter Table 表名
Enable CONSTRAINTcolumn;

修改字段:
Alter Table 表名
Modify (column dataype [Default expr][Not Null]
[,column datatype]…);
修改字段的类型、大小、约束、非空限制、空值转换。

删除表:
会删除表的所有数据,所有索引也会删除,约束条件也删除,不可以roll back恢复。
Drop Table 表名 [Cascade Constraints];
加 [Cascade Constraints] 把子表的约束条件也删除;但只加 [Cascade]会把子表也删除。

改表名:
Rename 原表名 To 新表名;

清空表格:
TRUNCATE TABLE 表名;
相比Delete,Truncate Table清空很快,但不可恢复。清空后释放内存。
Delete 删除后可以roll back。清空后不释放内存。
SAP NOTE应用全流程解析:从核心原理到实战避坑指南 在SAP系统运维中,软件补丁与错误修正是保障系统稳定性的关键环节。其核心原理在于通过官方发布的修正集合,对标准程序、函数模块等开发对象进行源代码级的定向修改,以解决程序错误、安全漏洞或进行功能增强。这一过程的技术价值在于,它提供了一种标准化、可追溯的变更管理机制,确保修复的官方认可性与跨系统传输的一致性。典型的应用场景包括处理生产环境中的紧急报错、定期实施安全更新,以及为系统升级预装必要的支持包。本文将聚焦于SAP NOTE的实施,深入剖析其背后的对象管理逻辑,并详解如何使用核心工具SNOTE进行全流程操作 阅读详情

相关推荐

SAP Note技术解析:ABAP开发者必备的补丁管理与系统优化指南

在SAP系统开发与运维中,补丁管理和系统稳定性维护是核心工程实践。SAP Note作为官方发布的技术文档与代码修正集合,其本质是一套标准化的补丁分发与实施机制。从技术原理看,它通过事务码SNOTE作为实施引擎,采用差异化的代码注入方式,对ABAP程序、数据字典对象进行精准修改,以修复程序错误、优化性能或启用新功能。其技术价值在于,它不仅是问题修复工具,更是理解SAP底层逻辑、规避开发风险的知识载体。在应用场景上,开发者需掌握Note的类型识别、依赖检查、冲突解决(如手动合并)以及支持包协同管理,从而确保系统

weixin_30470643的博客 292

sql总结学习

设置环境变量: ORACLE_SID=oral10g\ --变局部变量 export ORACLE_SID --变全局变量 unset ORACLE_SID --卸载环境变量 ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下 export ORACLE_HOME=/oracledata/......

j2ee的学习 225

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析

作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。

weixin_30898555的博客 336

MySQL-数据库基础与索引解析

1.操作与落地 1.1.数据库基础知识 1.1.1.范式化设计 1.1.1.1.什么是范式 范式来自英文Normal Form,简称NF。 实际上你可以把它粗略地理解为 一张数据表的表结构所符合的某种设计标准的级别 。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式5NF,又称完美范式)。 满足最低要求的范式是第一范式(1NF),在第一范式的基础上

weixin_42011493的博客 1438

大数据工程中的多模态数据处理技术

模态”(Modality)指的是数据的表现形式文本(Text):新闻、评论、文案等;图像(Image):照片、截图、医学影像等;音频(Audio):语音、音乐、环境声音等;视频(Video):短视频、监控视频、电影等(本质是图像+音频的组合);数值/结构化数据(Numerical/Structured):用户年龄、商品价格、传感器数据等;时间序列(Time Series):股票价格、物流轨迹、心率数据等。多模态数据(Multimodal Data)是指包含两种或以上模态的数据集。

AI云原生与云计算技术学院 1277

工程伦理ppt

工程伦理学 第一章 工程与伦理 1.1 如何理解工程 一、技术与工程的区别 二、技术与工程的联系 三、工程的定义 五、工程具有不确定性和探索性 六、理解工程活动的7个维度 1.2 如何理解伦理 一、道德与伦理 二、不同的伦理立场 三、伦理困境与伦理选择 1.3 工程实践中的伦理问题 一、工程活动中的行动者网络(具有动态性和网络性) 二、主要的工程伦理问题 三、工程伦理问题的特点 1.4 如何处理工程实践中的伦理问题 一、工程实践中伦理问题的辨识 二、处理工程伦理问题的基本原则 三、应对工程伦理问题的基本思路

weixin_51656605的博客 7万+

约束(SqlServer)

数据的完整性:数据准确性、一致性 分为: 1) 实体完整性(行的完整性)行的唯一 2) 域完整性(属性、列的完整性)列的要求 3) 引用完整性(参照完整性) 比如员工表的部门id要参照部门表id 实现方式:约束 constraint 约束也是数据库的一种对象 一定是针对某张表的某个字段定义约束 约束的分类:不同数据库产品统一 1、 主键约束 PK 2、 唯一约束 UK 3、 外键约束 FK 4、 非空约束 NN 5、 检查约束 CK 6、 默认值约束 default 主键约束 PK primary key

youzi12345678的博客 652

单细胞分析避坑指南:你的Harmony批次矫正真的做对了吗?

本文深入探讨了单细胞转录组分析中Harmony批次矫正的正确使用方法,解析了其工作原理及常见误区。通过详细参数调优指南和实战案例,帮助研究者避免过度矫正,确保生物学信号的有效保留。特别关注Harmony在单细胞数据分析中的关键参数设置和结果验证方法。

weixin_31099291的博客 299

mysql pk uk_mysql

条件关键字where可以被having代替having用于分组之后可以接聚合函数,弥补了where不能接聚合函数的缺陷,可以代替whereon用于链接update user set host = '%' where user = 'root';增:create table 数据库名称 ; 创建数据库create 表名{字段名称 字段类型(长度) 约束,};create table students...

weixin_29211309的博客 307

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 516

逆向实战:Soul聊天协议加密与Frida绕过检测技术解析

本文详细解析了Soul聊天协议的逆向工程实战,重点介绍了使用Frida绕过检测技术的具体方法。通过IDA和JADX进行静态分析,结合Frida动态调试,揭示了数据加密与解密的核心逻辑,并提供了完整的逆向工作流和实用技巧,帮助开发者深入理解协议逆向过程。

weixin_29260291的博客 928

constraint 中(PK、UK、DF、CK、FK)含义

--主键 constraint PK_字段 primary key(字段),--唯一约束constraint UK_字段unique key(字段),--默认约束constrint DF_字段 default('默认值') for字段,--检查约束constraint CK_字段 check(约束。如:len(字段)>1),--主外键关系constraint FK_主表_...

weixin_30555515的博客 4303

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

4657

Note on <Beginning Microsoft SQL Server 2012 Programming> - 02

Chapter 5: Creating and Altering Tables Object Names in SQL Server There are actually four levels in the naming convention for any SQL Server table (and any other SQL Server object for that ma

Vincent's Tech Blog 843

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4013

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SQL note

分别查看&结果不去重:所以直接使用两个条件的or是不行的,直接用union会去重,要用union all,分别去查满足条件1的和满足条件2的,然后合在一起不去重。语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );

m0_63190465的博客 1371

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

[NOTE] SQL与sqlmap

[NOTE] SQL与sqlmap SQL语法 order by 对查询结果排序 ASC:升序(默认)、DESC:降序 SQL注入中多在成功查询之后添加order by i来猜解回显的字段数 如XXX/?id=1' order by 3 %23 limit select * from tableName limit i,n tableName:表名 i:查询结果的索引值(默认从0开始),当i=0时可省略i n:查询结果返回的数量 i与n之间使用英文逗号","隔开 例 查询10条数据,索引从0到9,第

qq_43266093的博客 1607

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

note(sql)

记录一些东西 sql中字段是date或者datetime时,使用String可以去掉不必要的时间显示 datetime类型,出现xxxx.0的话,使用Date接收参数 或者 DATE_FORMAT(wp.create_time,'%Y-%m-%d %H:%i:%S') as createTime 下面为两个常用解决办法 数据库中为:字段:time 值:2016-06-06 16:...

ZT1090258642的博客 483

[NOTE] SQL语言自用备查手册

文章目录创建创建数据库创建表(关系)从已有表中选取列组建新表录入数据常规方法批量插入查询常规操作多表联合查询(非UNION) 创建 创建数据库 CREATE DATABASE <NAME>; 创建表(关系) CREATE TABLE <NAME> ( column_name1 data_type(size), column_name2 data_type(size), ...

I Hsien's BLOG 312

Note: SQL

Navicat使用:https://blog.csdn.net/qq_38826019/article/details/105748826 Sql菜鸟教程:https://www.runoob.com/sql/sql-where.htmla sheet表 增: insert INTO sheet1 VALUES(6,'firefox','http://firefox',23,"Italion"); insert INTO sheet1 (id,name) VALUES(7,'fire..

weixin_42264083的博客 170

SQL Learning Note

Learning Note 找到所有有雇员的办公室(buildings)名字: SELECT DISTINCT building FROM Employees LEFT JOIN Buildings ON Employees.building = Buildings.building_name WHERE Building 找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT): SELECT DISTINCT Building_name, Role FROM Buildings

qq_46059149的博客 443

sql server release note

https://docs.microsoft.com/zh-cn/sql/sql-server/sql-server-version-15-release-notes?view=sqlallproducts-allversions

ujn20161222的博客 192

sql note

select code.ccode_name,a.mb,code.ccode from GL_accsum a left join code on a.ccode=code.ccode and code.igrade=1 where a.iperiod=2 and( code.ccode_name like '%应收票据%' or code.ccode_name like '%应收账款

过客代码站 633

Note for SQL(oracle)

设置环境变量:    ORACLE_SID=oral10g\    --变局部变量    export ORACLE_SID      --变全局变量    unset ORACLE_SID       --卸载环境变量    ORACLE_HOME=...        --安装路径;直接用一句语句也可以,如下    export ORACLE_HOME=/oracledata/...

huang_chenzhen的博客 326

SAS: Proc SQL学习笔记02

笔记1 SQL中的数据类型转换 SAS中的数据类型有character和numeric,因此可以在PROC SQL中指定数据类型为char和num,示例: create table t1(Dest char(3), StartDate num format=date9.); 也可以指定标准SQL中的格式,SAS会自动转换为character或者numeric类型,比如int, float, decimal, date,都会转换为numeric类型,比如有以下程序 proc sql; c..

匿_名_用_户的专栏 2626
上一篇: 01. Unix note
下一篇: 03. PL SQL note
dev_J2EE
博客等级 码龄18年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值