SqlServer骚操作,不积硅步无以至千里

news/2024/11/8 14:49:46/

1. 类型转换方法1:Convert(目标类型,待转换的字段,格式)

2. 类型转换方法2:Cast(待转换的字段 as 目标类型)

3. 日期增加:DateAdd(日期的年/月/日...,增加的数值,日期字段)

4. 日期减少:DateDiff(日期的年/月/日...,开始日期字段,结束日期字段)

5. 取出日期的年/月/日...:DatePart(年/月/日...,日期字段)

6. 将字符串转成大写:Upper(待转换字段)

7. 将字符串转成小写:Lower(待转换字段)

8. 将字符转成Ascii码:Ascii(待转换字段)

9. 从左侧截取多个字符:Left(待截取字段,截取字符数)

10. 从右侧截取多个字符:Right(待截取字段,截取字符数)

11. 获取当前数据占用的内存大小:DataLength(待计算字段)

12. 去掉左右不可打印字符:Trim(待操作字段)

13. 去掉左侧不可打印字符:LTrim(待操作字段)

14. 去掉右侧不可打印字符:RTrim(待操作字段)

SelectTop 2CallerNumberSum(DateDiff(Second,startdatetime,enddataetime)) As 时长,Count(*) As 电话数
FromCallRecords
WhereDateDiff(Month,'2010-7-1',startdatetime)=0
Group ByCallerNumber
Order By时长
Desc

 

结果
CallerNumber时长电话数
00111534
0033402

 

防止Sql注入:

          1. SqlCommand对象的CommandText字符串参数化:Select count(*) From UserInfo Where UserName=@UserName And UserPwd=@UserPwd;

          2. 给SqlCommand对象的对应参数赋值:

                             sqlCommand.Parameters.AddWithValue("@UserName",值);

                             sqlCommand.Patameters.AddWithValue("@UserPwd",值)

在Select显示列时做多项选择显示:

Select*,Case DelFlagWhen 0 Then N'未删除'When 1 Then N'删除'End As 删除状态,UserName
FromUserInfo

在Select显示列时做Null值替换:

SelectCreateDate,IsNull(CreateDate,GetDate())
FromUserInfo

给Sql脚本定义变量,赋值,输出

Declare @i int
Set@i=9
Print@i

Sql进行if判断:

Declare@num int
Set@num=SelectCount(1)FromUserInfoWhereUserAge<40
Print @num
If(@num>3)BeginPrint N'年轻'End
ElseBeginPrint N'不年轻'End

Sql进行While循环:

Declare@i int
Set@i=0
While(@i<=100)BeginPrint@iSet@i=@i+1End

第一种子查询作为表来使用:

SelectT.*
From(SelectUserIdFromUserInfoWhereUserAge>50) As T
WhereT.UserId<5

第二种子查询作为表达式来使用:

Select*
FromUserInfo
WhereUserAge<(SelectAvg(UserAge)FromUserInfo)

第一种双Top分页查询:

SelectTop 3 *
FromUserInfo
WhereUserId Not In(SelectTop ((2-1)*3) UserIdFromUserInfoOrder ByUserId)
Order ByUserId

第二种外包开窗函数分页查询:

Select*
From(Select*,Row_Number() Over(Order By UserId) As numFromUserInfo) As T
WhereT.num
Between 4 And 6

开窗函数可以使得表与聚合后的结果一同显示,聚合结果值会被添加到每条数据的末尾:

Select*,Avg(UserAge) Over()
FromUserInfo

创建局部临时表,自定义字段: Create Table #临时表名(字段1,字段2,......) 

创建局部临时表,复制已有表: Select * Into #临时表名 From 原表名

创建全局临时表,自定义字段: Create Table #全局临时表名(字段1,字段2,......) 

创建全局临时表,复制已有表: Select * Into #全局临时表名 From 原表名

 

异常捕获的语法:

Begin Try--Sql语句
End Try
Begin Catch--Sql语句
End Catch

创建存储过程:

--查看数据库中是否已经存在该存储过程对象
If
(Exists(Select*Fromsys.all_objectsWherename='存储过程名')
)--存在则删除BeginDrop Proc 存储过程名End
Else--不存在则忽略BeginEnd
Go--创建存储过程
Create Proc 存储过程名
--定义字段
@PageSize int,
@PageIndex int,
@TotalCount int OutPut
--存储过程需要执行的Sql语句
As
Select*
From
(Select*,Row_Number() Over(Order By UserId asc) As RowNumFromUserInfo
) As T
WhereT.RowNum
Between((@PageIndex-1)*@PageSize+1)
And(@PageSize*@PageIndex)
Set@TotalCount=SelectCount(1)FromUserInfo--定义变量,用来接收存储过程输出的结果
Declare@Total int
--执行存储过程并传递参数
ExecPro_UserInfo_存储过程名 2,4,@Total Out
--打印结果进行验证
Print @Total

查看数据库列表:Exec sp_databases

查看表:Exec sp_tables

查看表中的字段:Eexc sp_columns 表名

动态执行Sql脚本的方法:

--定义用来存储Sql语句的变量
Declare@strSql nvarchar(max)
--设置Sql语句变量的内容
Set@strSql='Select * From UserInfo'
--把Sql语句变量内容当作Sql语句执行
Exec (@strSql)
--或者直接用Exec执行Sql语句
Exec ('Select * From UserInfo')

使用自定义函数:

--创建一个自定义的方法
Create Function Fun_GetUser(@UserAge int)
//定义返回值的类型
Returns int
As
Begin//定义用来返回数据的变量Declare@result int//将Sql执行结果赋值给返回数据的变量Set@result=SelectCount(1)FromUserInfoWhereUserAge>@UserAge//返回结果数据Return@result
End//调用自定义的方法
Selectdbo.Fun_GetUser(40)

执行插入操作,如何返回数据:

--能够返回Inserted池,或者,Deleted池中的特殊字段数据
Insert Into表名(字段1,字段2,.....)OutPut Inserted.Id或者Deleted.Id或者Inserted.Name或者Deleted.Name或者......
Values(值1,值2,......)

触发器:

Create Trigger触发器名
On表名
For Insert或者Update或者Delete
As
BeginDeclare@Id intSet@Id=SelectIdFromInserted--这里写触发器触发执行的Sql语句
End

通过Sql语句将某权限授予某用户:

--例子
Grant Select On Table 表名 To 用户名--操作权限:对象        对象类型     操作权限
--属性列       Table       Select,Insert,Update,Delete,All Privileges
--视图         Table       Select,Insert,Update,Delete,All Privileges
--基本表       Table       Select,Insert,Update,Delete,Alter,Index,All Privileges
--数据库       DataBase    Create Table,Alter Table

 


http://www.ppmy.cn/news/752916.html

相关文章

ListBox美化重绘,不积硅步无以至千里

如果要对ListBox控件进行自定义绘制&#xff08;美化&#xff09;&#xff0c;那么首先必须将ListBox的DrawMode属性设置为OwnerDrawVariable或OwnerDrawFixed。ListBox有个ItemHeight属性&#xff0c;在DrawMode设置为Normal时&#xff0c;这个属性是不可设置的&#xff0c;并…

C#操作Excel表格,不积硅步无以至千里

本文主要介绍一下c#来操作excel表格&#xff0c;主要介绍我使用的&#xff0c;我是使用第三方提供的函数库&#xff08;NPOI&#xff09;来进行excel的操作&#xff0c;而NPOI库函数在其官网下&#xff0c;我这里就不拿出来了。1&#xff1a;NPOI库函数NPOI库函数下载后&#x…

向控件拖放数据,不积硅步无以至千里

1. 设置待接收数据控件的AllowDrop属性为True 2. private void textBox1_DragEnter(object sender, DragEventArgs e) {//必须设置拖放效果e.Effect DragDropEffects.Copy; }private void textBox1_DragDrop(object sender, DragEventArgs e) {IDataObject dataObject e.Da…

Pickit 3D视觉定位抓取系统 -硅步机器人

Pickit 3D视觉定位抓取系统 产品特点 1. Pickit面向机器人程序开发者及系统集成商&#xff0c;使用者不需要视觉基础或额外培训即可简便操作。 2. 定位各种形体及尺寸工件 3. 适应各种颜色环境 4. 适应各种材料 &#xff08;金属&#xff0c;塑料&#xff0c;木材…

ArrayList常用方法,不积硅步无以至千里

添加单个元素(可以是对象/基本类型/集合本身:arrayList.Add(元素) 添加集合中的每个元素(非集合本身):arrayList.AddRange(元素的集合) 指定位置插入元素:arrayList.Insert(索引,元素) 指定位置插入集合中的每个元素(非集合本身):arrayList.InsertRange(索引,元素的集合) 根…

Directory常用方法,不积硅步无以至千里

private void button1_Click(object sender, EventArgs e) {try{//创建主测试文件夹Directory.CreateDirectory(".\TestDirectory");//创建待剪切测试文件夹Directory.CreateDirectory(".\MoveDirectory");//将待剪切测试文件夹,剪切到主测试文件夹中Direc…

string常用方法,不积硅步无以至千里

1. 字符串至数值转换: 创建转换结果标志:bool successFlagfalse; 创建待转换字符串:string age27; 创建用来保存转换结果值的变量:int result-1; 转换:希望转换后得到的类型.TryParse(age,out result); 2. 字符串至字符数组转换: 创建待转换字符串:string info"abc123&qu…

HashTable常用方法,不积硅步无以至千里

1. 创建HashTable对象:HashTable hashTablenew HashTabel(); 2. 添加键值对:hashTable.Add(键,值); 3. 清空键值对:hashTable.Clear(); 4. 根据键删除键值对:hashTable.Remove(键); 5. 通过键获取值:hashTable[键] 6. 获取键的集合: 创建ArrayList集合:ArrayList arrayLis…