数据库视频 SQL语句

第六章 sql 语言

数据查询

从数据库中读取数据

select * from table_name where colunmn_name=''

使用as可以对字段名重新命名

select 姓名 as 学生姓名,性别,家庭住址 from 学生信息

使用distinct关键字可以将查询出来的一样的结果合并,查询结果如下(有很多学生的民族为汉族或者满族,但是查询结果只是显示两个)

select distinct 民族 from 学生信息

在这里插入图片描述
除了可以从数据可中读取数据,select语句也可以进行结果的计算:

select 12*13 as 计算结果

在这里插入图片描述

通配符的使用

select * from 学生信息 where 家庭住址 like '河北省%'

查询结果如下:
在这里插入图片描述
在sql server中,sql通配符可以代替一个或多个字符,sql通配符必须与like运算符一起使用,常用的有% 和-,%可以代替一个或多个字符,-只能代替一个字符

数据排序

select * from 成绩信息 where 考试编号='0801' and 课程编号='01' order by 学生编号 desc

排序有两种方式,order by后面加按什么进行排序,不写desc默认为asc升序排序,desc为降序排序
在这里插入图片描述
数据分组:

select avg(分数) from 成绩信息 where 考试编号='0801'

上述语句是对考试编号为0801的所有成绩求平均数

select 课程编号,avg(分数)from 成绩信息 where 考试编号=‘0801’ ggroup by 课程编号

按照课程编号进行分组,求出考试编号为0801的考试的平均分
在这里插入图片描述

select 考试编号,课程编号,avg(分数) from 成绩信息 group by 考试编号,成绩编号

在这里插入图片描述
使用函数:max求最大值,main求最小值,avg求平均数,sum求和

select max(分数) from 成绩信息 where 考试编号='0801' and 成绩编号='01'
select min(分数) from 成绩信息 where 考试编号='0801' and 成绩编号='01'
select avg(分数) from 成绩信息 where 考试编号='0801' and 成绩编号='01'
select sum(分数) from 成绩信息 where 考试编号='0801' and 成绩编号='01'

在这里插入图片描述
查看成绩信息表中成绩在全部学生的6%的信息

select top (6) percent * from 成绩信息 order by 分数 desc

使用having子句:只有在使用group by子句的时候才能使用having子句

select 考试编号,课程编号,avg(分数)from 成绩信息 group by 考试编号,课程编号
order by 课程编号

在这里插入图片描述

select 考试编号,课程编号,avg(分数)from 成绩信息 group by 考试编号,课程编号
having avg(分数)>=80
order by 课程编号


从刚才的结果中筛选出来平均成绩大于等于80的结果

insert插入数据 :三种insert语句
1.Insert into 语句

insert into 学生信息 values('1015','张三','男','汉族','河南省安阳市','一班')

也可以向学生信息表中的某几列插入数据

insert into 学生信息(学号,姓名,民族) values('1016','李四','汉族')

2.Insert…select语句
将学生信息表里面的信息都插入到学生信息1表当中

insert  学生信息1
select * from 学生信息

将学生信息表中家庭住址为河北省的插入到学生信息2表中

insert  学生信息2
select * from 学生信息 where 家庭住址 like '河北省%'

3.Insert…into语句
将学生信息表中民族为汉的学生的数据保存在一个临时表student当中

select *
into #student
form 学生信息 where 民族='汉'

update更新数据
对学生信息表中学号为4的学生的姓名和所属班级进行修改,将其姓名改为张三,班级改为二班

update 学生信息
set 姓名='张三' ,所属班级='二班'
where 学号=4

delete删除数据
删除学生信息1表中静静的数据

delete from 学生信息1
where 姓名='静静'

使用with ties子句必须要使用分组group by才可以,with ties当存在相同数据时,使用with ties 关键字可以都显示出来

TOP函数用法
从成绩信息表中查询前三条记录,*不可缺少

select top 3 * from 成绩信息

从成绩信息表中查询记录的20%

select top 20 percent * from 成绩信息

可以声明一个变量,查询前20%的数据

declare @i int
set @i=20
select top (@i) percent * from 成绩信息

compute子句 :对数据进行统计运算

select * from 成绩信息 where 课程编号=2 order by 考试编号
compute sum(分数),avg(分数),max(分数),min(分数) by考试编号

运算:求余运算,in,between,not in,

考试编号为801并且分数在85-90之间的

select * from 成绩信息 where 考试编号='801' and (分数 between 85 and 90)

考试编号为801并且分数是5的倍数的

select * from 成绩信息 where 考试编号=‘801’ and (分数 % 5=0)

考试编号为801并且分数为89,82,90这几个值的

select * from 成绩信息 where 考试编号='801' and 分数 in (89,82,90)

考试编号为801并且考试编号为除了98,82,90这三个值以外的值的

select * from 成绩信息 where 考试编号='801' and 分数 not  in (89,82,90)
发布了45 篇原创文章 · 获赞 10 · 访问量 6221

猜你喜欢

转载自blog.csdn.net/wtt15100/article/details/99701959
今日推荐