首页 > Linux操作系统 > Linux操作系统 > SQL学习笔记和处理方法
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相等当的 记录也将删除
求:这两个update和delete触发器代码
假設只有兩個字段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關鍵字作為別名,或者使用包括空格得別名.必須將她們用方括號,單引號,或者雙引號括起來
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23495244/viewspace-660062/ ,如需转载,请注明出处,否则将追究法律责任。