黑马程序员_SQL基础小结

-------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'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值