---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
1、 几条SQL语句:SQL语句大小写不敏感
插入数据:
insert into 表名(Name(内容),Age)values(‘li’,20)
guid算法插入:
insert into 表名(ID,Name,Age) values(newid(),‘li’,20)
更新一个列:
UPDATE T_Person Set Age=30 (Age那一列都变为30)
更新多个列:
UPDATE T_Person Set Age=30,Name=’tom’
例:
Update Person1 set nickname=N’青年人’ where Age>=20
SQL语句中出现汉子要在其前面加N ,上面语句为有条件更新
2、 删除表中全部数据:deletefrom t_person
Delete只是删除数据,表还在,和drop table不同
Detele 也可以带where 字句来删除一部分数据:
Delete from T_Person where FAge>20
3、 数据检索
全部检索 select from T_Employee
检索字段select Name Age from T_Employee
后面可以加过滤条件
给列起个别名
select Name as 姓名,Age as 年龄 fromT_Employee
这样检索出来的数据上面加上那一列的别名例:
姓名 年龄
1 tom 20
2 luck 18
3 jack 22
还可以检索不与任何表关联的数据
SQL语句非常灵活,还可以进行运算:
select Name as 姓名,Age as 年龄,Salary+1000 as 月薪 from T_Employee
4、 数据汇总
SQL聚合函数:max(最大值)、min(最小值)、avg(平均值)、sum(和)
Count(数量)
大于25岁的员工的最高工资:
Select max(Fsalary) from T_Emploryee where Fage>25
5、 数据排序
按照工资排序:
结尾的asc表示升序,降序为desc
注意:过滤条件写在order之前
查寻一个人的信息:
6、 通配符过滤(例:以华开头的厂家的信息)
(1)通配符过滤使用LIKE
(2)单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。以任意字符开头,剩余部分为“erry”:
Select * from T_Emploryee where FName LIKE ’_erry’
名字像’’类型的
(3)多字符匹配的通配符半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。“k%”匹配以“k”开头、任意长度的字符串。检索姓名中包含“n”的员工信息:
select * fromT_Emploryee where FName LIKE %n%’
7、 空值处理
数据库中NULL表示不知道,而不是空。
8、 多值匹配
Select FAge,FNumber,FName from T_Emploryeewhere FAge in(23,25,28)
范围值:select * from T_Emploryee where FAge>=23and FAge<=27;
select * from T_Emploryee where FAgebetween 23 and 27
9、 数据分组
(1)按照年龄进行分组统计各个年龄段的人数:
Select FAge,count(*) from T_Emploryee
group by Fage
例:
FAge 个数
22 1
23 2
25 6
Group by 字句必须放到where语句之后
(2)没有出现在group by句子中的列是不能放到select语句后的列名列表中的(聚合函数中除外)
错误:select FAge,FSalary from T_Emploryee
group by FAge//因为每个人工资都不一样
正确:select FAge,AVG(FSalary) from T_Emploryee
group by FAge//取工资平均值这个可以
(3)聚合函数不应该出现在where中
select FAge,count(*) from T_Emploryee
where count(*)>1
group by FAage//错误
select FAge,count(*) from T_Emploryee
group by FAage
having count(*)>1//正确
区别:having是对分组后信息的过滤,能用的列和select中能用的列是一样的,having无法代替where
select FAge,count(*) fromT_Emploryee
group by FAage
having FSalary>2000//c错误 因为FSalary没出现在分组中
10、 限制结果集行数
取工资前5名
Select top 5 * from T_Emploryee orderFSalary Desc
检索按照工资从高到低排序检索从第六名开始一共三人的信息:
Select top 3 * from T_Emploryee whereFNumber NOT IN
(select top 5 FNumber from T_Emploryeeorder FSalary Desc
)ORDER BY FSalary desc
11、 去掉重复数据distince
Select * from T_Emplory//表示所有员工信息
Select department from T_Emplory//所有员工的部门,有些员工部门是重复的
Select distince department from T_Emplory/ /显示出了所有不同的部门
Select distince department,subcompany(分公司) from T_Emplory// distince是针对整行的只有部门和分公司都相同才会过滤掉
12、 联合结果集 union
Select name,age from T_Emplory01
Union (ALL)
Select name,age from T_Emplory02
注意:把两次结果连接起来,前提显示的东西必须一致,都是两个对应才行,连接的时候union默认会把重复的合并掉,如果不想合并后面加上ALL
Union因为要进行重复值扫描,所以效率低,一次如果不是确定要进行重复合并,那么就用UNION ALL
联合查询:
Select ‘正式员工最高年龄’ max(age) from T_Emplory
Union all
Select ‘正式员工最低年龄’ min(age) from T_Emplory
Union all
Select ‘临时工最高年龄’ max(age) from T_Emplory
Union all
Select ‘临时员工最高年龄’ min(age) from T_Emplory
13、 数字函数
ABS:求绝对值
CEILING():舍入到最大整数。3.33=4,2.89=3,-3.61=-3
Ceiling—天花板
FLOOR();舍入到最小整数。3.33=3;2.89=2;-3.61=-4
Floor—地板
ROUND();四舍五入。舍入到离我半径最近的数。Round(3.1415,2)
后边的2表示精确到小数点后2位,Round—半径。
14、 字符串函数
Len():计算字符串长度
Lower()、upper():转大小写
Ltrim():字符串左侧的空格去掉
Rtrim():字符串右侧的空格去掉
SUBSTRING(string,start_position,length)
参数 string为主字符串,star_position为子字符串
在主字符串中的起始位置,length为子字符串的最大长度。
Select SUBSREING(‘abcdef111’,2,3)//跟c#差不多
15、 日期函数
Getdate():取得当前日期时间
Dateadd(datepart,number,date),计算增加以后的日期。
例:Dateadd(day,3,date)为计算日期date的3天后的日期,而
Dateadd(month,-8,date)为计算日期date的8个月前的日期。
Datediff(datepart,startdate,enddate)计算两个日期之间 差额。
Datepart(datepart,date):返回一个日期的特定部分
16、 类型转换函数
17、 Case函数用法1
(1)单值判断,相当于switch case
Case expression
When value1 then return value1
When value2 then return value2
When value3 then return alue3
Else defaulte rturn value
End
例子:
Select FName
(case flevel
when 1 then ‘vip客户’
when 2 then ‘高级客户’
when 3 then ‘普通客户’
else ‘客户类型错误’
end)as 客户类型
from T_Customer
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------