ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL学习笔记和处理方法

SQL学习笔记和处理方法

原创 Linux操作系统 作者:chouer523 时间:2019-06-13 13:00:06 0 删除 编辑

自己整理出来的东西,有几个来自CSDN论坛上,若有版权问题,请及时通知本人!


*******************************************************
声明:原创文章--版权所有---转载请保留信息
MSN:njchouer@hotmail.com
作者:chouer
********************************************************

1,如何取得前10笔资料

SELECT TOP 10 * FROM 表名

2,如何取得第10笔到第20笔之间的资料

select top 10 * from (select top 20 * from tablename order by id desc) order by id

或者

SELECT TOP 10 * FROM tb

WHERE id NOT IN(SELECT TOP 10 * FROM tb ORDER BY ID)

ORDER BY ID

或者

SELECT TOP 10 * FROM (SELECT TOP 20 * FROM tb ORDER BY ID) a ORDER BY ID DESC

或者

SELECT TOP 10 * FROM tb WHERE ID>(SELECT MAX(ID) FROM (SELECT TOP 10 ID FROM tb) a) ORDER BY ID

或者

select * from table_1 limit 11,20;

3, SQL数据库某一个表B字段内容里面有一些第一个字符是空格,请问用SQL如何去除这些空格?

方法()

declare @t table(id varchar(10))

insert @t select ' aaa'

union all select ' bbb'

update @t

set id=ltrim(id)

select * from @t

方法()

update B set column_name=Ltrim(column_name)

4,要實現以下的合併

aa bb

AB C

AB D

AB F

最後結果:

AB CDF

select 'AB' as aa,'C' as bb into testchar

select * from testchar

insert into testchar values('AB','F')

declare @a varchar(100)

declare @b varchar(5)

set @a=''

set @b=''

select @a=@a+bb,@b=aa from testchar group by aa,bb

select @b,@a

5, 有表d1.dbo.t1 d2.dbo.t2两个表

他们有共同和字段UserID

那么要求

1.当表t1里任何一条或多条记录,update更后,那么表t2相应的UserID相等当的 记录也将更新

2 .当表t1里任何一条或多条记录,Delete删除后,那么表t2相应的UserID相等当的 记录也将删除

:这两个updatedelete触发器代码

假設只有兩個字段UserID UserName,可根據實際情況修改觸發器

Use d1

GO

Create Trigger Deletett2 On t1

For Delete

As

Delete A From d2.dbo.t2 A Inner Join Deleted B On A.UserID=B.UserID

GO

Create Trigger Updatet2 On t1

For Update

As

Update A Set UserName=B.UserName From d2.dbo.t2 A Inner Join Inserted B On A.UserID=B.UserID

GO

6, 有一个表XC2005,里面有3个字段:DistrictName(行政区名)LandCode(地类代码),SmArea(面积)

DistrictName LandCode SmArea

玉洞村 202 20

新村村 112 18

那马村 262 54

玉洞村 111 32

玉洞村 202 61

... ...

现在要以行政区为单位统计各个地类的总面积,结果汇成一个表:

地类代码

行政区名 111 112 113... 326

玉洞村 面积 面积 面积 面积

那马村 ... ... ... ...

... ... ... ... ...

Declare @S Varchar(8000)

Set @S='Select DistrictName'

Select @S=@S+',SUM(Case LandCode When '+Rtrim(LandCode)+' Then SmArea Else 0 End) As ['+Rtrim(LandCode)+']'

From XC2005 Group By LandCode Order By LandCode

Select @S=@S+' From XC2005 Group By DistrictName'

EXEC(@S)

7,asp.net里如何防 'or'='or' 在线等待

方法1

方法2

select * from AdminInfo where UserName='"+TextBox1.text.Replace("'","''")+"' and PassWord='"+TextBox2.Text.Replace("'","''")+"'

方法3

使用參數

comm.Paremeters.Add("@userName",SqlDbType.varchar).Value=Textbox1.text;

comm.Paremeters.Add("@passWord",SqlDbType.varchar).Value=Textbox2.text;

comm.commandText="select * from AdminInfo where UserName=@userName and PassWord=@passWord";

2种方法都可以防止sql注入式攻擊

8,一个textBox输入字符,输入字符长度小于5个时不处理,当输入字符长度超过5个字符时引发个事件 用什么来办法实现

9, 简单的 sql 语句,一时解决不了了

比如多表联合查询出的结果集为:

col1 col2

a 1

a 2

a 3

b 1

b 2

...

我现在只想要 col2 中最大的一个值。

就是:

col1 col2

a 3

b 2

...

select col1 ,max(col2) from tb

group by col1

10,索引排序選項

order by中明確地使用ASC或者DESC進行升降序

11,查看SELECT語句的基本執行流程

可在查詢分析器中選擇顯示執行計劃或者使用”CTR+K”

12,DISTINCT的用法

SELECT 命令的第一個謂詞選項是DISTINCT關鍵字,這裡所說的重複是指在查詢結果輸出的那些列上的重複,而並非是在所查詢的表中重複

13,TOP的基本用法

使用可選的TOP謂詞則可以基于指定的選項來控制SQL只返回少量的行,(可以使用固定的數字 或者百分比來指定返回的行數)

TOP可以與ORDER BY 配合工作,如果SELECT語句沒有使用ORDER BY 子句 TOP語句仍然可以正常工作,它將返回未排序結果集的前n行數據.

14, WITH TIES基本用法

對於TOP謂詞來說,WITH TIES選項很重要,它可以在TOP謂詞返回的結果集之後附加多個行,這些行與TOP謂詞返回的結果集的最後一行,ORDER BY子句指定的排序列上具有相同的值.

FOR EXAMPLE:

SELECT TOP 3 WITH TIES [列名] FROM [TABLE] ORDER BY[列名]

15,限定返回行數的方法

限定返回行數的另一種方法是對ROWCOUNT 全局變量進行設置,它可以指定所有後續DML語句最多能夠處理的行數,要取消ROWCOUNT限制作用,可以將它設置為0

SET ROWCOUNT 3

SELECT 列名 FROM TABLE

16,若要取第一筆資料和最後一筆資料如何取得

取得第一個資料

selcect top 1 * from [table] where [id]>n order by desc

取得最後一個資料

select top 1 * from [table] where [id]>n order by asc

17,關鍵字

如果要用SQL關鍵字作為別名,或者使用包括空格得別名.必須將她們用方括號,單引號,或者雙引號括起來

18,”+”咚惴?糜梅

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/332542/viewspace-53517/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-28

  • 博文量
    74
  • 访问量
    47954