摘要: 今天看了一道面试题,自己动手做了下,发现还是非常有趣的: 题目如下: using System; class A { public A() { PrintFields(); } public virtual void PrintFields(){} } class B:A { int x=1; int y; p... 阅读全文
posted @ 2013-02-28 18:08 davidlovelife 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。SELECT * FROM(SELECT * FROM T2 where FAge<30) 单值做为子查询: SELECT 1 AS f1,2,(SELECT MIN(FYearPublished) FROM T_Book),... 阅读全文
posted @ 2013-02-28 16:20 davidlovelife 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 有客户表(T_Customers)和订单表(T_Orders)两个表,客户表字段为:Id、Name、Age,订单表字段为:Id、BillNo、CustomerId,订单表通过CustomerId关联客户表。测试数据见备注。 SELECT o.BillNo,c.Name,c.Age from T_Orders as o JOIN T_Customers as c on o.Cu... 阅读全文
posted @ 2013-02-28 16:13 davidlovelife 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 全表扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条条的找。 如果没有目录,查汉语字典就要一页页的翻,而有了目录只要查询目录即可。为了提高检索的速度,可以为经常进行检索的列添加索引,相当于创建目录。 创建索引的方式,在表设计器中点击右键,选择“索引/键”→添加→在列中选择索引包含的列。 使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需... 阅读全文
posted @ 2013-02-28 15:59 davidlovelife 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1.单值判断,相当于switch case CASE expression WHEN value1 THEN returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3 ELSE defaultreturnvalue END 例子SELE... 阅读全文
posted @ 2013-02-28 15:52 davidlovelife 阅读(109) 评论(0) 推荐(0) 编辑
摘要: ISNULL(expression,value) : 如果expression不为空则返回expression,否则返回value SELECT ISNULL(FName,'佚名') as 姓名 FROM T_Employee 阅读全文
posted @ 2013-02-28 15:47 davidlovelife 阅读(144) 评论(0) 推荐(0) 编辑
摘要: CAST ( expression AS data_type) CONVERT ( data_type, expression) SELECT FIdNumber, RIGHT(FIdNumber,3) as 后三位, CAST(RIGHT(FIdNumber,3) AS INTEGER) as 后三位的整数形式, CAST(RIGHT(FIdNu... 阅读全文
posted @ 2013-02-28 15:45 davidlovelife 阅读(122) 评论(0) 推荐(0) 编辑
摘要: GETDATE() :取得当前日期时间 DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。DATEADD(DAY, 3,date)为计算日期date3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date8个月之前的日期 DATE... 阅读全文
posted @ 2013-02-28 15:40 davidlovelife 阅读(205) 评论(0) 推荐(0) 编辑
摘要: LEN() :计算字符串长度 LOWER() 、UPPER () :转小写、大写 LTRIM():字符串左侧的空格去掉 RTRIM () :字符串右侧的空格去掉 LTRIM(RTRIM(' bb ')) SUBSTRING(string,start_position,length) 参数string为主字符串,start_position为子字符串在主字符串中的起始位... 阅读全文
posted @ 2013-02-28 15:36 davidlovelife 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 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→“半径”。Round(3.1425,... 阅读全文
posted @ 2013-02-28 15:34 davidlovelife 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 简单的结果集联合: •SELECT FNumber,FName,FAge FROM T_Employee UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee 基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。 SELECT FNumber,FName,FAge,FDepartment FRO... 阅读全文
posted @ 2013-02-28 15:32 davidlovelife 阅读(174) 评论(0) 推荐(0) 编辑
摘要: DISTINCT是对整个结果集进行数据重复处理的,而不是针对每一个列,因此下面的语句并不会只保留Fdepartment进行重复值处理: SELECT DISTINCT FDepartment,FSubCompany FROM T_Employee 阅读全文
posted @ 2013-02-28 14:53 davidlovelife 阅读(181) 评论(0) 推荐(0) 编辑
摘要: SELECT top 5 * FROM T_Employee order by FSalary Desc (*)检索按照工资从高到低排序检索从第六名开始一共三个人的信息 : SELECT top 3 * FROM T_Employee WHERE FNumber NOT IN (SELECT TOP 5 FNumber FROM T_Employee ORDER B... 阅读全文
posted @ 2013-02-28 14:33 davidlovelife 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后: SELECT FAge,COUNT(*) AS 人数 FROM T_Employee GROUP BY FAge HAVING COUNT(*)>1 注意Having中不能使用未参与分组的列,Having不能替代where。作用不一样,Having是对组进行过滤。... 阅读全文
posted @ 2013-02-28 13:45 davidlovelife 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 按照年龄进行分组统计各个年龄段的人数:SELECT FAge,Count(*) FROM T_Employee GROUP BY FageGROUP BY子句必须放到WHERE语句的之后没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外)•错误: SELECT FAge,FSalary FROM T_Employee GROUP BY FAge•正确:SELECT FAge,AVG(FSalary) FROM T_Employee GROUP BY FAge 阅读全文
posted @ 2013-02-28 13:42 davidlovelife 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 1.in(value1,value2) Delete Employ where id in(21,22) 2.and,between..and.. 范围值: SELECT * FROM T_Employee WHERE FAGE>=23 AND FAGE <=27 SELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AN... 阅读全文
posted @ 2013-02-28 13:40 davidlovelife 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null,数据库中的null表示“不知道”,而不是表示没有。 因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。 SELECT * FROM T_Employee WHERE FNAME=null ; SELECT * FROM T_Employee WHERE FNA... 阅读全文
posted @ 2013-02-28 13:29 davidlovelife 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 通配符过滤关键字使用LIKE 。 单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。 eg:以任意字符开头,剩余部分为“erry” SELECT * FROM T_Employee WHERE FName LIKE '_erry' 多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。 “k%”匹配以“k”开头、任意长度的字符串 ... 阅读全文
posted @ 2013-02-28 13:26 davidlovelife 阅读(187) 评论(0) 推荐(0) 编辑
摘要: ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)。 按照年龄升序排序所有员工信息的列表: SELECT * FROM T_Employee ORDER BY FAge ASC 按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM T... 阅读全文
posted @ 2013-02-28 13:22 davidlovelife 阅读(135) 评论(0) 推荐(0) 编辑
摘要: SQL聚合函数:1.MAX(最大值)2.MIN(最小值)3.AVG(平均值)4.SUN(和)5.COUNT(数量) 阅读全文
posted @ 2013-02-28 13:14 davidlovelife 阅读(167) 评论(0) 推荐(0) 编辑