数据库之数据的增删改查语句⼤全--添加数据
--添加单条
insert into表名(字段名1,字段名2) values (值1,值2)
--添加多条
insert into表名(字段名1,字段名2) values (值1,值2),
(值1,值2),
(值1,值2)
--使⽤update更新语句,修改数据
update表名set字段名=新值,字段名2=新值2
update student set ccredit=2where cno='co1'
--删除数据
-
-删除表中所有数据
delete from表名
delete from表名where条件
--删除前20%的数据
delete top(20) present from sc
--数据查询
--查询全部数据
select*from表名
select字段1,字段2 from表名
--给列取别名
select sname as姓名from student
-
-限制结果集的⾏数,指定取出多少⾏
select top5 sname,ssex from student --取出前5⾏数据
--消除重复的列 ,多个相同的课程号列只取⼀个
select distinct sno from sc
--条件查询
-- > < = != not
--查年龄⼩于20学⽣的学号
select sno from student where sage<20
--范围查询 between and 和 not between and
--查年龄在20到50之间学⽣
select*from student where sage between20and50
-
-in 确定集合,属于集合的元组
select*from student where sdept in ('信息系','计算机系','数学系')
--模糊查询 like
-- _ 匹配任意⼀个字符,
-- %匹配0个多个字符,
-- []匹配【】中的任意⼀个字符,
-- [^]不匹配他中的任意⼀个字符
--查询姓张的学⽣
select*from student where sname like'张%'
--查询第⼆个字为⼤或⼩的⼈
select*from student where sname like'_[⼤⼩]%'
-
-查询最后⼀位不是 1 ,2的学⽣
select*from student where sno like'%[^12]'
--数据排序 order by 默认是升序(上⾯⼩,下⾯打)
select*from student order by gkfs
--降序排列
select*from student order by gkfs desc
--聚合函数,进⾏计算
--1. 查询各个系男⼥学⽣⼈数,⾼考分数平均分,⾼考分数最⾼分,⾼考分数最低分,
-- 显⽰系,性别,⼈数,⾼考分数平均分,⾼考分数最⾼分,⾼考分数最低分。
select sdept,ssex,count(ssex),AVG(gkfs)as平均分,MAX(gkfs)as最⾼分,MIN(gkfs)as最低分from录取表
--分组计算 group by
-
-统计每门课的选课⼈数,显⽰出课程号和⼈数
select cno as课程号,COUNT(sno) as选课⼈数from sc group by cno
--2. 查询每个学⽣的所选课程的课程数,所选课程的平均分,显⽰学号,所选课程的课程数,所选课程的平均分。select*from sc
select sno,COUNT(cno) as课程数,AVG(grade) as平均分from sc GROUP by sno
--3. 查询每个学⽣的所选课程各科都及格的课程数,所选课程的平均分,
-- 显⽰学号,所选课程的课程数,所选课程的平均分。
--having是对分组进⾏筛选
select*from sc
select sno,COUNT(cno) as课程数,AVG(grade)as平均分from sc
group by sno having MIN(grade)>=60
--4. 查询每个学⽣的所选课程中分数不低于80分的课程平均分,显⽰学号,所选课程的平均分。
select sno,AVG(grade) from sc where grade>=80group by sno
--5. 查询每门课程的选修⼈数,所选课程的平均分
select cno,COUNT(*),AVG(grade) from sc group by cno
--查询选修了三门以上课程的学⽣--Query students who have taken more than three courses
select sno from sc group by sno having COUNT(*)>3
--LEFT对字符串进⾏操作,从左边进⾏截取
select LEFT('170508010430',4) --1705
--right对字符串进⾏操作,从右边进⾏截取
select right('170508010430',2) --30
--substaring 从指定位置取出从第⼏位开始,取出⼏个数
select substring('1700508010430',2,5) --70050
-
-转化为⼤写
select UPPER('YAng123')
--转化为⼩写
select lower('YAng123')
--⼦查询
--单值嵌套查询
delect sno,grade from sc
where cno=(select cno from course where cname='数据库基础')
--多值嵌套查询 in
--查询和刘晨在同⼀个系的学⽣
select sno,sname,sdept from student
where sdept in (select sdept from student where sname='刘晨')
and sname !='刘晨'
--any 其中之⼀,有⼀个满⾜就为true
select*from course
where ccredit >any(select ccredit from course)
--all 所有的,全部满⾜才为true
select*from course
where ccredit >all(select ccredit from course)
你
--exists 存在性检测
--查询了选秀了c01课程的学⽣姓名
select sname from student
where exists(select*from sc where sno=student.sno and cno='c01')
--多表连接查询 join
--⾃连接先join on 再where 最后group by
--查询和刘晨在同⼀个系的学⽣的姓名和所在系
select s2,sname,s2.sdept from student s1 join student s2
on s1.sdept=s2.sdept
where s1.sname ='刘晨'
and s2.sname !='刘晨'
--并运算 union 会⾃动剔除重复的数据⾏
--列出课程编号为c01 c02的课程名和学分
select cname,ccredit from xourse where cno='c01'
union
select cname,ccredit from course where cno='c03'
--交运算基本的增删改查语句
--既修了01⼜修了02
select cname,ccredit from xourse where cno='c01'
intersect
select cname,ccredit from course where cno='c03'
--差运算 except同not in 。在⼀个集合有另⼀个集合没有
--case函数
-- 将⼀个测试表达式和⼀组简单的表达式进⾏⽐较,返回相应的结果--查询c07的课程,根据分数返回成绩结果并显⽰
select sno,
case
when grade>=90then'优秀'
when grade between80and89then'良好'
when grade between70and79then'中等'
when grade between60and69then'及格'
when grade <60then'不及格'
end as成绩
from scwhere cno='c07'
--1.在teacher中使⽤case语句为
--教授的⽼师基本⼯资设定为5000元,
-
-副教授⽼师基本⼯资设定为4000元,
--讲师⽼师基本⼯资设定为3000元,
--助教⽼师基本⼯资设定为2000元。
update teacher set基本⼯资=
case职称
when'教授'then5000
when'副教授'then4000
when'讲师'then3000
when'助教'then2000
end
--3.在teacher中使⽤case语句为
-
-教授的⽼师基本⼯资上浮50%
--副教授⽼师基本⼯资上浮40%,
--讲师的⽼师基本⼯资上浮30%
--助教⽼师基本⼯资上浮20%,
--其他⼈员基本⼯资上浮10%。
update teacher set基本⼯资=基本⼯资*
case职称
when'教授'then1.5--只能⽤⼩数不能使⽤百分数
when'副教授'then1.4
when'讲师'then1.3
when'助教'then1.2
else1.1
end
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论