SQL Server笔记心得(持续更新)

Posted z1427094386

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server笔记心得(持续更新)相关的知识,希望对你有一定的参考价值。

SQL Server笔记

一、数据库基础

1、数据库

就是存储数据的地方

2、数据库管理系统

管理数据库及数据的计算机软件

数据库与应用程序


3、数据库技术的发展史

  • 文件系统
    • 使用磁盘文件夹存储数据
  • 第一代数据库
    • 出现了网状模型、层次模型的数据库
  • 第二代数据库
    • 关系型数据库和结构化查询语句
  • 当前
    • 关系数据库为主流,非关系型数据库大量使用

4、常见的关系型数据库

4.1、SQL Server 2012

  • 针对不同用户群体不同版本
  • 易用性好
  • T-SQL

4.2、Oracle

  • 关系-对象“型数据库
  • 性能较高
  • PL/SQL

4.3、Mysql

  • 开源软件
  • 结构简单部署方便
  • 互联网应用多

4.4、PostgreSQL

  • 开源、多平台、关系型数据库,功能最强大的开源数据库
  • 支持事务

4.5、Sybase

  • 它是基于客户/服务器体系结构的数据库
  • 真正开放、高性能的数据库

4.6、DB2

  • IBM厂商出品
  • 支持海量数据

4.7、Access

  • 简单易用
  • 是 Microsoft Office的系统程序之

5、常见的非关系型数据库

5.1、Mongodb数据库

  • 开源、多平台、文档型mosql数据库
  • 非常主流的文档型mysql数据库,“最像关系型数据库”,定位于“灵活”的mysql据库

5.2、Redis数据库

  • 开源、Linux平台、 key-value键值型Nosql数据库
  • 简单稳定,非常主流的、全数据in- memory、定位于“快”的键值型nosql数据库

5.3、Memcaced数据库

  • 一个开源的、高性能的、具有分布式内存对象的存系统
  • 数据以key- value的方式存在

5.4、Bases数据库

  • 一个分布式的、面向列的开源数据库
  • 可用于海量数据存储、与 Hadoop生态圈结合、定位于“大”的列存储nosq数据库

6、Microsoft SQL Server 2012

  • Microsoft SQL Server2012是微软发布的新一代数据平台产品,全面支持云技术与平台,并且能够快速构相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移
  • 数据库引擎: 是用于存储、处理和保护数据的核心服务。这是本课程将详细讲解的部分。
  • Reporting Services: 是一种报表平台,可用于创建和管理各种形式的报表。
  • Analysis Services: 为商业智能应用程序提供了联机分析处理(OLAP和数据挖掘功能。
  • Notification Services: 可以生成并向大量订阅方及时发送个性化的消息,向各种各样设备传递消息。
  • Integration Services: 是一种企业数据转换和数据集成解决方案。
  • 全文搜索: 可依据单词和短语对 SQL Server表中基于纯字符的数据进行全文查询。

二、企业管理器

1、文件和文件组
文件:

在 SQL Server中ー个数据库至少包含2种文件,数据库文件和事务日志文件。组成的一个数据库至少应包含一个数据库文件和一个事物日志文件。

文件组:

文件组是将多个数据库文件集合起来形成的一个整体,每个文件组有个组名与数据库文件一样,

文件组也分为主文件组( Primary FileGroup)和次文件组( Secondary File Group)。主数据库文件必须放在主文件组中,然而次数据库文件可以放在次文件组。

2、数据库文件( Database File)

  • 扩展名为.mdf或.ndf
  • 数据库文件是存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件

采用多个数据库文件来存储数据的优点

  1. 数据库文件可以不断扩充而不受操作系统文件大小的限制。
  2. 可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据处理的效率。

3、事务日志文件( Transaction Log File)

  • 事务日志文件是用来记录数据库更新情况的文件,扩展名为ldf,当对数据库进行操作时,都会记录在此文件中
  • 注意:事务日志文件不属于任何文件组

4、分离、附加数据库

  • 通过分离数据库会将数据库在本机上分离,通过分离会形成多个文件,以便使用
  • 通过附加数据库将我们分离后的文件附加进数据库管理工具中。

5、SQL Server2012的数据类型

分类备注和说明数据类型说明
二进制数据类型存储非子符和文本的数据Image可用来存储图像
文本数据类型字符数据包括任意字母、符号或数字字符的组合Char固定长度的非 Unicode字符
文本数据类型字符数据包括任意字母、符号或数字字符的组合Var char可变长度非 Unicode字符
文本数据类型字符数据包括任意字母、符号或数字字符的组合Nchar固定长度的非 Unicode字符
文本数据类型字符数据包括任意字母、符号或数字字符的组合Nvar char固定长度的非 Unicode字符
文本数据类型字符数据包括任意字母、符号或数字字符的组合text存储长文本信息
文本数据类型字符数据包括任意字母、符号或数字字符的组合Ntext存储可变长度的长文本
日期和时间日期和时间在单引号内输Datetime日期和时间
数字数据该数据仅包含效字,包括正数、负数、以及分数Int Smal I int整数
数字数据该数据仅包含效字,包括正数、负数、以及分数Float Real数字
货币数据类型用于十进制货币值Money
Bit数据类型表示是/否的数据Bit存储布尔数据类型

char 和var char的区别

  • char 存储的是 固定长度的非 Unicode字符 char 存储的是 可变长度非 Unicode字符
  • 他俩的区别就在于一个固定长度,一个可变长度。他的固定长度指的是在数据库中它实际占用的位置

Nchar 字符是为了解决编码的问题、

  • 如果你写的大部分内容是英文的 那么推荐使用Var char、Var char 是为了解决英文字符的
  • 如果你写的大部分内容都是中文的那么推荐使用Nchar

6、数据完整性

  • 数据完整性( Data Integrity)是指数据的精确性( Accuracy)和可靠性( Reliability)
  • 它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的

数据完整性主要体现在以下三个方面:

  1. 实体完整性
    实体完整性指表中行的完整性。
  2. 域完整性
    域完整性能够保证表中的数据是合法的数据。
  3. 引用完整性(参照完整性)
    引用完整性是指某列的值必须与其他列的值匹配。

    约束方法:限制数据类型、检査约束、外键约束、默认值、非空约束

建库

--建库

CREATE  DATABASE  test
ON  PRIMARY                     
(   

  NAME='test_data',     
  FILENAME='D:\\DATA\\test_data.mdf',     
  SIZE=5MB,           
  MAXSIZE=50MB,      
  FILEGROWTH=10%     
                     
  )LOG ON
(     
NAME ='test_log',
FILENAME='D:\\DATA\\test_log.ldf',
SIZE=5MB,  
FILEGROWTH=1MB
)
GO

三、查询分析器

使用查询分析器管理库、表

1、管理数据库语言
SQL

  • 结构化查询语言( Structured Query Language)简称SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名

T-SQL

  • T-SQL即 Transact-SQL,是SQL在 Microsoft SQL Server上的增强版,它是用来让应用程序与5 QL Server沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程序设计结构(例如 if 和while)让程序设计更有弹性

2、建库、建表

2.1、创建数据库

CREATE  DATABASE   数据库名
ON  [PRIMARY]             ---可以省略---<数据文件参数>  [,...n]   [<文件参数>]    -----1.文件名称  2.路径  3.初始大小  4.增长率......[ LOG ON]
(
<日志文件参数>  [,...n]
)

2.2、创建school数据库

CREATE  DATABASE  school       --创建数据库。新建school数据库
ON  PRIMARY                     --默认就属于PRIMARY主文件组,可省略
(   
 --数据文件的具体描述--
  NAME='school_data',      --主数据文件的逻辑名
  FILENAME='D:\\DATA\\school_data.mdf',     ---主数据文件的物理名   包含了所处的路径
  SIZE=5MB,            ---主数据文件的初始大小  最小5M
  MAXSIZE=50MB,       ---主数据文件增长的最大值
  FILEGROWTH=10%     ---主数据文件的增长率  
                       ---2种方式   一种百分比  一种是我们的文件大小或字节数
  )LOG ON
(     --日志文件的具体描述,各参数含义同上---
NAME ='school_log',
FILENAME='D:\\DATA\\school_log.ldf',
SIZE=5MB,  
FILEGROWTH=1MB
)
GO

2.3、删除数据库

DROP  DATABASE 数据库名

–删除school数据库

DROP DATABASE school

2.4、创建表

CREATE  TABLE 表名
(
字段1 数据类型  属性 约束,
字段2 数据类型  属性 约束,
...

2.5、创建学生信息表(student)

USE school                ---将当前数据库设置为school
CREATE  TABLE  student   ----创建学生信息表
(
            id           int               NOT  NULL,            --学生序号,非空
            name         varchar(64)       NOT  NULL,            --学生姓名,非空
            sex          varchar(4)        NOT  NULL,            --学生性别,非空
            age          int               NOT  NULL,            --学生年龄,非空
            clazz_id     int               NOT  NULL,            --学生班级编号,非空
            stu_num      varchar(64)       NOT  NULL,            --学号,非空
) 

2.6、创建信息表(student)

USE school           --将当前数据库设置为school
CREATE TABLE clazz   ---创建班级信息表
(
      id                int                 NOT  NULL,            --班级序号,非空
      name              varchar(64)         NOT  NULL,            --班级名称,非空
      teacher_name      varchar(4)          NOT  NULL,            --班主任名字,非空
)

2.7、删除学生信息表(student)

DROP TABLE  表名

—删除学生信息表

DROP TABLE student

3、管理约束
常见约束

  1. 主键约束 (primary key constraint)
  2. 唯一约束 (unique constraint)
  3. 检查约束 (check constraint)
  4. 默认约束 (default constraint)
  5. 外键约束 (foreign key constraint)

3.1、添加约束 什么时候用 在表已经存在的时候用

ALTER TABLE   表名
ADD  CONSTRAINT  约束名  约束类型  具体的约束说明

3.2、为学生信息表添加约束

–为学生信息表添加主键 \\为班级信息表添加主键

ALTER TABLE student   \\ clazz
    ADD  CONSTRAINT  PK_id PRIMARY KEY (id)

–为学生信息表添加默认约束

ALTER  TABLE  student
    ADD  CONSTRAINT  DF_sex DEFAULT('男')FOR sex               

–为学生信息表添加检查约束

ALTER TABLE student
    ADD CONSTRAINT CK_age CHECK(age>1)

–为学生信息表添加外键约束

ALTER TABLE student
    ADD CONSTRAINT FK_clazz_id
    FOREIGN KEY(clazz_id)REFERENCES clazz(id)

–为学生信息表添加惟一键

ALTER TABLE student
    ADD CONSTRAINT UQ_stu_num UNIQUE(stu_num)

4、一种更简洁的添加约束方法 什么时候可以用 在新建表的时候可以用

clazz 表

USE school           --将当前数据库设置为school
CREATE TABLE clazz   --创建班级信息表
(
     id            int           NOT NULL, PRIMARY KEY IDENTITY(1,1),  --主键自增
     name          varchar(64)   NOT NULL ,                            --学生姓名 非空
     teacher_name  varchar(4)    NOT NULL,                             --老师     非空
  )

student表

USE school             --将当前数据库设置为 students
CREATE TABLE  student  --创建学生信息表
(
     id        int            NOT NULL    PRIMARY KEY IDENTITY(1,1),   --主键自增
     name      varchar(64)    NOT NULL ,                               --学生姓名 非空
     sex       varchar(4)     NOT NULL DEFAULT('男'),                  --默认约束
     age       int            NOT NULL CHECK(age>1),                   --检查约束
     clazz_id   int           NOT NULL REFERENCES  clazz(id),          --外键约束
     stu_num  varchar(64)     NOT NULL UNIQUE                          --唯一键
  )

5、删除约束

ALTER TABLE 表名
DROP CONSTRAINT 约束名

–删除学生信息表的默认约束

ALTER TABLE student
DROP CONSTRAINT DF_sex

四、SQL Server 数据管理

1、T-SQL的组成

DML(数据操作语言)

  • 查询、 插入、 修改和 删除数据库中的数据
  • SELECT INSERT UPDATE DELETE

- DCL(数据控制语言)

  • 用来控制存取许可、存取权限等
  • GRANT REVOKE等

DDL(数据定义语言)

  • 用来建立数据库、数据库对象和定义其列
  • CREATE TABLE、 DROP TABLE等

变量说明、流程控制、功能函数

  • 定义变量、判断、分支、循环结构等
  • 日期函数、数学函数、字符函数、系统函数等

2、T-SQL中的比较运算符

运算符含义
=等于
>大于
<小于
>=大于或等于
<=小于或等于
<>不等于
!

3、逻辑运算符

逻辑表达式说明示例
AND逻辑与1 AND 1 =1 ; 1 AND 0 =0 ; 0 AND 0 =0 ;
OR逻辑或1 OR 1 =1 ; 1 OR0 =0 ; 0 OR 0 =0 ;
NOT逻辑非NOT 1 =0 ; NOT 0=1 ;

4、基本

4.1、简单查询数据

语法

SELECT  <列名>  FROM   <表名>  [WHERE  条件表达式]     --[]   中括号  就是可有可无

例子

SELECT * FROM clazz

4.2、插入数据
语法

INSERT  [INTO] <表名> [列名]VALUES <值列表>

例子

INSERT INTO  clazz (name,teacher_name )VALUES ('软件1908','张三')

–可以省略表白名后面的列名,但需要保证 VALUES 后的各项数据的顺序和表中字段顺序一致

语法

INSERT  [INTO]   <表名>  VALUES <值列表>

例子

INSERT INTO  clazz  values  ('软件1910','王二')
INSERT INTO  clazz  values  ('软件1911','张三')

–如果指定了具有默认值或者允许为空的列名,在插入数据时就需要用到DEFAULT和NULL 关键字

例子

INSERT INTO  clazz   (name,teacher_name )  values   ('软件1912',NULL)

–插入多行数据可以使用

INSERT...SELECT...UNION

例子

INSERT INTO  clazz   (name,teacher_name )
SELECT  '软件1911','张三'UNION
SELECT  '软件1912','李四'UNION
SELECT  '软件1913','王五'

–插入数据(拷贝) ~拷贝数据到另外一张新的(不存在)表中

例子

SELECT * INTO clazz2 FROM clazz

注意:此种方法拷贝的新表只具备数据而不具备原表的约束

–拷贝数据到另一种已创建好的表中

例子

INSERT  INTO clazz2(id,name,teacher_name)
SELECT id,name,teacher_name FROM clazz

4.3、更新数据

语法

UPDATE  <表名> SET <列名=更新值>  [WHERE <更新条件>]

例子

UPDATE  clazz SET teacher_name='王飞'WHERE id=2

案例
----修改所有人的性别为’男’

UPDATE student SET sex='男'

----修改所有班级序号为1的所有同学的年龄及班级序号

UPDATE student SET age=20,clazz_id=2 WHERE clazz_id=1

----将年龄小于16的同学的年龄变为18岁

UPDATE student SET age=18 WHERE age<16

—将所有同学的年龄+1

UPDATE student SET age=age+1

4.4、删除数据

1.语法

DELETE  FROM <表名>  [WHERE   条件表达式]

例子

DELETE FROM  student WHERE id=2

2.语法

TRUNCATE TABLE <表名>         后面不能加where条件

例子

TRUNCATE TABLE student

—注意:

  • TRUNCATE 词句与没有条件表达式的DELETE 结果一样,但是执行速度更快,如果有自增列,此句执行之后自增将从1重新开始,
  • 而DELETE则是继续按照删除之前的继续增长。
  • DELETE删除之后添加数据是按照之前的序号增长 。而TRUNCATE 是从一重新开始

总结

  • T-SQL的组成
  • T-SQL语句提供条件表达式和运算符来筛选数据
  • SELECT语句查询数据表中数据
  • INSERT语句向数据表插入数据
  • 利用3种方式同时插入多行数据
  • 使用 UPDATE语句修改数据表中的数据
  • DELETE和 TRUNCATE TABLE语句删除数据表中数据

五、数据基本查询

1、选取全部字段

  • 要从一个数据库表中选取全部字段作为SELECT查询的输出字段,在SELECT子句中使用一个符号“ * ”就可以了,此时还必须用FROM字句来指定作为查询的数据源(表,视图等等)。

语法

SELECT * FROM<表名> [WHERE 条件表达式 ]

例子

SELECT * FROM clazz

2、选取部分字段

  • 要从一个数据库表中选择部分字段作为SELECT查询的输出字段,可以在SELECT字句中给出包含所选取字段的一个列表,各个字段之间用逗号分隔,字段的顺序可以根据需要任意指定

语法

SELECT <列名>  FROM <表名> [WHERE 条件表达式 ]

例子

SELECT id,name FROM clazz

3、设置字段别名(为查询结果的列设置别名)

  • 为了方便和实际需求,可以指定更容易理解的字段名来取代原来的字段名

语法

1:原字段名 AS 字段别名>
2:字段别名=原字段名
3:原名字  新名字

例子

SELECT id as 班级序号,班级名称 =name FROM clazz   

4、字段的拼接

  • 如果用户需要查看“班级名称(老师名称)”这样的格式,我们可以使用“ + ”来实现

例子

SELECT name+ ‘(‘+teacher_name+’)’FROM clazz

5. ALL 关键字的使用

  • 如果在SELECT 语句中没有使用任何关键字,则默认使用 ALL 关键字

例子

SELECT ALL * FROM clazz

6. DISTINCT 关键字的使用

  • 在字段列表前面加上选择关键字DISTINCT,就可以消除查询结果中的重要重复

例子

SELECT DISTINCT teacher_name FROM clazz

7. TOP 关键字的使用

  • 在字段列表前面加上 TOP关键字就可以查询指定条数或者百分比的数据

例子

–查询前3条的记录

SELECT TOP 3 * FROM clazz

–查询10%的记录

SELECT TOP 10 PERCENT * FROM clazz

8.对结果的筛选 WHERE 字句

  • 使用条件运算符筛选记录
>,   >=,   =,   <,   <=,    <>,

例子

–查询学生表中所有女生信息

SELECT *FROM student WHERE sex='女'

–查询学生表中除了 王某某 之外的所有学生信息

SELECT *FROM student WHERE name <> '王某某'

9、对范围的筛选 范围运算符

    BETWEEN  ... AND  --在这个范围
NOT BETWEEN  ... AND  --不在这个范围

例子

–查询学生表中序号在10-50之间的学生信息

SELECT *FORM student WHERE id BETWEEN 10 AND 50

–查询学生表中序号不在10-50之间的学生信息

SELECT *FORM student WHERE id  NOT BETWEEN 10 AND 50

10、对结果的筛选 列表运算符

  • List item
    • IN关键字可以选择与列表中的任意值匹配的行

例子
–查询学生表中序号是 1 3 5 6 7 12 33 35 45 48 88 的学生信息

SELECT * FROM student WHERE id IN (1,3,5,6,7,12,33,35,45,48,88)

11、对结果的筛选 逻辑运算符

  • NOT
    • 否定它之后所跟的任何条件

例子

–查询学生表中序号不是 1 3 5 6 7 12 33 35 45 88 的学生信息

SELECT * FROM student WHERE id  NOT IN (1,3,5,6,7,12,33,35,45,48,88)

12.对结果的筛选 逻辑运算符

  • AND
    • 多个条件的交集

例子
–查询学生表中序号是 1 3 5 6 7 12 33 35 45 88 并且性别为女的学生信息

SELECT * FORM student 
WHERE id IN (1,3,5,6,7,12,33,35,88) AND sex='女'

13.对结果的筛选 逻辑运算符

  • OR
    • 多个条件的并集

例子
–查询学生表中序号是 1 3 5 6 7 12 33 35 45 88 或者性别为女的学生信息表

SELECT * FORM student
WHERE id IN (1,3,5,6,7,12,33,35,88) OR sex='女'

14、对结果的筛选 空值判断符

  • IS NULL
    • 查询某列是空值的记录

例子

–查询学生表中学号为空的学生信息

SELECT * FORM student WHERE stu_num IS NULL

–查询班级表中教师为空的学生信息

SELECT * FORM clazz WHERE  teacher_name IS NULL
  • IS NOT NULL
    • 查询某列不是空值的记录

–查询学生表中学号不为空的学生信息

SELECT * FORM student WHERE stu_num IS  NOT NULL

–查询班级表中教师不为空的学生信息
SELECT * FORM clazz WHERE teacher_name IS NOT NULL

15、对结果的筛选 模式匹配符

  • LIKE / NOT LIKE
    • 模糊匹配
通配符含义
%包含零个或更多字符的任意字符串
___(下划线)任何单个字符
[ ]指定范围( 列如 [a-f] )或集合( 列如 [abcdef] 或[1,3,5,7] ) 内的任何 单个字符
[ ^ ]不在指定范围 (列如 [^a-f] )或集合 ( 列如 [^abcdef] ) 内的任何单个字符
  • LIKE

例子

–查询学生表中学号是‘06091908’开头的学生信息

SELECT * FROM student WHERE stu_num LIKE '06091908%' 

–查询学生表中学号包含‘1908’的学生信息

SELECT * FROM student WHERE stu_num LIKE '%1908%'

–查询学生表中1908 班学号是个位数的学生信息

SELECT * FROM student WHERE stu_num LIKE '060919080_'

–查询学生表中1908 班学号是个位数并且是奇数的学生信息

SELECT * FROM student WHERE stu_num LIKE '060919080 [1,3,5,7,9] '

–查询学生表中 1908 班学号是个位并且是偶数的学生信息

SELECT * FROM student WHERE stu_num LIKE '060919080 [^1,3,5,7,9] '
  • NOT LIKE

–查询学生表中学号不是‘06091908’开头的学生信息

SELECT * FROM student WHERE stu_num  NOT  LIKE '06091908%' 

–查询学生表中学号不包含‘1908’的学生信息

SELECT * FROM student WHERE stu_num  NOT  LIKE '%1908%'

–查询学生表中1908 班学号不是个位数的学生信息

SELECT * FROM student WHERE stu_num NOT  LIKE '060919080_'

–查询学生表中1908 班学号不是个位数并且不是奇数的学生信息

SELECT * FROM student WHERE stu_num NOT  LIKE '060919080 [1,3,5,7,9] '

–查询学生表中 1908 班学号不是个位并且不是偶数的学生信息

SELECT * FROM student WHERE stu_num  NOT  LIKE '060919080 [^1,3,5,7,9] '

16、对结果的排序

  • 当用户要对查询结果进行排序时,就需要在SELECT 语句中加ORDER BY 的字句
  • 排序的方法可以是升序或降序
    • ASC :按照递增顺序
    • DESC : 按照递减顺序
    • 默认排序方向为递增顺序
    • NULL 将被处理为最小值

例子

–按照序号倒序查询学生表中所有女同学

SELECT * FROM student WHERE sex = '女' ORDER BY id DESC  

17、对结果的排序

  • 在ORDER BY 字句中可以使用一个或多个排序要求,优先级从左到右

例子

–按照班级序号升序查询学生信息

SELECT * FROM student ORDER BY clazz_id ASC

–按照班级序号升序,名字降序查询学生信息 先满足第一个 后满足第二个

SELECT * FROM student ORDER BY clazz_id ASC ,name DESC

**18、对结果的排序 TOP **

  • 用户可通过ORDER BY 字句与 TOP 搭配使用来按照排序之后查询结果中前若干行或百分比的数据

例子

–按照班级序号升序查询学生信息表前10条

SELECT TOP 10 * FROM student ORDER BY clazz_id ASC

–按照班级序号升序查询学生信息表前10%

SELECT TOP 10 PERCENT * FROM student ORDER BY clazz_id ASC

总结

  • 查询的使用
    • 全部字段,部分字段,设置别名,字段拼接,ALL DISTINCT TOP 关键字
  • 对查询结果的筛选 WHERE 字句的使用
    • 条件运算符,范围运算符,列表运算符,空值运算符,逻辑运算符,模式匹配符
  • 对查询结果的排序 ORDER BY 字句的使用
    • ASC(升序), DESC(降序) 排序的顺序 可以一个列,也可以多个列,优先级是从左到右

六、数据高级查询

一、常用函数的使用

1.1、对查询结果计算 SUM 函数

  • SUM 函数用于统计数值型字段的总和,它只能用于数值型字段,而且NULL值将被忽略

语法

SELECT SUM (<列名>) FROM <表名> [WHERE 条件表达式]

例子

–查询 Java 考试成绩的总和

SELECT SUM ( score ) AS java 成绩总和 FROM stu_marks WHERE subject='Java'

1.2、对查询结果计算 AVG 函数

  • AVG 函数用于计算一个数值型字段的平均值,该字段中的 NULL 值在计算过程中将被忽略

语法

SELECT AVG  (<列名>) FROM <表名> [WHERE 条件表达式]

例子
–查询Java 考试成绩的平均分

SELECT AVG ( score ) AS java平均值 FROM stu_marks WHERE subject='Java'

1.3、对查询结果计算 MAX 函数

  • MAX 函数用于返回表达式中的最大值,计算过程中遇到NULL值是予以忽略

语法

SELECT MAX  (<列名>) FROM <表名> [WHERE 条件表达式]

例子
–查询Java考试成绩的最高分

SELECT MAX  ( score ) AS java 最高分 FROM stu_marks WHERE subject='Java'

–查询Java考试成绩的最高分 TOP ORDER BY DESC

SELECT TOP 1 score FROM stu_marks WHERE subject='Java' ORDER BY score DESC

1.4、对查询结果计算 MIN 函数

  • MAX 函数用于返回表达式中的最小值,计算过程中遇到NULL值是予以忽略

语法

SELECT MIN  (<列名>) FROM <表名> [WHERE 条件表达式]

例子

–查询Java考试成绩的最低分

SELECT MIN  ( score ) AS java 最低分 FROM stu_marks W

以上是关于SQL Server笔记心得(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server笔记心得(持续更新)

面试题积累 ( 持续更新 )

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

jQuery笔记心得(持续更新)