所谓查询,就是对已经存在于数据库中的数据按特点的组合、条件或次序进行检索。查询功能是数据库最基本也是最重要的功能。 注意:此时*代表所有的属性 如果用户希望在查询返回结果中删除重复行,就可以在SELECT子句中使用DISTINCT关键字,也是一种聚合函数。 DISTINCT去除重复只能针对某一列。 TOP语句用于规定要返回的记录的数目的语法 可使用别名的方法根据需要对数据显示的标题进行修改 在进行数据查询时,经常需要对查询到的数据进行再次计算。 一般查询都不是针对全表所有行的查询,只是从整个表中选出满足制定条件的内容,这就要用到WHERE子句。 其中,search_conditions为选择查询结果的条件。SQL Server支持比较、逻辑、范围、列表、字符串匹配选择方法。 比较运算符包括: >(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、!=(不等于)、!>(不大于)、!<(不小于),其中!=、!>、!<不是ANSI标准的运算符 范围搜索返回介于两个指定值之间的所有值,可分为包括范围和排他范围两个类型。用BETWEEN和NOTBETWEEN IN关键字使用户可以选择与列表中的任意值匹配的行 like关键字搜索与制定模式匹配的字符串、日期或时间值。模式包含要搜索的字符串,字符串中可包含4中通配符的任意组合。 聚合函数对一组值执行计算,并返回单个值。 1、求总和,总分等:sum() –必须为数字列 2、求某一列平均数 :avg() 3、最高分 4、最低分 5、求个数/记录数/项目数等:count() GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 having通常与group by子句一起使用。相当一个用于组的where子句,制定组的搜索条件。having子句可以包含聚合函数,但where不可以。 使用UPDATE语句修改表中数据的语法形式为:
5.1 查询数据
5.1.1 SELECT语句
SELECT select_list [INTO new_table_name] FROM table_list [WHERE search_conditions] [GROUP BY group_by_list] [HAVING search_conditions] [ORDER By order_list[ASC|DESC]]
--example 从学生表里面查看部分学生信息 SELECT 学号,姓名,籍贯 FROM 学生信息 从学生表里面查看全部学生信息 SELECT * FROM 学生信息
5.1.1.1 DISTINCT关键字
SELECT DISTINCT select_list FROM table_name
--example 从学生表里面查看学生都来自什么地方 SELECT DISTINCT 籍贯 FROM 学生信息
5.1.1.2 TOP关键字
SELECT TOP n [PERCENT] * FROM table_name
--example 从学生表里面查询前100名不重复的学生姓名。 SELECT DISTINCT TOP 100 姓名 FROM 学生信息
5.1.1.3 别名
1. SELECT select_list 'new_name',··· FROM table_name 2. SELECT 'new_name'=select_list,··· FROM table_name 3. SELECT select_list as 'new_name',··· FROM table_name
--example 使用'NO'替换学号,'Name'替换姓名.'Sex'替换性别. 1. SELECT 学号 'NO',姓名 'Name',性别 'Sex' FROM 学生信息 2. SELECT 'NO'=学号,'Name'=姓名,'Sex'=性别 FROM 学生信息 3. SELECT 学号 as 'NO',姓名 as 'Name',性别 as 'Sex' FROM 学生信息
5.1.1.4 计算列
SELECT 属性1,属性2,'调整前属性'=属性3,'调整后属性'=属性3+运算符。 FROM table_name
--example 从学生表中输出学号,姓名,成绩,成绩-10 SELECT 学号,姓名,'调整前成绩'=成绩,'调整后成绩'=成绩-10。 FROM 学生信息
5.1.2 选择查询
1.先确定表
2.确定要查询那些列
3.限制条件
SELECT select_list FROM table_list WHERE search_conditions
5.1.2.1 比较搜索条件
--example --1.查询籍贯是beijing的学生有那些?--比较 SELECT * FROM 学生信息 WHERE 籍贯=‘beijing’ --2.查询籍贯是beijing,男学生有那些?--逻辑and 和 or SELECT * FROM 学生信息 WHERE 籍贯=‘beijing’ and 性别=‘男’
5.1.2.2 范围搜索条件
--3.查询成绩在(不在)70-80之间学生有那些? SELECT * FROM 学生信息 WHERE 成绩 BETWEEN 70 AND 80 --在 WHERE 成绩 NOT BETWEEN 70 AND 80 --不在
5.1.2.3 列表搜索条件
--4.查询成绩为60和100学生有那些? SELECT * FROM 学生信息 WHERE 成绩 IN(60,100)
5.1.2.4 搜索条件中的字符匹配符
通配符
描述
%
替代一个或多个字符
_
仅替代一个字符
[charlist]
字符列中的任何单一字符,也可以范围[a-d]或者[abcd]
[^charlist]
不在字符列中的任何单一字符也可以范围[^a-d] 或者[^abcd]
--5.查询姓名中包括的学生有那些? SELECT * FROM 学生信息 WHERE 姓名 like '王%' --6.查询姓名中包含大或小的学生有那些? SELECT * FROM 学生信息 WHERE 姓名 like '%[大小]%' --7.查询姓名中不包含猪或狗的学生有那些? SELECT * FROM 学生信息 WHERE 姓名 like '%[^猪狗]%'
5.1.2.5 涉及空值的查询
--8.查询没有参加考试的学生有那些? SELECT * FROM 学生信息 WHERE 成绩 is null
5.1.3 聚合函数
聚合函数有什么特点?
1.除了 COUNT 以外,聚合函数忽略空值。
2.聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
3.所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。
4.标量函数:只能对单个的数字或值进行计算。主要包括字符函数、日期/时间函数、数值函数和转换函数这四类。
T-SQL提供很多聚合函数,以下对部分讲解。--example 1.求某个班级总分 select Sum(成绩) as '总成绩' from 学生信息
--example 2.求某个班平均成绩 ? select avg(成绩) as '平均分' from 学生信息
--example 3.求某个班最高分? select max(成绩) as '最高分' from 学生信息
--example 4.求某个班最低分? select min(成绩) as '最低分' from 学生信息
--example 5.总人数? select count(*) as '总人数' from 学生信息 6.有成绩的总人数 select count(成绩) as '总人数' from 学生信息 where 成绩 is not null
5.1.4 数据分组
5.1.4.1 GROUP BY
语法格式 SELECT column_name,aggregate_function(column_name) FROM table_name GROUP BY column_name
--example 1.查询每个年级的总人数和班级数量 SELECT 年级, SUM(学号) as '总人数', count(DISTINCT 班级名称) as '班级数量', FROM 学生信息表 GROUP BY 年级
--example create table 成绩表 ( 学号 int primary key identity(1801305351,1), 课程编号 varchar(8) not null, 成绩 int ) insert into 成绩表(课程编号,成绩) values ('1000',100); insert into 成绩表 values ('1000',88); insert into 成绩表 values ('1000',55); insert into 成绩表 values ('1001',55); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1000',35); insert into 成绩表 values ('1000',5); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1002',95); insert into 成绩表 values ('1001',85); insert into 成绩表 values ('1001',15); --查询每门课的最高分和最低分 select 课程编号, MAX(成绩) as '最高分', MIN(成绩) as '最低分' from 成绩表 group by 课程编号
5.1.4.2 HAVING
--example create table 成绩表 ( 学号 int primary key identity(1801305351,1), 课程编号 varchar(8) not null, 成绩 int ) insert into 成绩表(课程编号,成绩) values ('1000',100); insert into 成绩表 values ('1000',88); insert into 成绩表 values ('1000',55); insert into 成绩表 values ('1001',55); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1000',35); insert into 成绩表 values ('1000',5); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1002',95); insert into 成绩表 values ('1001',85); insert into 成绩表 values ('1001',15); --查询每门课总分少于250分的课程。 select 课程编号, sum(成绩) as '总分' from 成绩表 group by 课程编号 having sum(成绩)<250
5.1.4.3 ORDER BY
--example create table 成绩表 ( 学号 int primary key identity(1801305351,1), 课程编号 varchar(8) not null, 成绩 int ) insert into 成绩表(课程编号,成绩) values ('1000',100); insert into 成绩表 values ('1000',88); insert into 成绩表 values ('1000',55); insert into 成绩表 values ('1001',55); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1000',35); insert into 成绩表 values ('1000',5); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1002',95); insert into 成绩表 values ('1001',85); insert into 成绩表 values ('1001',15); --对成绩进行排序。 select *from 成绩表 order by 成绩 desc
5.1.5 子查询
5.1.5.1 嵌套子查询
1.确定表,2.看两个表有没有关联信息3.开始嵌套
--example create table 成绩表 ( 学号 int primary key identity(1801305351,1), 课程编号 varchar(8) not null, 成绩 int ) insert into 成绩表(课程编号,成绩) values ('1000',100); insert into 成绩表 values ('1000',88); insert into 成绩表 values ('1000',55); insert into 成绩表 values ('1001',55); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1000',35); insert into 成绩表 values ('1000',5); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1002',95); insert into 成绩表 values ('1001',85); insert into 成绩表 values ('1001',15); --对课程为1000并且成绩高于平均分的进行筛选。 select * from 成绩表 select 学号,成绩 from 成绩表 where 课程编号=1000 and 成绩>(select AVG(成绩)from 成绩表 where 课程编号=1000)
5.1.5.2 相关子查询
在这里插入代码片
--example --查询课程为1000的学生的姓名,学号,成绩。 --用到学生表和成绩表 select 学生表.姓名,学生表.学号,成绩表.成绩 from 学生表,成绩表 where 学生表.学号=成绩表.学号 and 学生表.学号 in (select 成绩表.学号 from 成绩表 where 课程编号=1000)
5.1.6 表连接
5.1.6.1 内部连接
5.1.6.1.1 where
--example create table 成绩表 ( 学号 int primary key identity(1801305351,1), 课程编号 varchar(8) not null, 成绩 int ) insert into 成绩表(课程编号,成绩) values ('1000',100); insert into 成绩表 values ('1000',88); insert into 成绩表 values ('1000',55); insert into 成绩表 values ('1001',55); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1000',35); insert into 成绩表 values ('1000',5); insert into 成绩表 values ('1002',55); insert into 成绩表 values ('1002',95); insert into 成绩表 values ('1001',85); insert into 成绩表 values ('1001',15); CREATE TABLE 学生表( 学号 int IDENTITY(1801305351,2) NOT NULL, 姓名 varchar(8) NOT NULL, 性别 varchar(8) NOT NULL, 地址 varchar(8) NOT NULL ) insert 学生表(学号,姓名,性别,地址) values( 1801305351 , '小猪' , '男' , '上海' ) insert 学生表(学号,姓名,性别,地址) values( 1801305353 , '小狗' , '女' , '深圳' ) insert 学生表(学号,姓名,性别,地址) values( 1801305355 , '小1' , '女' , '武汉' ) insert 学生表(学号,姓名,性别,地址) values( 1801305357 , '小2' , '女' , '背景' ) insert 学生表(学号,姓名,性别,地址) values( 1801305359 , '小3' , '女' , '北京' ) insert 学生表(学号,姓名,性别,地址) values( 1801305361 , '小4' , '女' , '杭州' ) insert 学生表(学号,姓名,性别,地址) values( 1801305363 , '小5' , '女' , '地域' ) insert 学生表(学号,姓名,性别,地址) values( 1801305365 , '小6' , '女' , '黑屏' ) insert 学生表(学号,姓名,性别,地址) values( 1801305367 , '小7' , '女' , '按时' ) insert 学生表(学号,姓名,性别,地址) values( 1801305369 , '小8' , '女' , '奇怪' ) insert 学生表(学号,姓名,性别,地址) values( 1801305371 , '小9' , '女' , '深圳' ) --1.多表数据 学号,姓名,课程标号,成绩。 select 学生表.学号,学生表.姓名,成绩表.课程编号,成绩表.成绩 from 成绩表 inner join 学生表 on 成绩表.学号=学生表.学号
5.1.6.1.2 inner join 链接
5.1.6.2 外部连接
5.1.6.2.1 左外部连接
5.1.6.2.2 右外部连接
5.1.6.2.3 完全连接
5.1.7 在查询基础上创建新表
5.2 添加数据
5.2.1 使用SQL Sever Management Studio 添加数据
5.2.2 使用T-SQL添加数据
5.2.2.1 使用INSERT和VALUES插入行
5.2.2.2 使用INSERT和SELECT插入行
create table 成绩表2 ( 学号 varchar(15), 课程编号 varchar(2), 成绩 int ) insert into 成绩表2 select 学号,课程编号,成绩 from 成绩表 where 成绩>70 and 课程编号='1003'
5.3 修改数据
5.3.1 使用SQL Sever Management Studio 修改数据
5.3.1 使用UPDATE语句修改数据
5.4 删除数据
5.4.1 使用SQL Sever Management Studio 修改数据
5.4.2 使用Delete语句删除数据
看完不,快乐少一半
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算