sql笔记 查询基础

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 型才能计算,因为默认的是字符串模式。














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值