SQL sever 学习,2016,5,31,(重点:100行以后,字符串操作。)
--别名和表达式
select OrderDate,YEAR(OrderDate)as 订单年份
from orders;
--选择
select OrderDate,YEAR(OrderDate)as 订单年份
from orders
where year(OrderDate)=2006;
--在分组的情况下,select字句会有限制,只能查询整个组的统计情况
select YEAR(OrderDate),count(*),SUM(OrderDate)
from orders
group by OrderDate;
select count(*),SUM(OrderDate)
from orders;
--NULL 空,与NULL运算的结果还是NULL
--必须使用特殊的方式来使用NULL
select OrderDate
from orders
where not OrderDate is null;
--组函数会忽略null
--having 筛选统计后的数据
select ... COUNT(*)
from orders
group by ...
having COUNT(*) > 2;
--order by 排序
select OrderDate,YEAR(OrderDate)as 订单年份
from orders
order by OrderDate desc;
--top 查询前几条
select top(2)--查询前2条
--SQL
select CityName as 城市
from city
select *
from distributors
select top(3) *
from items
-- select SQL语句本身不区分大小写
--百分比
select top(20) percent *
from distributors
--with ties 表示额外附加于最后一条记录相等的记录
select top(5)with ties BossName
from distributors
order by BossName
--over子句 称为开窗函数
select BossName
from distributors;
select count(*)
from distributors ;
--over
select BossName ,count(*) over()as 人总数
from distributors
select Item, OrderNum ,TotalPrice
,sum(TotalPrice ) over() as 总价
,sum(TotalPrice) over(partition by Item)--partition by 相当于做一个相等的选择,选出等于的值
from items
--排名
--row_number行号
--rank 排名,表示前面有多少
--dense_rank密集排名
--ntile 分组
select row_number() over(order by CityCode)as 行号
,rank() over(order by CityCode)as 排名
,dense_rank() over(order by CityCode)as 密集排名
,ntile(3) over(order by CityCode)as 分组
,BossName,CityCode
from distributors
--排名结合部分
select
ROW_NUMBER() over(order by CityCode),
ROW_NUMBER() over(partition by CityCode order by CityCode),--组里边再排名
CityCode ,BossName
from distributors
select *
from distributors
--where 条件
select *
from distributors
where DistriNum >=1004 and DistriNum <=1010
--between and,包含边界,注意上界和和下界
select *
from distributors
where DistriNum between 1004 and 1010
--in
select *
from distributors
where DistriNum =1004 or DistriNum =1009 or DistriNum =1010
select *
from distributors
where DistriNum in (1004,1009,1010)
--like必须掌握,字符串匹配, % 任意多个字符, _ 任意一个字符。
select *
from distributors
where BossName like '王%'
select *
from distributors
where BossName like '_为%'
select *
from distributors
where BossName like '%真%真%'
--case 简单表达式,比较是否相等
select BossName ,CityCode ,
case CityCode
when 'CY' then '谁外'
else '其他'
end
from distributors
--case 搜索表达式
select BossName ,CityCode ,
case
when CityCode in('CY','PG') then 'wwww'
when CityCode is null then '未知'
when BossName ='王为' then '就是他'
else '去其他区'
end
as hhe
from distributors
--*************************************************************
--SQL字符数据类型
--char 类型 一个长度的字符串
--char(8) 8个长度的字符串 固定长度的字符串
--varchar(8) 可变长度字符串 最长占8个 多余的自动退回
--nchar 国际化编码,unicode,字符长度,每个字符占2个字节,固定长度
--nvarchar(8) 可变长度的国际化字符串************************
--nvarchar(4000) 4000最大值,8000字节
--nvarchar(max) varchar(max) 特别长度
--**************************************************************
--定义变量
declare @s varchar(10);
set @s ='hello';
print @s;
set @s=@s+'world';
print @s;
--isnull函数
declare @s varchar(10);
print @s;
set @s= isnull(@s,' ') + 'world';
print @s;
--注意:在SQL中 下标是从1开始的
--substring(BossName,3,4)截取字符串
--left 表示截取左边 left(BOssName,4)
--right表示截取右边 right(BossName,4)
declare @s varchar(10);
set @s ='hello';
print @s;
set @s=@s+'world';
print @s;
print len(@s); -- 实际长度
print datalength(@s);-- 索取的长度
--模板在前,源字符串在后,,**出现在字符串中的位置,从高1开始
declare @s varchar(10);
set @s='helloworld';
print @s;
select @s ,charindex('w',@s)--找到位置
select @s,substring(@s,charindex('w',@s)+1,10)
--replace替换
declare @s varchar(20)
set @s='hello world';
print @s;
select @s,replace(@s,'hello','你好啊')
--stuff 替换
declare @s varchar(20)
set @s='hello world'
print @s
select @s,stuff(@s,charindex(' ',@s),1,':')
--upper变大写,lower变小写
--rtrim() 去掉右边,lteim()去掉左边
--ltrim(rtrim()) 去掉左右边的所有字符
declare @s varchar(20)
set @s=' hello wor ld '
print @s;
set @s=rtrim(@s);
print @s;
set @s=ltrim(@s);
print @s;
set @s=ltrim(rtrim('o'));
print @s;
SQL sever 学习,2016,5,31,(重点:100行以后,字符串操作。)的更多相关文章
- SQL Sever 学习系列之二
SQL Sever 学习系列之二 SQL Server 学习系列之一(薪酬方案+基础) 四.有关时间输出问题 select GETDATE() 日期时间 ----显示为:2013-07 ...
- SQL Sever 学习系列之一
SQL Sever 学习系列之一 本学习系列,从实际工作需要中积累,对于一个新手而言,写出几条漂亮的查询语句,应该是可以受启发的. 一.问题的需求是:员工薪酬发放,现有资金能发放多少人,哪些人应得? ...
- SQL Sever 学习系列之三
SQL Sever 学习系列之三 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) 五.经理今天刚谈到with的用法(with的 ...
- tail -f 实时查看日志文件 linux查看日志后100行
tail -f 实时查看日志文件 tail -f 日志文件logtail - 100f 实时查看日志文件 后一百行tail -f -n 100 catalina.out linux查看日志后100行搜 ...
- 3-1创建Sql Sever数据库登录名
登录名:连接Sql Sever 服务器 数据库用户名: Sql Sever 的使用者 每个用来登录Sql Sever 的账户都是一个用户. 同一个数据库可以拥有多个用户,每一个用户也同时可以访问多个数 ...
- java连接到sql sever 2008_java基础学习
(sql sever 2008跟sql sever 2005装载JDBC驱动的方法是一样的) 一.加载驱动的文字教程 1.准备相关的软件(Eclipse除外,开源软件可以从官网下载) <1> ...
- SQL数据库学习,常用语句查询大全
数据库学习 sql server数据库基本概念 使用文件保存数据存在几个缺点: 1.文件的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据 4.文件在程序中控制不方便. 数 ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- SQL语句学习手册实例版
SQL语句学习手册实例版 表操作 例1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, ...
随机推荐
- centos 更新linux内核
之前一直使用centos 7系统进行开发,centos 7.0 系统自带的linux内核版本为 linx 3.10,最近开发需要使用到socket的reuse port特性,该特性在linux 3.9 ...
- JOIN关联表中ON,WHERE后面跟条件的区别
select * from td left join (select case_id as sup_case_id , count(*) supervise_number from td_kcdc ...
- 分布式事务二阶提交DTS系统
前端时间写新交易系统时,经常碰到事务一致性问题,网上搜了一下,有一些解决方法,采用了扫表补偿的方式来完成,刚开始只有几个接口需要处理,工作量还可以,但是后续随着需求的增加,这些场景错综复杂,导致大量时 ...
- [CentOS 7] 安装nginx
下载对应当前系统版本的nginx包(package) # wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cent ...
- 日常积累之JSON.stringify和JSON.parse substr
1.substr(start,len) 从字符串中读取内容,第一个参数是读取的首位置,如果为负数,则从末尾倒数计数. 第二个参数是要读取的长度. eg: var str = "silence ...
- 20145224&20145238 《信息安全系统设计基础》 第五次实验
20145224&20145238 <信息安全系统设计基础>第五次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...
- 删除Kafka的topic
刚接触Kafka,开始认为删除一个topic只是运行一下Kafka-topic.sh的delete命令就行了,但是,事实却不是这样,会出现两种情况:(1) 如果topic没有使用过即没有传输过消息,可 ...
- 安装Nvidia k80驱动步骤
安装Nvidia k80驱动步骤 ------------------ 环境介绍: CentOS6 远程终端使用Xshell -------------------- 安装Nvidia k80驱动步骤 ...
- linux进程通信之使用匿名管道进行父子进程通信
管道:是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件. 管道是单向的.先进先出的.无结构的.固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起 ...
- .net 项目 调用webservice 出错,异常信息:对操作“xxx”的回复消息正文进行反序列化时出错。解决方案。
项目运行好好的,增加并更新WebService后,出错,捕获异常信息为:对操作“xxx”的回复消息正文进行反序列化时出错.解决方案. 认真分析异常信息后,得到关键提醒: {"读取 XML 数 ...