—————————- 存储过程 ———————————-

1、创建无参数存储过程

语法: create procedure 过程名

as

sql语句体

例题:create procedure p_student

as

select * from student as s join class as c

on s.cl_id=c.cl_id where s.stu_id>2

2、创建带输入参数的存储过程

语法:create procedure 过程名

@参数1 数据类型(=默认值),

@参数2 数据类型(=默认值)

as

select 语句体

例题:create procedure p_student

@name nvarchar(10)

as

select * from student as s join class as c

on s.cl_id=c.cl_id where s.stu_name=@name

3、创建带输入、输出参数的存储过程

语法:create procedure 过程名

@参数1 数据类型 output,

@参数2 数据类型(=默认值)

as

sql 语句体

return

例题:create procedure p_stu_cla

@cname nvarchar(10) output,

@sname nvarchar(10)

as

select @cname=c.cl_name from student as s join class as c

on s.cl_id=c.cl_id where s.stu_name=@sname

return

调用:declare @cname nvarchar(10)

exec p_stu_cla @cname output , ‘王二’

select @cname

4、存储过程的管理

查看存储过程的定义

exec sp_helptext 过程名

查看存储过程的信息

exec sp_help 过程名

删除存储过程

drop procedure 过程名

修改存储过程

alter procedure 过程名

@参数名 数据类型=默认值 output

as

sql 语句

return

————————————- 函数 ————————————–

Sql server2005支持三种用户定义函数:标量函数、内嵌表值函数、多语句表值函数

1、标量函数

标量函数是根据输入参数值的不同来获得不同的函数值,标量函数可以有多个输入参数,但是只能有一个返回值;标量函数体包括一条或多条sql语句,由begin开始,以end 结束;用returns字句定义函数返回值的数据类型,并返回函数值

语法: create function 函数名(标量参数 标量数据类型)

returns 函数返回值的类型

as

begin

函数体

return 变量/标量表达式

end

例题: create function f_count( @sname nvarchar(10) )

returns nvarchar(10)

as

begin

declare @cname nvarchar(10)

select @cname=cl_name from student as s jion class as c

on s.cl_id=c.cl_id where s.stu_name=@sname

return @cname

end

调用函数: declare @name nvarchar(10)

select @name=架构名.f_count(‘王二’)

print @name

2、内嵌表值函数

内嵌表值型函数以返回的都不是一个标量数据,而是一个表,返回的表值函数还可以提供参数化视图功能。

语法: create function 架构.函数名(标量参数 数据类型)

returns table

as

return (select语句)

调用函数:select * from 架构.函数名(参数)

——————————– 约束 ————————————-

SQL server2005 中,用于实现数据完整性的机制有这几种:数据类型、规则和默认值、约束、触发器、XML架构

约束的种类:主键(primary key)约束、外键(foreign key)约束、唯一(unique)约束、核对(check)约束、默认(default)约束

1、主键约束 primary key

直接创建表时创建约束:

create table student

(

sid int identity not null,

sname nvarchar(10),

constraint 主键名 primary key (sid)

)

在已创建表中添加约束:

alter table 表名

add constraint 主键名 primary key (列名)

例如:add constraint pk_id primary key (sid)

删除主键:

alter table 表名

drop constraint 主键名

2、外键约束 foreign key

直接创建表时创建:

create table student

(

id int identity not null,

sname nvarchar(10),

class_id int ,

constraint 外键名 foreign key (class_id) references 其它表(列名)

)

在已创建表中添加:

alter table 表名

add constraint 外键名 foreign key (列名) references 其它表(列名)

例如:add constraint fk_cid foreign key (class_id) references class(class_id)

删除:

alter table 表名

drop constraint 外键名

例如:drop constraint fk_cid

3、唯一约束 unique

直接创建表时创建:

create table student

(

id int identity not null,

sname nvarchar(10) ,

class_id int ,

constraint 唯一约束名 unique (sname)

)

在已创建表中添加:

alter table 表名

add constraint 唯一约束名 unique (列名)

例如:add constraint uni_name unique (sname)

删除:

alter table 表名

drop constraint 唯一约束名

例如:drop constraint uni_name

4、核对约束 check

直接创建表时创建:

create table student

(

id int identity not null,

sname nvarchar(10) ,

class_id int ,

constraint 核对约束名 check (class_id>0 and class_id<4)

)

在已创建表中添加:

alter table 表名

add constraint 核对约束名 check (列名的约束条件)

例如:add constraint che_id unique (class_id>0 and class_id<4)

删除:

alter table 表名

drop constraint 核对约束名

例如:drop constraint che_id

5、默认约束 default

直接创建表时创建:

create table student

(

id int identity not null,

sname nvarchar(10) ,

class_id int constraint 默认约束名 default(默认值)

)

在已创建表中添加:

alter table 表名

add constraint 默认约束名 default (默认值) for 列名

例如:add constraint df_id default (1002) for class_id

删除:

alter table 表名

drop constraint 默认约束名

例如:drop constraint df_id

—————————————- 触发器 ——————————————–

在sql server里面也就是对某个表的一定操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行

常见的触发器有三种:分别应用于insert,update,delete事件

例如两个表:student学生表(id编号,stuid学号,stu_name学生名字)

library借书表(id编号,stu_id学号,book_name书名)

1、update型触发器

create trigger tri_student on student

after update

as

if update(stu_id)

begin

update library set stu_id=i.stuid from library l ,deleted d, inserted i

where l.stu_id=d.stuid

end

2、delete型触发器

create trigger trg_student on student

after delete

as

delete library from library l,deleted d

where l.stu_id=d.stuid

———————————– 级联更新、删除 ————————————-

级联更新、删除是对主键进行的,外键却不能

1、创建级联更新、删除

create table class

(

cid int identity not null,

cname nvarchar(10),

constraint pk_cid primary key(cid)

)

create table student

(

sid int identity not null,

sname nvarchar(10),

cid int ,

constraint fk_cid foreign key (cid) references class (cid)

on delete cascad / on update cascade

)

注:只能对主表class表进行更新、删除时才能实现级联

———————————- 索引 —————————————

索引是的指表中的数据和其相应存储位置的列表。它类似于书中目录,可以快速地查找表中的数据而不必扫描整个数据表。

1、创建聚集索引

create clustered index 索引名

on 表(列名)

2、创建非聚集索引

create nonclustered index 索引名

on 表(列名)

3、创建唯一、非聚集索引

create unique nonclustered index 索引名

on 表(列名)

4、删除索引

drop index 表名.索引名

注意:删除索引时要注意,如果索引是在create table语句中创建的,只能用alter table语句删除。

如果索引是用create index创建的,可用drop index

5、修改索引的名称

sp_rename ‘表名.旧索引名’,‘新索引名’

注意:尽量不要修改索引的名字,容易破坏脚本和存储过程

(责任编辑:最模板)

织梦写php查询语句,织梦dedecms中常用的php查询语句(2)相关推荐

  1. 开发项目时mysql常用语句_项目开发中常用到的SQL语句

    1.循环示例 循环示例代码: DECLARE @i intDECLARE 10 ) 10 ) 10001200 BEGINSet 110 )), 4 ) @name select @name Loco ...

  2. SELECT中常用的子查询操作

    MySQL中的子查询 是在MySQL中经常使用到的一个操作,不仅仅是用在DQL语句中,在DDL语句.DML语句中也都会常用到子查询. 子查询的定义: 子查询是将一个查询语句嵌套在另一个查询语句中: 在 ...

  3. getHibernateTemplate()(Spring中常用的hql查询方法)

    Spring中常用的hql查询方法(getHibernateTemplate()) --------------------------------- 一.find(String queryStrin ...

  4. Oracle一张表写多个触发器,详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响 ...

  5. django中常用的数据查询方法

    5.2 数据查询 要从数据库检索数据,首先要获取一个*查询集***(QuerySet),查询集表示从数据库获取的对象集合,它可以有零个,一个或多个过滤器.返回查询集的方法,称为过滤器,过滤器根据给定的 ...

  6. mysql 查询过滤_在MySQL中,如何对查询结果进行条件过滤

    昨天和大家一起学习了在mysql中,如何分组查询统计,但是有时候也会遇到这样的一个问题,比如我在查询中,已经做了分组统计,但是我想对于这个结果进行条件过滤?应该如何处理呢? 我们一样用之前的员工表em ...

  7. 收集一些工作中常用的经典SQL语句

    作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作 中常用的SQL语句,希望能给大家带来一些帮助,当然可能不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT IN ...

  8. hibernate查询缓存_在Hibernate中启用实体和查询缓存

    hibernate查询缓存 1.简介 在我执行过的与性能相关的任务中,这就是其中之一. 令人担心的是,如果对于特定实体每次都调用相同的查询,并且表数据在特定的时隙内不易更改,则我们可以使用Hibern ...

  9. mysql select 子查询_SELECT中常用的子查询操作

    MySQL中的子查询 是在MySQL中经常使用到的一个操作,不仅仅是用在DQL语句中,在DDL语句.DML语句中也都会常用到子查询. 子查询的定义: 子查询是将一个查询语句嵌套在另一个查询语句中: 在 ...

最新文章

  1. 算法分析的一个小例子--大数乘法
  2. 让Windows下的Tomcat将控制台信息记录到日志
  3. 定义简单类-接收对象的变量同样是对对象的引用
  4. C++ Primer: 1. 初识输入和输出
  5. yaas client requestAccessToken
  6. Angular NgReflectProperty的设置位置 - 只有在调试模式下才设置该属性
  7. js 根据掩码位计算可用ip地址_变长子网掩码:轻松分配IP地址(下)
  8. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)
  9. dbForge Schema Compare for MySQL入门教程:预览架构同步脚本和同步架构
  10. 从零开始刷Leetcode——数组(643.665.674)
  11. yolov4实现口罩佩戴检测,在验证集上做到了0.954的mAP
  12. 精确搜索linux日志,Linux 日志查询 - 精确详细
  13. ArcGIS与地理加权回归GWR【二】以及MGWR软件下载
  14. 信号与系统实验感想 matlab,信号与系统实验(信号与系统matlab实验报告)
  15. 2020系统架构设计师考试通过率,软件资格证书正在发生深刻历史变化
  16. 使用 cookie的一些缺陷和隐患
  17. 鸿蒙(HarmonyOS)支持低代码开发,无需HTML知识,就可以设计复杂界面
  18. C语言把二进制转换为十进制数的方法和示例
  19. 什么是Meta分析?Meta分析是什么意思?以6篇高质量文献为例,吃透Meta分析基本概念
  20. davinci平台Uboot移植

热门文章

  1. 创业者的噩梦 - 人与人的信任呢?
  2. C语言(数据结构) - 链表的基本操作
  3. 计算机毕业设计ssm儿童福利院管理系统5d7wb系统+程序+源码+lw+远程部署
  4. 创成汇丨2019年参加创新创业大赛都能获得什么?
  5. 计算机无法识别机qie硬盘,[转载]《图解教你装配电脑》第四章:硬盘、光驱、软驱如何安装...
  6. java web 打印图片_java web打印总结
  7. 蓝牙A2DP-android
  8. 校招在线测评题目汇总
  9. Segment Anything论文阅读笔记
  10. “元宇宙”爆火之下,披荆斩棘的VR产业又迎来发展东风