sql笔记/分页存储过程

[email protected]
c#中进行++操作可以是整数或小数,sql中只能对整数进行++操作。
char类型 适合存储长度波动较小不回收效率高
varchar 类型 适合存储长度波动较大可以回收
nchar代表unicode 存储内容包括汉字时候考虑加n

SQL语句特点
1不区分大小写
2没有双引号所有字符串都包含在单引号
3没有逻辑相等,逻辑相等和赋值一样都是用=
4没有bool值得概念,但是在视图中可以输入true/false
5也有关系运算符。
6也有逻辑运算符 &&-- and || --or ! --not
7解释性语言,不是编译型

--保证数据完整性:保证数据是真实的,有效的
--四种完整性:
--1.实体完整性:实体就是指表的一行记录。它就是保证表的每一行记录不是重复的,是唯一的。
--    主键:唯一,非空。一个表只能一个主键。组合键是多个字段组成一个主键。
--    标识列:系统自动生成,永远不重复,往往标识列它就是用来主键的。
--    唯一键:标记这个字段的值不能重复。但是可以为null,只能null一次

--2.域完整性:域就是指字段,它是保证某一列的值是准确和真实有效的。
--    实现方式:类型,非空,check约束,默认值,关系(主外键)

--3。自定义完整性:
--    check约束   【存储过程  触发器】

--4.引用完整性:一个表的某个字段的值引用自另外一张表的某个字段值
--    主外键约束--关系
--    1.建立关系的字段类型需要一致
--    2.建立关系的字段的意义一致
--    3.被引用的表就是主键表,引用的表是外键表
--    4.创建主外键关系 需要 在外键表中创建。
--    5.创建主外键关系的字段在中必须是主键或者唯一键
--    6.在添加数据的时候,先添加主键表再添加外键表
--    7.在删除的时候先删除外键表的数据再删除主键表的数据

--使用代码创建数据完整性:
--主键约束(primary key   PK)  唯一键约束(unique  UQ)   默认值约束(default  DF)    check约束(check  CK)  主外键约束(foreign key  FK)
--语法:
--alter table 表名
--add constraint 约束名称(前缀+自定义名称)  约束类型 约束说明(字段名称  表达式  值)
--为Id设置主键约束
alter table teacher
add constraint PK_Teacher_Id  primary key(Id)
--为email添加唯一键约束
if exists(select * from sysobjects where name=‘UQ_Teacher_Email‘)
 alter table teacher drop constraint UQ_Teacher_Email
go
alter table teacher
add constraint UQ_Teacher_Email unique(email)
--为工资添加默认值,为年龄添加check约束
alter table teacher
add constraint DF_Teacher_Salary default(5000) for salary,
constraint CK_Teacher_Age check(age>0 and age<=100)

---添加主外键约束
alter table teacher
with nocheck  --不检查现有数据
add constraint FK_Teacher_Classes_Classid foreign key(classid) references classes(cid)
on delete set null
--on delete|update
--no action|cascade|set null|set default
--对于关系而言,有级联的操作:
--1.不执行任何:如果可以删除就删除如果不能删除就报错
--2.级联:删除主表记录,会将对应的外键表记录也删除
--3.设置null:删除主表记录会将外键表对应的记录的值设置为null.前提是这个字段值可以为null
--4.设置default:删除主表记录会将外键表对应的记录的值设置为默认值.前提是这个字段值之前设置了默认值

use master
if exists(select * from sysdatabases where name =‘School‘)
drop database School
exec sp_configure ‘show advanced options‘,1
reconfigure
exec sp_configure ‘xp_cmdshell‘,1
reconfigure
exec xp_cmdshell ‘mkdir d:\database自动创建‘
create database School
on primary
(
    name=‘School_data.mdf‘,
    size=3mb,
    filegrowth=10%,
    maxsize=100mb,
    filename=‘d:\database自动创建\School_data.mdf‘
)
log on
(
    name=‘School_log.ldf‘,
    size=3mb,
    filegrowth=10%,
    maxsize=100mb,
    filename=‘d:\database自动创建\School_log.ldf‘
)

代码创建数据库

分页存储过程***************************************if exists(select * from sysobjects where name=‘usp_Person‘)
drop procedure usp_Person
go
create procedure usp_Person
@pagtotlecount int output,
@pageindex int=1,
@pagecount int =10
as
select * from
(select ROW_NUMBER() over(order by pid) as id,* from [person]) as temp
where id between
@pagecount*@pageindex-@pagecount+1
and
@pageindex*@pagecount
select @pagtotlecount=CEILING( COUNT(*)*1.0/@pagecount) from [person]
print @pagtotlecount
go
declare @pagetotlenumber int
execute usp_Person @pagetotlenumber output, 1,10
go
插入重复值触发器*************************************************
--person表插入重复值触发器 if exists(select * from sysobjects where name=‘tr_person_insert‘) drop trigger tr_person_insert go create trigger tr_person_insert on person after insert as declare @pcid int,@pid int select @pcid=inserted.PCID,@pid=inserted.PID from inserted if(not exists(select * from Classes where CID=@pcid)) begin delete from [Person] where PID=@pcid print ‘插入失败不存在的班级‘ end go

插入聚焦非聚焦索引

--创建索引
--索引:就是为了查询提高效率的。相当于一个引用,可以快速找到数据的位置
--聚集索引:索引的顺序就对应着内容的顺序,所以聚集索引意味着排序
--非聚集索引:索引的顺序和内容的顺序没有本质的关联
--语法:
--create clustered|nonclustered index IX_名称
--on 表(列)


if exists(select * from sysindexes where name=‘ix_personname‘)
drop index person.ix_personname
create nonclustered index ix_personname
on [person](pcname)

				
时间: 2024-10-03 23:32:28

sql笔记/分页存储过程的相关文章

SQL笔记---分页

随用随想,随用随记. 通过实际应用掌握SQL语句. 一. SQL分页 1. 第一种方法:利用ID大于多少进行筛选 SELECT TOP 20        *FROM    dbo.WMS_StockWHERE   ( Rk_SkuCode > ( SELECT MAX(Rk_SkuCode)                         FROM   ( SELECT TOP 40                                            *           

sql server 分页存储过程

随着信息时代的发展信息系统的使用越来越多,信息量越来越大:当信息量越来越大,这在数据 展示,特别是报表这块对系统展现效率要求越来越高,对于千万级数据量的展示必须得使用分页来展示. www.2cto.com If object_id('SP_Pagination')is not null drop proc SP_Pagination go Create PROCEDURE SP_Pagination /**//* *****************************************

Sql service 分页存储过程

create database Exam_Week3 GO USE Exam_Week3 GO create table Classs ( ClaID int identity(1001,1), ClassName varchar(100), Counts int ) go insert into Classs values ('1706B',5), ('1706A',5), ('1705B',5), ('1705A',5), ('1704B',5) go create table Studen

SQL基础分页存储过程(案例一)

1 --分页 存储过程 案例 2 3 -- 所执行的存储过程 4 create proc pageForUsers 5 @currPage int, --当前页数 6 @pageSize int, --每页多少条记录 7 @count int output --总记录数 8 as 9 declare @firstIndex int 10 declare @lastIndex int 11 declare @sqlText varchar(200) 12 13 --统计总记录数 14 select

sql server分页存储过程

/********************************************************************************* * Function: PagedProc                                                  * * Description: * * Sql2005分页存储过程                                              * * Finish DateT

sql 可按任意字段排序的分页存储过程

最近做一个项目,其中有许多部分需要用到分页功能 并且这些需要分页的地方有一个共同的特点,那就是,分页,但并不是按ID(主键)来排序,而是要求按其他有重复值的列进行排序,比如,其中有一个页面,要列出将近1万条客户记录,要求按客户付费金额进行排序,这种情况,如果使用网上流行的通用分页存储过程是行不能的,比如,像下面的分页存储过程虽然很棒,可是,用在这里的话,就无计可施:(这个存储过程是我在CSDN上看到一位前辈高人写的) CREATE PROCEDURE GetRecordFromPage @tbl

[转]关于SQL分页存储过程的分析

[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合

真正通用的SQL分页存储过程

关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加了索引,以方便大数据量的使用(代码中是先抓到临时表的,从性能上说如果采用自增长式的ID表,当然可以不使用临时表以达到性能的提升).以下代码的SP是经过我们项目使用通过的.因朋友问及此问题,我就放在这里供大家分享,如各位大侠有更好的方法,也请告诉我.在这里先感谢各位了. 1 CREATE PROCED

SQL SERVER 通用分页存储过程

SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和我沟通,他们使用jQuery.DataTable.js插件,而且经过了公司底层的封装,pageIndex需要变动一下,变成pageIndex*pageSize来传. 也就是说按每页显示30条算,第一次传0,第二次传30这样来计算,我也是醉了. 1.传pageIndex和