sqlserver的2个遗憾、不足

sqlserver是比较好用的了

但是,还是有2个比较不好的地方:

1、存储过程的生成记录集,无法被调用者的sql拿来(截取或调用前就指定一个表变量去承接)使用

2、在sql语句里无法定义临时的函数、存储过程,然后使用它(必须实实在在的建立函数、存储过程,才能使用它们,最后还要删除它们)

 

sql2005增加了varchar(max),功德无量!

但是select top n SKIP m ... from ...始终没有实现SKIP m,实在不爽——虽然rank over(不过好像是sql2005才出现,效率好像也不低)

 

RANK ( )    OVER ( [ < partition_by_clause > ] < order_by_clause > )

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。因此,RANK 函数并不总返回连续整数。

用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。

USE AdventureWorks;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity, RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as RANK
FROM Production.ProductInventory i JOIN Production.Product p 
ON i.ProductID = p.ProductID
ORDER BY p.Name
GO
 
还有2个想而没有功能的:
1、对于sql的结果,在不知道字段名的情况下按顺序取
2、对于sql的结果,在不知道某字段名是否存在的情况下,条件选择
(如:如果存在fid则取max(fid)否则取max(第一个字段名))
对于2,如果是固定的表或视图,好像可以通过系统表查到某字段名是否存在
但是如果是一个子查询,则不行
 
再补充:
2014增加了内存表,如果能在超出预定大小时,自动以非固定的内存补充,再不够以硬盘文件补充(也许已经这样了)
sql语法增加并发提交多个查询的功能
作为一个SQL Server数据库开发人员,我的主要职责是设计、开发和维护数据库系统。以下是我在这个角色中需要掌握的技能和职责: 1. 数据库设计:我需要了解数据库设计原则和范式,以便在设计数据库时遵循最佳实践。我需要使用ER建模工具进行实体关系图设计,以确保数据完整性和一致性。我还需要考虑数据存储和检索的最佳方法,以确保数据库的高效性和可伸缩性。 2. SQL编程:我需要精通SQL语言,以便编写高效、可读性强的查询和存储过程。我需要了解T-SQL的基本语法和功能,以便能够进行数据操作,如插入、更新和删除数据。我还需要了解如何使用索引和视图来提高查询性能。 3. 数据库维护和性能优化:我需要定期备份和还原数据库,以确保数据的安全性和可恢复性。我需要监视数据库性能指标,如CPU利用率、磁盘IO和内存使用情况,以便及时识别和解决性能问题。我需要了解如何进行索引、查询、存储过程和视图的优化,以提高数据库性能。 4. 数据库安全:我需要了解如何配置数据库安全性,以保护敏感数据免受未经授权的访问或恶意攻击。我需要了解如何创建和管理用户、角色和权限,以确保数据的机密性和完整性。 5. 数据库迁移和集成:我需要了解如何迁移和集成不同的数据库系统,以满足不同组织的需求。我需要了解如何使用ETL工具和数据集成技术来实现数据交换和数据共享。 总之,作为SQL Server数据库开发人员,我需要不断学习和更新自己的技能和知识,以适应不断变化的数据库技术和需求。我需要与其他开发人员、管理员和业务用户紧密合作,以确保数据库系统的高效性、可靠性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值