别名,选择,查询,排序,去重,筛选

select * from UserInfo as ui --起别名

select UserName,UserPwd --指定选择的列
from UserInfo as ui select UserName as name --给列起别名
from UserInfo ui select top 2 * --查询前两行
from UserInfo select top 10 percent * --查询前百分之10
from UserInfo insert into UserInfo
values('zsb1',''),('zsb2',''),('zsb1',''),('zsb2','') select * from UserInfo
order by UserName desc,UserPwd asc --指定多维排序:先按UserInfo降序排列,再按UserPwd升序排列 select UserName from UserInfo
select distinct UserName from UserInfo--输出结果里消除重复行 select * from UserInfo
where UserName='zsb1' --筛选出符合where后条件的元组 select * from UserInfo
where UserName between 'zsb1' and 'zsb2' --筛选出UserName在'zsb1'到'zsb2'之间的元组

模糊查询,连接,多重连接,聚合函数,开窗函数

use master
--drop database Class create database Class
on primary(
name='Class',
filename='D:\SQLTest\Class.mdf',
size=10mb,
filegrowth=10mb
)
log on(
name='Class_log',
filename='D:\SQLTest\Class_log.ldf',
size=5mb,
filegrowth=10%
) use Class--使用数据库
truncate table ClassInfo --创建班级信息表格
create table Classinfo(
classId int identity(1,1) primary key not null,--后面三个参数分别是 自增(start=1,step=1),主键,非空
className nvarchar(10) not null --nvarchar 使用Unicode编码,长度可变字符串
) --插入数据
insert into Classinfo(className)
values('计科1'),('计科2'),('计科3'),('计科4')
select * from Classinfo --创建学生信息表格
create table StuInfo(
stuId int identity(1,1) primary key not null,
stuName nvarchar(10) not null,
stuSexy bit default(0) not null,--默认值为0
stuBirthday date not null,
stuPhone char(11),
stuEmail varchar(20),
classId int not null,
foreign key (classId) references ClassInfo(ClassId) --classId作为外键,是从ClassInfo的ClassId引用过来的
) --添加学生信息
insert into StuInfo
values('zsben',1,'1999-1-26','','1249461124@qq.com',1),
('zsben2',1,'1999-1-26','','1249461124@qq.com',2)
select * from StuInfo
insert into StuInfo
values('zsben3',1,'1999-1-26','','1249461124@qq.com',1),
('zsben4',1,'1999-1-26','','1249461124@qq.com',2)
insert into StuInfo
values('zsben4',1,'1999-1-26','','1249461124@qq.com',1),
('zsben5',1,'1999-1-26','','1249461124@qq.com',2) --创建科目表
create table CourseInfo(
cId int identity(1,1) primary key not null,
cName nvarchar(20) not null
) --插入科目信息
insert into CourseInfo
values('数据库'),('算法设计'),('计算机网络')
select * from CourseInfo --drop table ScoreInfo --创建成绩信息表
create table ScoreInfo(
scoreId int identity(1,1) primary key not null,
score int not null,
classId int not null,
foreign key (classId) references Classinfo(ClassId),
StuId int not null,
foreign key (StuId) references StuInfo(StuId)
) select * from Classinfo
select * from StuInfo
select * from CourseInfo
select * from ScoreInfo update Classinfo set className='数媒1'
where className='计科3' delete Classinfo where className='计科4' insert into ScoreInfo
values(100,1,2) select * from StuInfo
where classId between 1 and 2 select * from StuInfo
where classId in (1,2) --in 后面包含满足要筛选的值 select * from StuInfo
where stuId between 3 and 6 and classId=1 --逻辑and关系 select * from StuInfo
where stuName like '%3%' --模糊查询,名字中包含3 select * from StuInfo
where stuName like 'z%' --模糊查询,名字以z开头的 select * from StuInfo
where stuName like 'zsben_'--模糊查询,名字以zsben开头且长度为6的所有元组 select * from StuInfo
where stuPhone like '1[1-8]%' --查询电话号第一位是1,第二位在[1,8]的元组 select * from StuInfo
where stuPhone like '1[^1-8]%'--和上面相反 select * from StuInfo
where stuEmail like '%@qq%' --查询使用qq邮箱的同学 update StuInfo set stuPhone=null
where stuId=6 --修改电话信息 select * from StuInfo
where stuPhone is not null --判断变量是不是null用这个方式 --内连接inner join:表两边完全匹配的元组进行连接
--查询学生姓名及所在班级
--先尝试打出整个元组
select * from StuInfo
inner join Classinfo on StuInfo.classId=Classinfo.classId --用别名代替简化
select * from StuInfo as si
inner join Classinfo as ci on si.classId=ci.classId --查询学生姓名及所在班级
select si.stuName,ci.className
from StuInfo as si
inner join Classinfo as ci on si.classId=ci.classId --求出计科1班的姓名与班级
select si.stuName,ci.className
from StuInfo as si
inner join Classinfo as ci on si.classId=ci.classId
where className='计科1' select * from Classinfo
select * from StuInfo
select * from CourseInfo
select * from ScoreInfo --左外连接left join:两表中完全匹配的数据+左边表匹配不上的数据
--打印出所有班级里的所有学生(不管这个班级有没有学生,没有输出null即可)
select * from Classinfo as ci
left join StuInfo as si on ci.classId=si.classId --右外连接同理
select * from Classinfo as ci
right join StuInfo as si on ci.classId=si.classId --完全连接full join 左右两边不匹配的都要选择
select * from Classinfo as ci
full join StuInfo as si on ci.classId=si.classId --连接多表
--选择分数,
--ScoreInfo连接了StuInfo和ClassInfo,通过这个来连接即可
-- StuInfo.stuid=ScoreInfo.stuid and CourseInfo.cId=ScoreInfo.cid
select si.stuName,sco.score,ci.cName
from ScoreInfo sco
inner join StuInfo as si on si.stuId=sco.StuId
inner join CourseInfo as ci on ci.cId=sco.cId --再连接上每个学生的班级
select si.stuName,sco.score,ci.cName,class.className
from ScoreInfo sco
inner join StuInfo as si on si.stuId=sco.StuId
inner join CourseInfo as ci on ci.cId=sco.cId
inner join Classinfo as class on si.classId=class.classId --聚合函数
select COUNT(*) from StuInfo --COUNT()函数计数有多少元组 select COUNT(*) as cnt1 from StuInfo --给函数值起个别名
where classId=1 --只计数那些班级为1的元组 select COUNT(stuPhone) from StuInfo --只计数值不为null的元组 select * from ScoreInfo
select MAX(score) from ScoreInfo --科目一最高分
where scoreId=1 select Min(score) from ScoreInfo --2号同学最低分
where StuId=2 --求'数据库'的平均分
select AVG(si.score) from CourseInfo as ci
inner join ScoreInfo as si on si.cId=ci.cId --先连接起来
where ci.cName='数据库' --筛选出'数据库'元组 --开窗函数over():将统计信息分布到行中
select *,avg(score) over() --注意:聚合函数avg()把所有元组的score聚合成一行,over()这一行再分到每个元组里去
from ScoreInfo

sql server 基础语法2的更多相关文章

  1. Sql Server 基础语法

    来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select  ...

  2. [SQL] SQL SERVER基础语法

    Struct Query Language 1.3NF a.原子性 b.不能数据冗余 c.引用其他表的主键 2.约束 a.非空约束 b.主键约束 c.唯一约束 d.默认约束 e.检查约束 f.外键约束 ...

  3. sql server 基础语法4 实践练习+子查询

    drop table class create table class ( classId ) primary key not null, cName ) ) insert into class ', ...

  4. SQL Server基础知识

    1.SQL Server表名为什么要加方括号? 这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加. 比如,一个表名叫 ...

  5. SQL server存储过程语法及实例(转)

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

  6. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  7. 数据库开发基础-SQl Server 基础

    SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language  结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...

  8. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  9. Sql Server 基础知识

    Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...

随机推荐

  1. 企业资源计划(ERP)

    ERP(企业资源计划)一般指企业资源计划(ERP) 物资资源管理(物流).人力资源管理(人流).财务资源管理(财流).信息资源管理(信息流) 信息技术在企业管理学上的应用可分做如下发展阶段:A. MI ...

  2. BZOJ 1018: [SHOI2008]堵塞的交通traffic(线段树分治+并查集)

    传送门 解题思路 可以离线,然后确定每个边的出现时间,算这个排序即可.然后就可以线段树分治了,连通性用并查集维护,因为要撤销,所以要按秩合并,时间复杂度\(O(nlog^2 n)\) 代码 #incl ...

  3. 集训队8月9日(组合计数+容斥原理+Mobius函数)

    刷题数:4 今天看了组合计数+容斥原理+Mobius函数,算法竞赛进阶指南169~179页 组合计数 https://www.cnblogs.com/2462478392Lee/p/11328938. ...

  4. 信息安全-OAuth2.0:NuGetFromMicrosoft

    ylbtech-信息安全-OAuth2.0:NuGetFromMicrosoft 1.返回顶部 1. https://login.microsoftonline.com/common/oauth2/v ...

  5. jmeter添加自定义扩展函数之MD5加密

    1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这 ...

  6. nginx的安装和负载均衡例子(RHEL/CentOS7.4)

    首先安装RHEL/CentOS7.4 mini ,然后关闭防火墙和 selinux ,更新系统(参看配置linux使用本地yum安装源和Redhat7/CentOS7 关闭防火墙和 selinux两个 ...

  7. 【一起学源码-微服务】Nexflix Eureka 源码三:EurekaServer启动之EurekaServer上下文EurekaClient创建

    前言 上篇文章已经介绍了 Eureka Server 环境和上下文初始化的一些代码,其中重点讲解了environment初始化使用的单例模式,以及EurekaServerConfigure基于接口对外 ...

  8. UVA12589_Learning Vector

    大致题意: 有n个向量要你选k个,把这k个向量连起来,画出来的与x轴围成的面积最大 思路: 这个是斜率dp,让斜率大的排在前面,记忆化搜索的时候要加入一个当前高的信息,因为这个向量形成面积不仅和斜率有 ...

  9. 【mySQL】left join、right join和join的区别

    哈,好久没更新文章了,今天来说说关于mySQL那些年的小事.说到mySQL啊,用了挺久的了,但是有个问题一直在困扰着我,就是left join.join.right join和inner join等等 ...

  10. 厉害了,Java EE 再次更名为 Jakarta EE

    来自:开源中国 https://www.oschina.net/news/108108/java-ee-rename-as-jakarta-ee Eclipse基金会最近对 Java EE 标准的每个 ...