1 查询
select * from table where * order by [asc/desc] :查询信息以某条件并已某列进行排序asc 顺序,desc 倒序
where a=‘123’ 等于 , where a<>23不等于,
1.1指定列名,如:select name as 姓名,age as 年龄 from.......,name和age 是数据库的实际列名, 通过as语句则显示的列名师 姓名和 年龄。或者(姓名=name)表示
1.2合并列,如:select name+'-'+age+'-'+id as ‘ 信息’ from table :显示出以 信息 为列名, 张三-18-id号,的一列
1.3查找空行, 如:select * from table where A is null ,使用关键字12,不能使用null。 空行实质上是未录入过数据的单元,如果原来有数据后来被清空的,那么这个单元的值是一个空字符串,要使用 where A=’‘ 。
1.4增加常量列,如select name ,,,, '北京' as address from table,查询的每一行值后边都有一个地址为北京的address常量列。
1.5限制行数,如:select top 3 * from table, top 3 就是只查询出来结果的前三行显示。 top 10 percent 是百分之10查询。
1.6排序, 如 select * from table oder by id,默认升序排序asc, oder by id desc 降序。多列排序:oder by A asc,b desc, 先按照a升序排,再按b降序排。
1.7计算值,如 select class , AVG(age) as 平均年龄 group by class order by AVG(age) desc, 这就是查询某个班级年龄平均数,按照平均年龄排序。 其中group by是不能忽略的,否则甲酸AVG时无法找到计算的依据。
charindex : select charindex ('sql','microsoft sql sever') 返回 11,sql是从后边字符串的第11位开始的
len :select len ('abc d e ') 返回值是7 包括 前边和中间的空格,但不包括后边的空格。
lower: 全部转换成小写字母 SQL=sql
upper:全部转换成大写字母 sql=SQL
ltrim: 去掉字符串左侧空格
rtrim: 去掉字符串右侧空格
left/right:从左侧或右侧取字符 select lef(‘string’,num)
replace:替换字符 replace(源字符串,源字符,目标字符)
stuff:从固定位置开始替换掉固定字符stuff(源字符串,起始位,替换位数,目标字符),如果替换位数是0,那么将在起始位数开始插入目标字符。
1.9时间函数
getdate():当前日期时间年月日时分秒毫秒
dateadd:日期计算,(计算单位,计算数值,标准值) dateadd(dd,100,getdate())表示100天之后的的日期
datediff:两个日期间的差datediff(mm,‘时间1’,’时间2‘)=2-1的月数。
datename:取时间中的某一单位的值, 如(dd,getdate())今天是几号,(dw,getdate())星期几,yy年,mm月,dd天,dw星期,hh小时,mi分,ss秒
datepart:取日期指定部分的整型形式 (day,‘01/15/2000’)=15
1.10数学函数
abs:绝对值
ceiling:取大于或登录给定数值的最小整数,如43.2-->44
floor::取小雨或等于给定数值的最大整数,如43.2-->43
power:幂值 如 power(5,2)5的平方值25
round:四舍五入如:round(43.345,1)=43.3 保留1位
sing:正数返回1,负数返回-1,0返回0
1.11系统函数
convert(varchar(6),123456)类型转换 例子是整型转字符串型
current_user:当前数据库登录用户名
datalength: 按字符为单位返回字符串个数 一个汉字是两个字符
host_name:当前计算机名称
system_user: 返回登录用户名称
user_name(1):根据编号返回登录用名称
案例1,替换数据库中某字段中的O和I
Update table
set 字段=replace(字段,‘O’,‘0’)
set 字段=replece (字段,‘I’,‘1’)
等于 set 字段=replace(replace(字段,‘O’,‘0’),'i',‘1’)
案例2,12-1,13-8,14-1。。。。。不固定数值分段排序
select num from table
order by
convert(int,left(num,charindex(num,‘-‘)-1))asc,
convert(int,right(num,charindex(num,‘-’)+1)) asc
排序是用了两个条件 先取左边,通过获得’-‘符号位置确定左右的分割线,两条排序语句顺序执行。将字符串转换成了int 型才能计算,因为默认的是字符串模式。