作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More
效果
主要知识点列表
编号 | 语言或插件 | 知识点 | 说明 |
1 | sql | create table | 创建表关键词,比如:create table myName(字段1,字段2,) |
2 | sql | identity(1,1) | 自增长标识,一般用到两个参数,标识增量和标识种子 |
3 | sql | primary key | 主键标识 |
4 | sql | create proc | 创建存储过程关键词,proc是procedure缩写,也可以用完整词语 |
5 | sql | as | 一般用在别名,也有用到存储过程中的名称或参数之后,标志语句的开始 |
6 | sql | begin ... end | 相当于花括号,表示代码体 |
7 | sql | declare | 定义变量关键词,比如:declare @rows int,@rows是一个整数类型变量,set @rows=1,赋值操作 |
8 | sql | rand() | 随机函数,15位小数点,0.782169054626712 |
9 | sql | round() | 四舍五入,可指定保留小数点位数,round(rand()* 8,0),不保留小数点 |
10 | sql | while循环 | 没有for关键词,可以使用while实现,因为数据库专注于数据而不是编程,个人猜测只需要保留一个能够实现循环的关键词即可,没必要那么多 |
11 | sql | if | 逻辑条件判断 |
12 | sql | count() | 统计函数,比如:统计记录行数 |
13 | sql | insert into ... values() | 添加记录关键词,配合values一起使用 |
14 | sql | getdate() | 获取当前时间值 |
15 | sql | getutcdate() | 获取当前UTC国际标准时间值,如果是国外项目,那么utc时间比较适合,方便统一转为当地时间 |
【简单了解下存储过程】
1)Ta是语句集
2)只需要编译一次即可重复调用
3)一般大型数据库中都会有存储过程的功能
4)是数据库中的一个重要对象 5)指定一个存储过程名称以及输入或输出参数,和方法一样 6)特大数据量的情况下,使用它可以提升效率 7)可以直接在数据库中调用,也可以通过C#、java、php等语言调用
【存储过程的特点】
1)预编译
已经编译在数据库中,每次直接通过名称调用即可,比执行普通sql语句效率要高,复用性高
2)外网调用省流量
如果每次都是传递数百数千行sql语句,那么肯定会需要一定的流量消耗,特别是多访问的情况下,消耗会更多,特别是按流量计费。
存储过程就可以直接传一个名字和参数就减少了很多流量
3)高维护
修改内容时,只需要修改一个地方即可
4)高安全
可针对某一个用户进行身份限制
【创建表】
创建一张域名表,用于保存随机生成的域名记录
createtable domain_table( id int identity(1,1) primary key, domain_value varchar(50), domain_length int, title varchar(100), describe varchar(500), create_time datetime)
【创建存储过程】
create procedure createDomainValue asbegin declare @rows int declare @index int declare @length int declare @str varchar(50) declare @domain_value varchar(50) declare @random int declare @temp varchar(50)set @domain_value=N''--拼接字符串,必须先初始化set @index=1set @str='abcdefghijklmnopqrstuvwxyz0123456789'set @length=3+round(rand()*5,0) while @index<=@length beginset @random=round(rand()*34,0)--0~35随机下标set @temp=substring(@str,@random,1)--截取1位长度值\set @domain_value+=@temp set @index+=1 end --随机产生域名,此处域名组合使用顶级的国际域名 declare @full_domain varchar(50)set @full_domain='www.'+@domain_value+'.com'--查询记录是否存在,不存在则添加,存在则不做任何操作select @rows=count(1)from domain_table where domain_value=@full_domain if @rows<=0begininsertinto domain_table(domain_value,domain_length,create_time)values(@full_domain,@length,getdate()) end end
需要注意的地方
1)拼接字符串,必须先定义字符串变量并初始化,如下
declare @domain_value varchar(50)set @domain_value=N''
【调用存储过程】
通过存储过程的名称来调用,并查询记录是否执行成功
exec createDomainValue select*from domain_table