黑马程序员—.NET基础—数据库

本文详细介绍SQL的基本操作,包括数据插入、更新与删除,数据检索与排序,数据汇总及过滤等核心功能。此外还介绍了如何使用聚合函数进行数据统计,如何进行数据分组以及如何限制查询结果集的行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- 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培训、期待与您交流! ---------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值