------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
创建数据库,创建表,设置主键
僧删改查 不仅可以手工完成,还可以用sql语句
(*)sql主要分为DDL(数据定义语句)(建删)、DML(数据操作语句)(更新等)两类。
常用字段类型:
bit(可选值0,1)、datelime、int、varchar(字符串)、nvarchar(可能含有非英文的字符串);
!varchar、nvarchar和char(n)的区别:char(n)不足长度n的部分用空格填充
!sql中字符串用单引号。
!sql中关键字大小写不敏感,但字符串值大小写敏感
主键设定有限定:大多数都可以,但不合理。
两种常用主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
标识列: 实现字段自增避免并发问题,用标识列的字段在instrl的时候不用设定主键值。
将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
guid算法:是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等计算出来,保证每次生成
的guid永远不会重复,公元3400年前不会相同。SQL中生成guid的函数是newid()
.net中生成guid的方法:Guid.NewGuid(),返回Guid类型。
(*)int自增优点:占用空间小、无需开发人员干预,易读。 缺点:效率低,数据导入导出很痛苦。
(*)guid 优点:效率高、数据导入导出方便。 缺点:占用空间大,不易读。
(*)业界主流倾向于guig
insert插入时表名后的列名可以省略,但不建议省略。
如插入行中有些字段值不确定,那么insert的时候不指定那些列即可
可以给字段设定默认值,如guid类型主键默认值设定为newid()就会自动生成。很少这么干。
【@】表的建立:
create table 表名(id int NOT NULL,列名 类型 非空,列名 类型)
【@】表的删除:
drop table 表名
【@】数据插入:
普通数据插入:insert into 表名(字符串列明1,列明2) values('字符串数据1',数据2)
插入guid主键:insert into 表名(id,字符串列明2,列明3) values(newid(),'字符串数据2',数据3)
int 主键:将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
【@】数据更新:
更新一个列:update 表名 set 列名1 = 数据1
更新多个列:update 表名 set 列名1 = 数据1,列名2 = 数据2
更新一部分:update 表名 set 列名1 = 数据1 where 条件(例:列名2=数据2),
//用where语句表示只有 (列名2 是 数据2) 的行才会更改,SQL中等于判断用单个=。
where中可使用逻辑运算符:or(相当于C#中的||,或者)、and(并且)、not(非)、<、>、>=、<=、!=(或<>)等
【@】数据删除:
删除全部数据:delete from 表名
删除部分数据:delete form 表名 where 条件
【@】数据检索:
简单的数据检索:select*from 表名
只检索需要的列:select 字段名 from 表名
select 列名,列名 from 表名
列别名: select 字段名 as 别名
where条件检索 :select*from 表名 where 条件
检索不与任何表关联的数据:select 要查内容
】数据汇总: select 函数(*或列名)from 表名 where 条件
SQL聚合函数:count 数量,max 最大,min 最小,avg 平均,sum 总和
】数据排序: select*from 表名 order by 列名 asc //asc升序;desc降序
select*from 表名 order by 列名 asc,列名2 desc //值1相等;按值2排序
//有判断条件时, where要在order by 之前
】通配符过滤: 模糊匹配 模糊查询
like:单字符匹配:select*from 表名 where 列名 like'字符串_字符串'
通配符为半角下划线“_”,即英文的。任意字符开头,剩余部分为“erry”
多字符匹配:select*from 表名 where 列名 like'字符串_字符串' like'%字符串%'
通配符为半角百分号“%”,
】空值处理: 空值即为NELL,表示不知道
查询不知道的数据:select*from 表名 where 列名 is null
select*from 表名 where 列名 is not null
】多职匹配: select*from 表名 where 条件1 or 条件2 or 条件3
select*from 表名 where 列名 in (值1,值2,值3)
select*from 表名 where 条件1 and 条件2
between: select*from 表名 where 列名 between 值1 and 值2;//指定列中 值在值1与值2间的数据
】数据分组: select 列名,函数 from 表名 group by 列名 //函数例如:count(*);前列名表示是否显示分组的根据
】having语句: select 列名,函数 from 表名 group by 列名 having 函数
! where中不能使用聚合函数,必须使用having,要位于group by之后,
是对分组后信息进行过滤,
】限制结果集行数:select top3*from 表名 各种条件(排序 过滤语句) //前三前 【分页】
例:select top3*from 表名 where 编号列 notin (select top 5 编号列 from 表名 order by 工资列 desc)order by 工资列desc
//工资从高到低排序检索 从第六名起三人的信息
】row_number: 2005后增加
】去掉重复数据:
//distinct 去除重复项关键字; 消除完全重复的行
】联合结果集: select 列名1 from 表名1 UNION select 列名1 from 表名2
//基本原则:每个结果集必须有相同的列数,每个结果集的列必须类型相容。【两表有相应的列】【默认重复数据合并】
Union all: 同上 union all 同上 【重复行不合并】
】数字函数: abs():求绝对值
ceiling():舍入到最大整数。【3.33舍入到4】
floor():舍入到最小整数。
round():四舍五入。 【round(数值,精确到位数)据我半径最近的数】
】字符串函数: len():计算字符串长度。
lower()、upper():准换小写、大写。
ltrim():字符串左侧的空格去掉
rtrim():字符串右侧的空格去掉 【ltrim(rtrim(字符串));去两边】
【取字符串中部分字符】substring(主字符串,子字符串在主字符串中的起始位置,子字符串的最大长度)
】日期函数:gerdate():取得当前日期
dateadd(计量单位,增量,待计算日期):计算增加后日期。例:deteadd(day,3,date);三天后日期
datediff(计量单位,开始日期,结束日期):计算两个日期间的差额。
datepart(计量单位,date):返回一个日期的特定部分。
】类型转换函数: cast(表达式 as 数据类型);
convert(数据类型,表达式);
】空值处理函数:isnull: select isnull(要判断是否为空的 列名,‘显示的字符串’)as 要显示的列名 from 表名
*】case函数用法1:判断表达式值 执行不同事件
case 要判断的
when 值1 then 返回值
when 值2 then 返回值
else 默认返回值 end //否则默认返回值
*】case函数用法2:条件范围判断
例: select name,
{
case
when 收入<4000 then 低收入
when 收入>4000 then 高收入
else 一般般
and
} as 收入水平
from 表名
【@】索引: 声明目录 经常进行查询的字段
【@】表连接: 表1 as 别名1 join 表2 as 别名2 on 别名1.列名 = 别名2.列名
jion
【@】子查询:将查询到得 当做表处理
单值子查询:返回一行一列的值
多行单列的子查询:
【【@】】SQL2005以后
把查询结果作为子查询
row_number() 内置行号 开窗函数 只能出现于select或order by子句中;
用子查询来用 ---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima/