SQL数据库开发知识总结:提高篇
1.联合结果集
(1) 简单的结果集联合
select FNumber,FName,Fage from T_Employee\
union
select FidCardNumber,FName,Fage from T_Employee
(2) 查询的基本原则是:每个结果集必须有相同的列数,没个结果集的列必须类型相同。
select FNumber,FName,Fage,FDepartment from T_Employee
union
select FidNumber,FName,Fage,’临时工,无部门’ from T_Employee
- union All
(1) select FName,Fage from T_Employee
union
select FName,Fage from T_Emoloyee
(*) union合并两个查询结果集,并且将其中完全重复的数据行合并为一条记录。
(2) select FName,Fage from T_Employee
union All
select FName,Fage from T_Employee
(*) union因为要进行重复值的扫描,所以效率低,因此如果不是确定要合并重复行,那么推荐用union All
- 数据库函数
(1) 数字函数
1) ABS():求绝对值 select ABS(-3)
2) ceiling():舍入到最大整数。例如:3.33将被舍入为4,2.89将被舍入为3,-3.61将被舍入为-3。ceiling的英文意思是天花板。
3) floor():舍入到最小整数。例如:3.33将被舍入为3,2.89将被舍入为2,-3.61将被舍入为-4。floor的英文意思是:地板。
4) round():四舍五入。舍入到“离我半径最近的数”。round的英文意思是:半径。
例如:select Round(-3.1415926,3) 执行结果是:-3.1420000
(2) 字符串函数
1) len():计算字符串长度, select len(‘234’) 执行结果是3。例如:
select FName,len(FName) from T_Employee。
2) lower(),upper():转小写,转大写。
3) ltrim():字符串左侧的空格去掉。例如:去掉两边的空格:
rtrim():字符串右侧的空格去掉。
例如:去掉两边的空格:ltrim(rtrim(‘ 韩迎龙 ’))
4) SubString(string,start_position,length),参数string为主字符串,start_position为字符串在主字符串中的起始位置,length为子字符串的最大长度。例如:
select substring(‘abcdefghijk’,2,3) 执行结果为:bcd。
select FName,Substring(FName,2,2) from T_Employee。
(3) 日期函数
1) getdate():取得当前日期的时间。
2) dateadd(datepart,number,date),计算增加以后的时间,参数date为待计算的日期,参数number为增量,参数datepart为计量单位。例如:
dateadd(day,3,date)为计算日期date的3天后的日期。
dateadd(month,-3,date)为计算日期date的8个月前的日期。
select dateadd(day,-3,getdate()) 执行结果是:当前时间的前三天。
3) datediff(datepart,startdate,enddate):计算两个日期之间的差额。datepart为计量单位。
select datetdiff(hh,getdate(),dateAdd(day,-3,getdate())) 执行结果为-72。
select FName,FInDate,DateDiff(year,FInDate,getdate()) from T_Employee 员工的工龄。
4) datepart(datepart,date):返回一个日期的特定部分。例如:
select datepart(year,getdate()),datepart(month,getdate()) 执行结果:2012 4
(4) 类型转换函数
1) cast(expression as data_type)
2) Convert(date_type,express)
例如:select cast (’123’as int),cast(‘2012/4/9’ as dattime),Convert(datetime,’2012/4/9’)
- 空值处理函数
(1) isNull(express,value):如果express不为空则返回express,否则返回value。例如:
select isNull(Fname,’佚名’) as 姓名 from T_Employee
- Case函数用法
(1) 单值判断,相当于switch case,语法为:
case expression
when value1 then returnvalue1
when value2 then returnvalue2
when value3 then returnvalue3
else defaultreturnvalue
end
举例如下:select FName,
(
when 1 then ‘普通用户’
when 2 then ‘会员’
when 3 then ‘VIP’
else ‘未知客户类型’
end
) as 客户类型 from T_Customer
- 索引Index
(1) 全表扫描,对数据进行检索(select)效率最差的就是全表扫描,就是一条一条的找。
(2) 如果没有目录,查询汉语字典就要一页页的翻,而有了目录,只要查询目录即可,为了提高检索的速度,可以为经常检索的列添加索引,相当于创建目录。
(3) 创建索引的方式,在表设计器中单击右键,选择”索引/键”到添加到在列中选择索引包含的列。
(4) 使用索引能够提高查询效率,但是索引也是占据空间的,而且添加,删除,更新数据的时候也需要同步更新索引,因此会降低insert,update,delete的速度,只有在经常检索的字段(where)上创建索引。
(5) (*)即使创建了索引,任然有可能全表扫描,比如:link,函数,类型转换等。
- 表连接ioin
(1) select o.BillName,c.Name,c.Age
from T_Orders as o join T_Customers as c on o.customerID=c.ID
注:简单的join可以将两张表按照一定的规律连接起来,使我们可以再两张甚至更多的表之间进行查询。
- 子查询
(1) 将一个查询语句做成一个结果集供其它SQL语句使用,就像使用普通的表一样,被当做结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。
select * from (select * from T2 where FAge<30)。
SQL数据库开发知识总结:提高篇的更多相关文章
- SQL数据库开发知识总结:基础篇
1数据库概述 (1) 用自定义文件格式保存数据的劣势. (2) DBMS(DataBase Management System,数据库管理系统)和数据库,平时谈到”数据库”可能有两种含义:MSSQL ...
- SQL数据库基础知识-巩固篇<一>
SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...
- PL/SQL数据库开发那点事
PL/SQL数据库开发那点事-->编程,存储程序 在SQL*plus 中编写PL/SQL程序,并在SQL*plus 中执行它, PL/SQL块的代码就存放在SQL*plus的缓冲区中.如果在SQ ...
- 测试人员需要了解的sql知识(提高篇)
上一篇写了一些基础的sql知识,这里再深挖一些常用的 ------------------------------------------------------------------骄傲的分割线- ...
- SQL 数据库基本知识
SQL:Structured Quety Language SQL SERVER是一个以客户/服务器(c/s)模式访问.使用Transact-SQL语言的关系型数据库管理子系统(RDBMS) DBMS ...
- SQL数据库开发中的一些经典代码
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: ...
- SQL 数据库开发一些精典的代码(转永南)
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: s ...
- SQL 数据库开发一些精典的代码(转自 咏南工作室)
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: s ...
- sql数据库基础知识整理,常用函数及常用语法
1常用数据库聚合函数max()min()sum()avg()count() 2字符串处理函数len() 与 datalength() 区别:len是返回字符长度 datalength是返回字节长度 ...
随机推荐
- Django model中 双向关联问题,求帮助
Django model中 双向关联问题,求帮助 - 开源中国社区 Django model中 双向关联问题,求帮助
- stm32f10x.h文件分析理解
今天再看过半年前自己写的这篇发现自己当时理解有误,stm32f10x.h与库开发并未存在太大关系,只是一个最为重要的寄存器地址到寄存器结构体变量的映射. stm32f10x.h 这个头文件是STM32 ...
- hdu 1034 Candy Sharing Game
Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- [iOS基础控件 - 6.7.1] 微博展示 代码
Controller: // // ViewController.m // Weibo // // Created by hellovoidworld on 14/12/4. // Copyrig ...
- Stage3D学习笔记(六):旋转动画效果
我们这节在上一篇代码的基础上再进一步,让显示的纹理进行旋转. 实现旋转,只需要每帧修改_modelViewMatrix的旋转角度即可,我们需要一个变量来记录旋转: //旋转度数 private var ...
- easyui tree在struts1中的使用
前段时间写过类似的功能,开发环境是struts2,jdk1.6,tomcat 而这次是修改N年前的项目 项目的开发环境为struts1,jdk1.4,weblogic8,比较过时所以就增加了使用eas ...
- hadoop安装详解
1.hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapRe ...
- 使用openssl库实现des,3des加密
原文地址: 使用openssl库实现des,3des加密 主要是调整了一下格式,以及一些变量的类型,以解决在VC2008下无法编译通过的问题. #include <stdio.h> #in ...
- 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)
从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了,但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(UT ...
- Python、C和Java对比
先上一个Python小测试: #!/usr/bin/env python #coding=utf-8 ''' 等腰三角形 ''' for i in range(1,6): print ' '*(6-i ...