-------Windows Phone 7手机开发、.Net培训、期待与您交流! -------
| 常用字段类型:bit(可选值0或1)、datatime、int、varchar、nvarchar(可能含有中文用nvarchar)。varchar、nvarchar和char(n)的区别:char(n)不足长度n的部分用空格填充。
| SQL语句中字符串用单引号。
| SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的。
| SQLServer中两种常用的主键数据类型:int(或bigint)+标识列(自动增长字段);uniqueidentifier(又称Guid、UUID)
| 用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。
| Guid算法是一种可以产生位移标识的高效算法。在SQLServer中生成Guid的函数是newid(),.net中生成Guid的方法是:Guid.NewGuid(),返回是Guid类型。
| int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据导入导出的时候很痛苦。
| Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。
定义基本表
create table <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
...
[,<表级完整性约束条件>]);
例如:
create table Student
(Sno char(9) primary key,
Sname char(20),
Ssex char(2));
修改基本表
alter table <表名>
[add <新列名><数据类型>[完整性约束]]
[drop <完整性约束名>]
[alter column<列名><数据类型>];
例如:alter table Student add Sage int;
删除基本表
drop table <表名>[restrict|cascade];
例如:drop table Student casecade;
查询语句
select [all|distinct]<目标列表达式>[,<目标列表达式>]...
from <表名或视图名>[,<表名或视图名>]...
[where <条件表达式>]
[group by<列名1>[having <条件表达式>]]
[order by <列名2>[asc|desc]];
1.使用distinct关键字可以取消结果表中的重复行。
2.where 指定查询结果要满足的条件。
3.group by 子句将查询结果按某一列或多列的值分组,值相等的为一组。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。having短语可以对这些组按条件筛选。
例如:
select Sno from SC
group by Sno
having count(*)>3;
意思是查询选修了3门以上课程学生的学号。
注意:where子句作用于基本表或视图,having短语作用于组。
4.order by子句对查询结果按照一个或多个属性列的升序(asc)或降序(desc)排序,缺省为升序。
5.聚集函数
count([distinct|all]*) 统计元祖个数
count([distinct|all]<列名>)统计一列中值的个数
sum([distinct|all]<列名>) 计算一列值的总和(必须是数值型)
avg([distinct|all]<列名>) 计算一列值的平均值()必须是数值列
max([distinct|all]<列名>) 一列值的最大值
min([distinct|all]<列名>) 一列值的最小值
注意:聚集函数遇到空值时,除count(*)外都跳过空值而只处理非空值
6.数字函数
abs():求绝对值
ceiling():舍入到最大整数
floor():舍入到最小整数
round():四舍五入
7.日期函数
getdate():取得当前日期时间
dateadd(datepart,number,date):计算增加以后的日起。参数date为待计算的日期;参数number为增量;参数datepart为计量单位。如dateadd(day,3,date)为计算date的3天后的日期。
datediff(datepart,startdate,enddate):计算两个日期之间的差额。datepart为计量单位。
datepart(datepart,date):返回一个日期的特定部分
8.控制处理函数
isnull(expression,value):如果expression不为空则返回expression,否则返回value。如:select isnull(FName,'佚名') as 姓名 from T_Employee.
9.case函数
单值判断:
case expression
when value1 then returnvalue1
when value2 then returnvalue2
when value3 then returnvalue3
else defaultreturnvalue
end
例如:
select FName,
(case FLevel
when 1 then 'VIP客户'
when 2 then '高级客户'
when 3 then '普通客户'
else '客户类型错误'
end)as FLevelName
from T_Customer
注意:当when后面的条件需要比较时,case后面不用写字段名
集合查询
多个select语句的结果可以进行集合操作,集合操作主要包括并操作union、交操作intersect和差操作except。
例如:
select * from Student where Sdept = 'CS'
union
select * from Student where Sage <= 19;
意思是查询计算机科学系的学生及年龄不大于19岁的学生。使用union将多个查询结果合并起来,系统会自动去掉重复元组(效率低),可以使用union all保留重复元组(效率高)。
注意:参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。
插入语句
insert into <表名>[(<属性列1>,[,<属性列2>...])]
values (<常量1>[,<常量2>]...);
例如:insert into Student(Sno,Sname,Sex) values('101','tom','男');
更新语句
update <表名>
set <列名>=<表达式>[,<列名>=<表达式>]...
[where <条件>];
例如:update Student set Sage=20 where Sno='101';
删除语句
delete from <表名> [where <条件>]
例如:delete from Student where Sno='101'