找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1396|回复: 0
收起左侧

SQLServer数据库操作部分细节

[复制链接]
ID:823873 发表于 2020-12-15 18:53 | 显示全部楼层 |阅读模式
对于数据库操作
注重逻辑,不必过分关心细节


快速插入多行数据的方法
INSERT
INTO 图书(图书号,图书名称,主编,出版社,单价)
select '1','数据库5','王侃','华哥出版社',11.1
union all
select '1','数据库0','王侃','华哥出版社',11.1
union all
select '1','数据库11','王侃','华哥出版社',11.1;


修改一个表的列名的方法
exec sp_rename '表名.列名','新列名'


定义为unique的属性,不能有重复的内容,否则会报错。对一个表的某一属性建立唯一索引,
在插入数据时也不能对这一属性插入内容相同的值,当更改数据时也是同样的。要保证其内容的唯一性。


UNIQUE 和PRIMARY KEY 在一行中只能出现其中之一
UNIQUE 可以和NOT NULL一起定义一行



之前的视图
CREATE VIEW C_P_N
AS
SELECT CUSTOMER.cno,cna,PAPER.pno,pna,num,ppr
FROM CUSTOMER,PAPER,CP
WHERE CUSTOMER .cno =CP.cno AND PAPER.pno =CP.pno
修改视图添加新列ppr
ALTER VIEW C_P_N  AS
SELECT CUSTOMER.cno,cna,PAPER.pno,PAPER.pna,num,ppr
FROM CUSTOMER,PAPER,CP
WHERE CUSTOMER .cno =CP.cno AND PAPER.pno =CP.pno


使用DISTINCT 时,若选择自子句中有两行或多行,则会将两列作为一个整体,一起判断是否有相同的两个记录,若有则将其多余的删掉,只保留一个。


对于创建表时定义其列时要用逗号,,,。表结尾要用分号


在插入内容时,可以不用指定列名,但要求插入定义表时的每一列的全部的内容。


注意一个触发器只能存在一个表内


当把一个表中的数据删除后,而另一个参照它的表中数据没有删除,有的时候需要恢复被删表的数据,就要向其中插入数据,但是又会引起参照完整性,而无法删除,则只需将参照完整性暂时关闭,
如ALTER TABLE CP NOCHECK CONSTRAINT FK__cp__pno__2A4B4B5E


其中FK__cp__pno__2A4B4B5E 为CP表的键位置所对应的名称。将其复制即可。


删除触发器语句,DELETE TRIGGER tf_name

数据库中,对于group by 子句 ,当select 语句内的内容与group by 里面的不相同时,则不能使用,除非使用count /sum等语句
group by中没有的列,select里面不同出现,除非是用聚合语句

GROUP BY 语句,对两个列进行分组时。先按第一列进行分组,然后再在第一个分组的基础上对每个小分组进行分组


使用select 语句时,使用聚合函数 sum avg 等,如果没有使用group by 语句,那select语句只能由聚合函数构成。


数据库语句的使用方面,内嵌视图可能能解决一部分逻辑困难问题

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表