【SQL server】SQL server基础(一)
一、关系型数据库
关系型数据库的基本元素是二维表,这些二维表可以被独立或者通过join语句连接起来使用。主键和外键是用来连接二维表之间的主要工具
1.主键(primary key)和外键(foreign key)
主键是来唯一的标识一行数据,而且主键列必须包含唯一值,且不能包含空值(null)
主键可以建立在每张二维表的单列或多列上
一张二维表的外键可以引用某张二维表对应的主键
2.数据库中的关系表
二、SQL语句
1.sql的基本语句
SELECT <table fields list>
FROM <table names list>
WHERE <row constraints specification>
GROUP BY <grouping specification>
HAVING <grouping selection specification>
ORDER BY <order rules specification>
*SELECT...FROM..语句是必须的,从某个表选择某列
WHERE 对行进行限制,例如筛选ID>9,则小于等于9的行就被过滤
GROUPBY 集合运算时添加的一些定义,例如计算age平均值
HAVING 针对集合运算进行限制条件,例如average age>30
ORDERBY 排列,例如有ID,name,age等列,想按照ID排列则可以 ORDERBY ID
2.SELECT....FROM关键字
1)SELECT....FROM
select * from [Production].[Product] --*表示所有 select ProductID, Name, ProductNumber, Color, Size, ListPrice --从表中显示指定列
from Production.Product select ProductID, Name, ProductNumber, Color, Size, ListPrice
from Production.Product
order by listprice desc --desc=descending order ; asc=ascending order --按照listprice的降序显示 select ProductID, Name, ProductNumber, Color, Size, ListPrice
from Production.Product
order by listprice desc,Name --按照listprice的降序,Name的升序显示(没有写des或asc默认以升序排列) select ProductID, Name, ProductNumber, Color, Size, ListPrice
from Production.Product
order by 2 --2表示Name,按照Name的升序排列,3表示ProductNumber
2)isnull函数,判断是否为空
select ProductID, Name, ProductNumber, isnull(Color,''), isnull(Size,''), ListPrice --将color,size中的空值null替换为‘ ’,列名也为空
from Production.Product select ProductID, Name, ProductNumber,
isnull(Color,'') as Color, isnull(Size,'') as Size123, --using an alias --as..修改列名
ListPrice
from Production.Product
执行该语句后:
3)"+"关键字:将列与字符串连接
select ProductID, Name as ProductName, --using an alias
'The ProductNumber ' + ProductNumber + '.'as ProductNumber , --using the concatenation to join character end-to-end.
'The list price for ' + ProductNumber + ' is $ ' + convert(varchar,ListPrice) +'.' as [Description] --convert函数转换类型
from [Production].[Product]
执行后:
4)算数表达式
select BusinessEntityID
,rate*40*52 as AnnualSalary --Annual salary的值为rate*40*52
,round(rate*40*52,1) as AnnualSalary --rate*40*52,结果保留一位小数
,round(rate*40*52,0) as AnnualSalary --rate*40*52,结果保留两位小数
from [HumanResources].[EmployeePayHistory]
3.WHERE..关键字
WHERE 子句中的运算符
1)or 或and
select SalesOrderID,OrderDate,SalesPersonID,TotalDue as TotalSales
from [Sales].[SalesOrderHeader]
where SalesPersonID=275 and TotalDue>5000 and Orderdate between '2005-08-01' and '1/1/2006' --比较符=,>,<,>=,<=,<>,and且,or或orderdate在2005-08-1到2006-01-01之间 select SalesOrderID,OrderDate,SalesPersonID,TotalDue as TotalSales
from [Sales].[SalesOrderHeader]
where SalesPersonID=275 and TotalDue>5000 and Orderdate >= '2005-08-01' and Orderdate < '1/1/2006' --orderdate大于等于2005-08-01且小于等于2006-01-01
select SalesOrderID,OrderDate,SalesPersonID,TotalDue as TotalSales
from [Sales].[SalesOrderHeader]
where (SalesPersonID=275 or SalesPersonID=278) and TotalDue>5000 --ID=275或278中 Due>5000的结果
2)like“%”或“_”通配符
select * from [Production].[Product]
where name like'Mountain' --name ='Mountain' select * from [Production].[Product]
where name like'%Mountain%' --Wildcard % matches any zero or more characters --筛选出name中含有Mountain的结果,例如...Mountain...,Mountain...,...Mountain select * from [Production].[Product]
where name like'mountain%' -- "_" matches any single character --筛选出name中以Mountain开头的结果,例如Mountain.... select * from [Production].[Product]
where name like'_ountain%' --‘_’表示任意字符,如countains
3)in 和not in
select * from [Production].[Product]
where color in ('red','white','black') --即color='red' or color='white' or color='black' select * from [Production].[Product]
where class not in ('H') -- same as using: <> 'H' --即clas <>'H',有些地方不等于可以用!=
4)is null 和is not null
3.聚合函数
1)常用函数
select count(SalesPersonID) --计算数量
from [Sales].[SalesOrderHeader]
where SalesPersonID is not null select distinct(SalesPersonID) --列出不同的值,如有1,1,1,2,2,3,4,则结果为1,2,3,4
from [Sales].[SalesOrderHeader]
where SalesPersonID is not null select count(distinct(SalesPersonID)) --计算不同值的数量
from [Sales].[SalesOrderHeader]
where SalesPersonID is not null
2)集合运算
select
Avg(TotalDue) as AverageTotalSales --取平均值
,Min(TotalDue) as MinimumTotalSales --取最大值
,Max(TotalDue) as MaximumTotalSales --取最小值
,Sum(TotalDue) as SummaryTotalSales --取总和
from [Sales].[SalesOrderHeader]
*注,如果select中同时包含集合函数和非集合函数,则非集合函数要放到group by中
select SalesPersonID,Max(TotalDue) as MaximumTotalSales
from [Sales].[SalesOrderHeader]
where SalesPersonID is not null
group by SalesPersonID --取每个salespersonID对应的最大值
order by SalesPersonID
3)经典的T-SQL语句
select SalesPersonID,OrderDate,Max(TotalDue) as MaximumTotalSales --结果显示的列
from [Sales].[SalesOrderHeader]
where SalesPersonID is not null and OrderDate >='2007/1/1' --限制条件为ID不为空,orderdate大于等于2007-01-01
group by SalesPersonID,OrderDate
having Max(TotalDue)>150000 --筛选出total due大于1500000的对应信息
order by OrderDate desc --以order date降序排列
【SQL server】SQL server基础(一)的更多相关文章
- .NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1)
原文:.NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1) 一.SQL Server 为什么要与CLR集成 1. SQL Server 提供的存储过程.函数 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- 13Microsoft SQL Server SQL 高级事务,锁,游标,分区
Microsoft SQL Server SQL高级事务,锁,游标,分区 通过采用事务和锁机制,解决了数据库系统的并发性问题. 9.1数据库事务 (1)BEGIN TRANSACTION语句定义事务的 ...
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...
- SQL Server SQL分页查询
SQL Server SQL分页查询的几种方式 目录 0. 序言 1. TOP…NOT IN… 2. ROW_NUMBER() 3. OFFSET…FETCH 4. 执行 ...
- Qt调用Server SQL中的存储过程
Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddr ...
- 对SQL Server SQL语句进行优化的10个原则
1.使用索引来更快地遍历表. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存放在数据页上.合理的索引设计要建立在对各种查询的分析和预测上.一般来说:①.有大 ...
- MySQL连接数据库报时区错误:java.sql.SQLException: The server time zone value
连接MySQL数据库时报以下时区错误信息: java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized ...
- 连接mysql数据库报错java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized...解决方法
今天连接mysql数据库报错如下: java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or r ...
随机推荐
- CentOS7下搭建zabbix监控(一)——Zabbix监控端配置
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位 ...
- SpringCloud学习成长之路三 服务消费者(Feign)
一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解. 它具有可插拔的注解特性,可使用Feign 注解和JAX-RS ...
- python中 将数字转化为人民币的形式
def fn(args): """ 将金额转化为人民币模式,带逗号分隔,保留小数点两位,四舍五入 :param args: :return: ""&q ...
- WPF窗体应用程序开发
1.Window:登录窗口.主窗体.消息框 2.UserControl:业务界面.消息框(如果使用UC来实现,则需要做特殊的处理,比如中断功能如何处理?)(显示一个UC,必须将其添加到容器中,所以&l ...
- C#关于DateTime得到的当前时间的格式和用法
DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.T ...
- [CareerCup] Guards in a museum 博物馆的警卫
A museum was represented by a square matrix that was filled with O, G, and W where O represented ope ...
- vue告警信息:{ parser: "babylon" } is deprecated.
告警信息: 13% building modules 28/40 modules 12 active ...dex=0!\src\App.vue{ parser: "babylon" ...
- pytest使用总结笔记
简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.并且pytest兼容unittest的用例,支 ...
- sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
本数据源来自 https://www.kafan.cn/edu/922556.html 目的为了备忘 把原来的sql server 2005直接装成了2012,然后在建立链接服务器链接一台sql s ...
- 学习Elasticsearch原理笔记
Elasticsearch是一个分布式可拓展的实时搜索和分析引擎 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索 实时分析的分布式搜索引擎 可以拓展到上百台服务器,处理PB级别的结构化或 ...