第六章 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)