前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >做MSSQL实验时的一些理解

做MSSQL实验时的一些理解

作者头像
gojam
发布2019-05-14 14:25:54
4150
发布2019-05-14 14:25:54
举报
文章被收录于专栏:gojam技术备忘录

数据库中有3张表,使用t-sql检索数据 s: sno学号, sname姓名, dept院系, age, sex

c: cno课程号, cname课程名, cpno, credit学分

sc: sno, cno, score

相关子查询的查询过程
代码语言:javascript
复制
select sno,cno,score from sc as sc1
where score<(select max(score) from sc as sc2 where sc2.sno=sc1.sno)

如果直接执行“select max(score) from sc”,我们将会得到sc表中score最大的那一行记录,但我们把s1与s2做sno相等的等值连接,情况有所不同。sc1.sno在查询过程中是变化的,我们可以认为数据库遍历了sc,sc1.sno等于遍历中的某一项的值。因此,这段代码将显示除了sno对应的最高成绩外的所有成绩。

当我们用EXISTS的时候我们在干嘛
代码语言:javascript
复制
select count(*) from sc where exists(select * from c where c.cno=sc.cno and cname='数据库原理')
go
select count(*) from sc,c where (c.cno=sc.cno and cname='数据库原理')

这两种查询得到的结果是相同的,我们可以认为exists仅仅用于表达嵌套子查询,增加了查询的可读性。

T-SQL拷贝表
代码语言:javascript
复制
create table s1(
sno varchar(10) not null,sname varchar(20),dept varchar(20),age int,sex char(4))
go
insert into s1(sno,sname,dept,age,sex) select sno,sname,dept,age,sex from s

有时候需要拷贝一份表,但我在网上查到了很多写法并不符合t-sql的语法,上面是可以使用的版本。我只找到了先按照表的结构新建表然后插入所有数据的办法。在sqlserver2017中可以正常运行,如果不能用,可能需要在末尾加where 1=1。

利用default约束插入数据
代码语言:javascript
复制
insert into s1(sno,sname,dept,age) values(125,'name','dept',16)
go
select * from s1

一开始我用了insert into s1 values(125,'name','dept',16)没有成功,好在及时悔悟,数据库管理系统并不能智能补缺。。。我们应该老老实实写上所有要加的属性。ps:default只在insert into起作用。

外键约束
代码语言:javascript
复制
alter table sc add constraint fkey foreign key(cno) references c(cno)'注释:sc表中cno的取值仅限于c表中cno的取值

A属性的取值范围是B属性已有取值的集合。或者说A中不同元素的集合属于B中不同元素的集合。

SQL自定义函数(存储过程)的语法
代码语言:javascript
复制
create proc calculate @n int '注释:@n int 是传入的参数,可以没有;create proc proc_name必须要有
as
declare @sum int,@i int '注释:声明变量,sql中变量前都加@
set @i=0 '为变量赋值
set @sum=1
while @i<@n'支持循环语句
begin
set @i=@i+1
set @sum=@sum*@i
end
print @sum
'ps:除了用set为变量赋值,也可以用select @variable= column_name from table_name where 条件

执行函数只需要'exec proc_name'

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年12月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关子查询的查询过程
  • 当我们用EXISTS的时候我们在干嘛
  • T-SQL拷贝表
  • 利用default约束插入数据
  • 外键约束
  • SQL自定义函数(存储过程)的语法
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档