数据库知识

一、 数据库知识:

(一) 联接:

内连接:

Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入所组成的联接的每一行。
Select * from a inner join b on a.id=b.id
等同于
Select * from a,b where a.id=b.id
记录数:小于或等于最小表的记录数;

左连接(外连接)

Left Outer Join 运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。第二个输入中的非匹配行作为空值返回。
记录数:大于等于左边记录数

右连接(外连接)

Right Outer Join 运算符返回满足第二个(底端)输入与第一个(顶端)输入的每个匹配行的联接的每行。此外,它还返回第二个输入中在第一个输入中没有匹配行的任何行,即与 NULL 联接。
记录数:大于等于右边记录数

全连接(外连接)

Full Outer Join 逻辑运算符从第一个(顶部)输入中与第二个(底部)输入相联接的行中返回每个满足联接谓词的行。它还可以从下列输入返回行:
在第二个输入中没有匹配项的第一个输入。
在第一个输入中没有匹配项的第二个输入。
不包含匹配值的输入将作为空值返回。
记录数:左右关联+左边没关联+右边没关联

交叉连接(笛卡尔积)(档案)

Cross Join 运算符将第一个(顶部)输入中的每一行与第二个(底部)输入中的每一行联接在一起。

记录数:左右相乘
 合并查询 UNION和UNION ALL(差异比较时)
将两个或更多查询的结果合并为单个结果集,该结果集包含联合查询中的所有查询的全部行。
UNION 运算不同于使用联接合并两个表中的列的运算。去除重复数据;
UNION ALL不去除重复数据;
遵循规则:
所有查询中的列数和列的顺序必须相同。
数据类型必须兼容。

(二) 视图:

视图可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。数据库中存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以采用引用表时所使用的方法,在 Transact-SQL 语句中引用视图名称来使用此虚拟表。
作为简单报表统计以及字段权限管理需求;

(三) 子查询:

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询;
嵌套查询(in(select …)),可以用联接替代

(四) 存储过程:

基于数据库语言的编程(复杂的业务数据处理);
优点:
模块化设计,可以重复调用;
执行速度快,不需要编译,比程序调用sql本身执行快;
修改响应快,部署方便,直接在数据库服务端修改马上生效,但需要严格测试,因为没测试通过的修改后果也是很严重;
减少网络传输;
缺点:不方便调试;

(五) 触发器:

Insert,update,delete事件触发,存在before和after;
优点,自动执行;
级联更新
强化约束,
强制业务逻辑
缺点:出现问题不容易跟踪

(六) 自定义函数

用户定义函数为标量值函数或表值函数(ms sql)。如果 RETURNS 子句指定了一种标量数据类型,则函数为标量值函数。如果 RETURNS 子句指定 TABLE,则函数为表值函数。
Sqlserver:
标量值函数
CREATE FUNCTION f_Get_MD5(@str VARCHAR(500))
RETURNS VARCHAR(500)
AS
begin
DECLARE @pswd varchar(500)
SET @pswd = SUBSTRING(sys.fn_sqlvarbasetostr(HashBytes(‘MD5’, @str)),3,32);
RETURN(@pswd)
End
调用: SELECT dbo.p_Get_MD5(‘123’)或set变量
表值函数
CREATE FUNCTION f_get_table (@con int)
RETURNS @temptable TABLE
(
Col1 int,
Col2 varchar(10)
)
As
Begin
INSERT INTO @temptable SELECT @con,‘123’;
RETURN;

END

调用:SELECT * from dbo.f_get_table(1)
Mysql:
CREATE FUNCTION func_get_split_string_total(f_string LONGTEXT,f_delimiter varchar(5)) RETURNS int(11)
BEGIN
– 获取分隔符字符串个数
return 1+(length(f_string) - length(replace(f_string,f_delimiter,’’)));
END

调用 select func_get_split_string_total(‘1,2,3’,’,’) 或set变量
不存在表函数

(七) 常用函数和其他:

聚合函数:Sum,max,min,avg,count……
常用数学函数:
CEILING 函数返回大于或等于指定数值表达式的最小整数。(CEILING (1.01)=2)
FLOOR 函数返回小于或等于指定数值表达式的最大整数(FLOOR(1.99)=1)
Round返回一个数值,舍入到指定的长度或精度()。
ABS返回指定数值表达式的绝对值(正值)的数学函数。
……
其他:Having,cast,convert……
游标:CURSOR
临时表(全局,局部),表变量(局部)
位与& :对应都为1为真 2 & 7
位或|:对应存在1为真 2 | 7
位异或^: 对应相同为假,不同为真 2 ^ 7
事务:BEGIN TRANSACTION(begin tran)—开始 COMMIT TRANSACTION(commit TRAN)–提交 rollback tran–回滚

二、 TP框架的自定义模块;

加入通用表数据模块;

自动加载表的数据字典;

前端页面通过上面2个表自动生成;

上述界面都可以通过自定义实现,自定义下拉选择,时间类型,查询条件,是否只读,自定义修改字段,自定义新增字段;自定义数据表头;是否必填项;

增加数据字典的配置,以及自定义菜单的配置
解析规则的添加;
A规则:常量枚举类型
A|0:保密;1:男;2:女;3:中性

B规则:关联表下拉
B|表|表关联字段|数据集字段|取值字段|别名可以不填|搜索字段

B|ecs_users|user_id|user_id|mobile||email

线上url:www.sh-sdcm.com/admin

三、 TP框架与ECSHOP对比;

(一) 分销和促销功能

a) ECSHOP:促销功能,分销功能完善;

促销有:
积分抵扣(TP有系统参数统一比例设置)

会员等级折扣和会员价(TP无)

优惠促销,(后自主添加:数量促销,买N免一,买N件X元)

红包(TP的代金券)

积分换购:

分销功能完善:积分,金额的多级分销比例体系;(自主添加的关注积分分销体系,团队分销体系)

b) TP:促销功能,分销功能完善;

促销全部以商家自主设置,主要有:
抢购管理,

团购管理:

商品促销:

订单促销:

代金券(ecshop红包):

积分换购: 无

(二)商品

ECSHOP:每个商品只有一个分类,但是存在扩展分类,可指定多个;

即可以挂靠不同的分类都能查找到
商品属性的价格为与商品零售价的阶梯差价

TP:每个商品必须有3个分类,不存在扩展分类,不能归入多个分类,比如手机,通讯,3c,电子产品等,不能同时指定

商品属性的价格为最终的零售价,不是阶梯差价;

(三)订单

ECshop是不存在前端申请退货功能,前端申请为后来添加的
订单不支持拆分,只支持合并
TP自带前端申请退货功能,且比Ecshop 完善;同时加入了交易纠纷解决功能;
订单支持拆分功能,不支持合并;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值