SQL Server基础操作(此随笔仅作为本人学习进度记录三)

                                              统计函数
select * from 教师资料 where 教师薪资>(select AVG(教师薪资) from 教师资料) \\从教师资料表中查出所有高于平均薪资的人员。

use LtsDatabase

alter table 网站职员表 \\修改此表

add 奖金 money         \\增加奖金字段

                更新奖金字段
use LtsDatabase
update 网站职员表 set 奖金=500 \\更新网站职员表所有奖金更新至500元

                计算每个员工的总收入是多少
use LtsDatabase
select 职员编号,姓名,工资+奖金 as 总收入 from 网站职员表 \\计算出所有职员的基本工资+总工资

                 like运算符(模糊查询)
use LtsDatabase
select * from 网站职员表 where 毕业院校 like ‘%河%‘ \\从网站职员表中查询,条件为毕业院校中带河的关键字

                           (汇总分组查询) 

select * from 网站职员表 order by 年龄 compute max(工资),min(工资),sum(工资),avg(工资) by 年龄     \\通过年龄进行分组,然后再算出分完组每组工资的的最高值、最低值、总和、平均值。
                   (排序,自增或自减) (计算,进行汇总)                             (通过by进行分组)
                      (默认为自增)                  

select 毕业院校,MAX(工资) as 最高工资,MIN(工资) as 最低工资,AVG(工资) as 平均工资,SUM(工资) as 工资总额,SUM(工资+奖金) as 收入总额 FROM 网站职员表 group by 毕业院校
                                                                                                                                                   \\通过毕业院校进行分组
\\按毕业院校进行分组,然后根据分完组的院校里进行最高工资,最低工资,平均工资,工资总额的计算和比较。这个语句主要部分还是毕业院校,
  所有执行的语句是围绕毕业院校的。

select 毕业院校,MAX(工资) as 最高工资,MIN(工资) as 最低工资,AVG(工资) as 平均工资,SUM(工资) as 工资总额,SUM(工资+奖金) as 收入总额 FROM 网站职员表 group by 毕业院校 having SUM(工资)>5000

\\按毕业院校进行分组,然后根据分完组的院校里进行最高工资,最低工资,平均工资,工资总额的计算和比较。并只显示工资大于5000元的分组。

group by 我们可以从字面上理解,group表示分组,by后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,group by比较类似Excel里面的透视表。
group by必须配合聚合函数来用,分组之后可以计数(COUNT),求和(SUM),求平均数(AVG)等。
常用的聚合函数 count()计数,sum()求和,avg()平均数,()max最大值,()min最小值。

                                                带分组的嵌套查询

select * from 网站职员表 where 毕业院校 in(select 毕业院校 from 网站职员表 group by 毕业院校 having SUM(工资)>5000)
                     !!!where后面的主语是毕业院校,所以查询的事毕业院校必须在一个范围之内,这个范围就是in括号里面的条件
\\首先进行子句的查询,从网站职员表中查询所有的毕业院校,对毕业院校进行分组,并且计算查询出相同毕业院校中的工资总和大于五千元。

!!!select * from(此处带*星号,是查询此表中的所有字段,不带*星号是查询指定的字段)
!!!嵌套查询中,一般先查询子句,再查询主句,但相关子句查询例外。

                                             谓词和量词的查询

\\exists 与 in的区别,in的特性是前面的指定字段必须在后面的集合中出现,

exists\\存在   not exists\\不存在
\\EXISTS表示存在量词:带有EXISTS的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”

\\谓词
select * from 网站职员表 where exists (select * from 网站职员表 where 毕业院校=‘哈工大‘)
                               \\存在
\\查询网站职员表,条件是在网站职员表中查找出存在毕业院校等于哈工大等于哈工大的,若存在,则查询出来整个网站职员表,
exists在此句中的作用就是通过(select * from 网站职员表 where 毕业院校=‘哈工大‘)此子句的返回值是否为"True"来决定是否执行前面的语句。                             

                                              any量词

select * from 网站职员表 where 工资>any(select 工资 from 网站职员表 where 姓名=‘小伟‘)\\在网站职员表中查询出所有工资大于小伟的员工

\\从网站职员表中查询出大于括号里面任意一个值,也就是说假如网站职员表中哪怕只有一个小伟,就查询出所有大于小伟工资的值,假如有两个小伟,那就查询出大于任意一个“小伟”工资的值。

select * from 网站职员表 where 工资>all(select 工资 from 网站职员表 where 毕业院校=‘哈工大‘)                                             

\\从网站职员表中查询出>大于  所有毕业院校为哈工大员工工资的员工。

                                             利用top查询出前n条记录

select top 3 * from 网站职员表 \\查询出网站职员表中前3条记录

select top 10 percent * from 网站职员表 \\查询出网站职员表中前百分之十10%条记录

    将查询的结果保存,如何把查询的数据保存成一个新的(虚拟)表,如果这个表不存在,我们可以创建它。

select * into 第二网站职员表 from 网站职员表 where 工资>2800 \\从网站职员表中查询出工资大于2800的员工,并把查询到的结果存储到第二网站职员表,。
       (存储到)             如果不存在第二网站职员表,创建该表,并将查询到的数据存储到该表中。

select top 10 percent * into 第二网站职员表 from 网站职员表 where 工资>2800 \\从网站职员表中查询出前10%的记录,并把这些记录存储到第二网站职员表中,
  若不存在第二网站职员表,创建该表,并将查询到的数据存储到该表中。  

                                                集合并和集合交进行运算

update 第二网站职员表 set 姓名=‘第二网站职员表‘+姓名 \\ 把第二网站职员表里的原有名字更新设置为“第二网站职员表+姓名”的格式
        \\字符串命名表达式,这里的+加号是字符串连接符

                                               集合并运算

select * from 网站职员表 union select * from 第二网站职员表\\分别查询出两个表中的记录并把他们合并在一起。
                     (联合,合并)          !!!此表为虚拟表,并不会重新创建个新表。

                                              集合交运算
                      (叠加求交,交运算)
select * from 网站职员表 interset select * from 第二网站职员表\\分别查询出两个表中的记录并让他们分别显示出两个表。
                                       !!!虚拟表

                                              连接查询

select * from 网站职员表,网站经营项目表
\\此命令的运算过程为将网站经营项目表中每3条记录与网站职员表中的11条记录中的每一条记录进行组合,组合成一条新记录,
并把这新组合出来的33记录组成新的‘虚拟表’。
 
!!!虚拟表就是把查询并运算出来的新记录,显示出的表,并不会保存起来,所有查询出来的记录都是虚拟表。

select * from 网站职员表,网站经营项目表 where 网站职员表.姓名=网站经营项目.负责人  \\从网站职员表和网站经营项目表中查找出条件是 网站职员表.姓名=网站经营项目.负责人的数据,
                                                          并组合成一个新表。
\\网站职员表和网站经营项目后面的点.是英文状态下的,键入此点可自动提示该表的相关字段。

原文地址:https://www.cnblogs.com/LNCC-ZhangXiang/p/10849268.html

时间: 2024-10-03 21:53:31

SQL Server基础操作(此随笔仅作为本人学习进度记录三)的相关文章

SQL Server基础操作(此随笔仅作为本人学习进度记录六 !--程序块和循环)

declare @test_Var int \\声明变量用declare,声明局部变量用@符号,变量的数据类型为整型int. (声明) set @test_Var=1000 \\为此变量赋值,赋值为1000. select @test_Var \\用select 语句进行显示此变量的值. 变量的声明以及赋值显示 局部变量:就是用户自定义的变量,作用范围仅在程序内部,在程序执行过程中暂存的变量的值,也可以存储从表或视图中查询出来的结果.局部变量在命名过程中必须以@开头 全局变量: 声明变量:声明变

SQL Server基础操作(此随笔仅作为本人学习进度记录五 !--数据类型)

二进制数据类型 binary varbinary Uniqueidentifier binarry(n):n用来表示数据的长度,长度为 1—8000,最低长度为1. varbinary:varbinary(n)!--具有可变动的长度类,型用来存储二进制数据的,.也是用来代表数据的长度,在输入数据的时候,必须在数据的前面加上Ox,作为数据的二进制标识若数据的长度过长, 那么系统会自动截去过长的部分若输入的数据的位数为奇数,则系统会在起始符号Ox后面加个0. Uniqueidentifier:也是二

SQL Server基础操作(此随笔仅作为本人学习进度记录九!--游标)

游标就是存储结果集,将从指定表中查询出符合条件的记录,组成了结果集,然后把它存到游标当中,如果要显示游标中的哪一条记录 游标(游动的标识) !!!!非常重要的知识点,比较难理解 !!!游标提供了对表中的数据检索的一种方式,一种灵活操作手段,只是检索表中数据的一种方式. 在操作的时候也可以把游标看做是一个数据库对象.就好像视图一样. 它也是依赖于T-sql语句来进行查询,把查询出来符合条件的记录,不是一下全部显示出来,可以一条记录一条记录的把它显示出来. 它每次只提取一条记录,每次只显示一条记录.

SQL Server基础操作(此随笔仅作为本人学习进度记录)

create database LtsDatabase \\创建数据库 on ( name=LtsDatabase_data,\\数据库名称 filename='d:\temp\LtsDatabase_data.mbf',\\文件所在位置,扩展名.mdf size=6, \\数据库文件初始化大小 maxsize=12, \\数据库文件最大值可以为多大 filegrowth=10% \\数据库超过现有的尺寸后,数据库增长率 ) log on \\对事物日志的描述 ( name=LtsDatabas

SQL Server基础操作(此随笔仅作为本人学习进度记录七 !--存储过程)

存储过程 存储过程分为系统存储过程和自定义存储过程 存储过程通过将处理数据的程序从客户端应用程序移动到服务器,存储过程是放在服务器上的,通过客户端下达指令调用存储过程的时候, 这个过程是在服务器上发生的,自然就不会占用网络的带宽就会降低网络流量.存储过程就是一组为了完成特定功能的T-SQL语句.就是一组语句随时随地拿出来调用. 经过编译后,它存储在SQLserver服务器端的数据库中,换句话说这个T-SQL语句不是普通的T-SQL语句,是经过编译的,存储在服务器中,它是有名称的,根据名称调用存储

SQL Server基础操作(此随笔仅作为本人学习进度记录十 !--触发器)

触发器(同游标一样比较难理解,特殊的存储过程) 触发器是一种存储过程,只不过是一种特殊类型的存储过程,它的特殊性就在于根据某种特殊的情况下触发的, 存储过程的执行需要手动调用,而触发器作为一个存储过程它的执行,不是我们调用的,而是我们进行某些操作之后来触发它的, 它的原理相似于其它语言的事件句柄, 可以调用存储过程 它的主要作用就是用于实现由主键或外部键所不能保证的,复杂的参照完整性或数据一致性. 触发器还有以下几个功能: 1.可响应数据库的更新,触发器的操作可以通过调用一个或多个存储过程甚至可

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

SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database 数据库名称 查询:select name from master..sysdatabases 修改:alter database 数据库名称(在 sql server 中修改与数据库关联的文件和文件组.在数据库中添加或删除文件和文件组.更改数据库或其文件和文件组的属性) (3).管理表 选择数据库:use 数

SQL Server基础

一.常用命令 1.使用命令行开启SQL Server服务 获取管理员权限的命令行工具: net start mssqlserver 开启sql server服务 net restart mssqlserver 重新启动sql server服务 net stop mssqlserver 关闭sql server服务 2.使用命令登陆(该方法可适用于在一台没有SQL Server的电脑去操作一台有SQL Server的电脑) 运行: sqpl ?/ [-S 服务器的名称]  [-U 登陆名] [-P

SQL Server基础知识

查看sql server版本 select @@VERSION 基本操作 use tty; 使用tty数据库 create table tt(name varchar(10)); 新建表tt insert into tt values('ftp'); 插入数据ftp select * from tt; 查看表tt delete from tt; 删除表表tt中的一条记录 运行命令的快捷方式: Alt+x 重启数据库服务 net restart mssqlserver 修改用户密码 企业管理器——