SQL升级操作-各种

目录

别名

嵌套查询

多表连接(join)

SQL函数


别名

SELECT column_name AS alias_name FROM table_name; 列名别名

SELECT column_name FROM table_name AS alias_name; 表名别名

嵌套查询

  • 嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。内层查询也称子查询,从查询。
查询存在于A表而不存在于B表的id。嵌套查询
select a.id from tbl_score a where a.id not in(select b.id from tbl_class b);
 这里not in 可以替换成其他查询的条件

查询成绩都大于80分的学生,先查询小于80的,并用distinct去除重复,然后选择不在这列中的,即为都大于80
select distinct name from tbl_score a where name not in(select distinct name from tbl_score where score <=80);

列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序
select count(*), a.deptid from emp a,(select deptd,avg(salary) from emp group by deptid ) b where a.deptid=b.deptid and a.salary>b.avgsal group by deptid order by a.deptid;

列出各个班级中分数高于本班级的平均工资的学生数和班级,并按班级排序
select count(*), a.class from tbl_score a, (select class, avg(score1) avgscore from tbl_score group by class) b where a.class = b.class and a.score1 > b.avgscore group by a.class order by a.class

多表连接(join)

  • join: 一般有约束关系
select * from tbl_1 as b1 inner join tbl_2 as b2 on b1.id = b2.id; 内连接,指定b1与b2的相关联(一般都有内外键约束关系),只返回两表都满足条件的记录。

select * from tbl_1 as b1 left join tbl_2 as b2 on b1.id = b2.id; 左连接,约束关系相同,但是即使右表中没有匹配,也从左表返回所有满足条件的行。

select * from tbl_1 as b1 left join tbl_2 as b2 on b1.id = b2.id; 右连接,约束关系相同,但是即使左表中没有匹配,也从右表返回所有满足条件的行。

SQL函数

  • avg(column):求列均值, 可以加条件
select avg(score1) as avg_score from tbl_score
  • count(column):计数,可以加条件
-- 查询所有记录的条数
select count(*) from tbl_score;

-- 查询tbl_score 表中 class列中不为空的记录的条数
select count(class) from tbl_score;

-- 查询tbl_score表中 class列中不重复的记录条数
select count(distinct class) from tbl_score;

-- 查询tbl_score表中 当class='2班'时,score1列中不重复的记录条数。(可以加条件)
select count(score1) from tbl_score where class='2班'
  • first|last(column):返回指定的列中第一个记录的值,mysql 为limit 1 通常和order by column asc|desc 联合使用。
mysql 语法,选取成绩最高的那条记录。
select * from tbl_score order by score1 desc limit 1;
  • max(column):返回指定列的最大值。min(column):返回指定列的最小值
select max(score1) from tbl_score;
  • sum(column):返回数值列的数值总和。
select sum(score1) from tbl_score
  • group by :用于结合聚合函数,根据一个或多个列对结果进行分组(一组=一条记录,将这组内的某列结果聚合到一起)。
根据班级算总分并分组(相同班级为一组,计算总分),取总分数最高的哪一个班级记录(对总分desc排序)
select class, sum(score1) as sum_score from tbl_score group by class order by sum_score desc limit 1

group by 语句的多表连接,思路是先多表连接,然后在进行group by 分组
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
  • having: 解决where 无法对聚合函数有判断作用(语法错误)
select class, sum(score1) as sum_score from tbl_score group by class having sum_score > '98'

筛选出xh学号记录大于2的学号 去除不满足记录数的学号
select xh, count(class) as num from tbl_score group by xh having num>2

 

今天将由于需要就将我的SQL 2008升级SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的服务器上备份的,该版本与此服务器(运行版本10.00.1600)不兼容。请在支持该备份的服务器上还原数据库,或者使用与此服务器兼容的备份。” 经过一番查证得知: 所谓的10.00.1600其实就是SQL 2008 10.50.1600其实就是SQL 2008 R2 10.50.2500其实就是SQL 2008 R2 SP1 这样一来基本就明了了。 我得升级自己的数据库到SQL 2008 R2 SP1。 这篇文章就把我先升级SQL 2008 R2的过程详细记录下来,下一篇文章会介绍升级R2到R2 SP1. 第一步:准备安装程序。 首先SQL 2008是安装好的 因此只需要下载SQL 2008 R2安装程序,下载地址如下:http://care.dlservice.microsoft.com/dl/download/1/E/6/1E626796-588A-495C-917B-321093FB98EB/2052/SQLFULL_x86_CHS.exe?lcid=2052&ptype=pcare 第二步:升级开始。SHOW TIME!!! 1、如果是从SQL2008升级SQL2008R2那么只能选择左侧“安装”对应右侧“从SQL SERVER 2000,SQL 2005或SQL 2008升级”这个选项来升级。 大家也注意到有一个“维护”但是这个选项是“从SQL 2008其他例如EXPRESS版本升级” 在此,要区分清楚。 2、安装程序支持规则检查。通过之后就继续下一步。 3、输入产品密钥,这个地方,你的密钥是什么版本的,装完之后你的数据库就是什么版本:像企业版,开发版等等等。 4、许可条款必须接受,不然人家不让用啊~~~ 5、安装程序支持文件。 6、程序支持规则安装完成后程序会自动检测安装的文件是否满足需求。 7、当你的服务器中只有一个实例的时候,你很难听到实例这个词,人们都直接叫他“数据库”了。只有在服务器上安装的实例数目超过两个的时候你才会听到“实例”二字比较多。 但是“实例”肯定是学习数据库过程中必须熟知的东东!!! 此处,选择你想要升级的实例。下一步就行了。 8、以前安装过的组件(component)都会出现在这里,不用管,以前有的,现在当然也要有,闭着眼睛点击“下一步”吧! 9、因为是升级安装,所以你以前的实例名字是什么,这里还是什么。继续“下一步”。 10、不废话,“下一步”。 11、是否发送错误报告,随便,下一步。 12、“下一步”。 13、点击“升级”按钮进行升级,中途等待大约20-30分钟就完成了。 升级过程中如图: 14、安装成功要求重新启动。重启吧没的说!! 15、重启完毕,启动SSMS(SQL SERVER MANAGEMENT STUDIO)在登陆界面上就会立马察觉到不同,SQL 2008变成了SQL 2008 R2. 16、连接上数据库引擎,在左侧导航栏就可以看到你数据库的版本了。这次变成了10.50.1600。如果还要升级到10.50.2500。那就继续安装一个升级补丁吧! 至此,10.00.1600升级10.50.1600已经成功完成。 总结一下: 10.00.1600就是SQL SERVER 2008 10.50.1600就是SQL SERVER 2008 R2 这篇博文里讲的是升级安装,如果你要进行全新安装,请按照如下操作: 一、卸载SQL SERVER 2008,一定要卸载,数据库不像其他常用的应用程序(那些程序会自动检测是否有旧版本,然后给你卸载并升级)。 另:对SQL来说,如果你安装好之后,再进行一次安装的话,实际上安装的是另外一个实例。 二、卸载完之后就安装就行了。执行的是安装---全新安装。 其他细节参考我的博文:SQL SERVER 2008安装(在实例、权限等方面,SQL 2008和SQL 2008 R2是一样的)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值