--添加数据
--添加单条
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=2 where 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 top 5 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 between 20 and 50
--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>=80 group 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>=90 then '优秀'
when grade between 80 and 89 then '良好'
when grade between 70 and 79 then '中等'
when grade between 60 and 69 then '及格'
when grade <60 then '不及格'
end as 成绩 from scwhere cno='c07'
--1.在teacher中使用case语句为 --教授的老师基本工资设定为5000元, --副教授老师基本工资设定为4000元, --讲师老师基本工资设定为3000元, --助教老师基本工资设定为2000元。
update teacher set 基本工资=
case 职称 when '教授' then 5000
when '副教授' then 4000
when '讲师' then 3000
when '助教' then 2000
end
--3.在teacher中使用case语句为 --教授的老师基本工资上浮50% --副教授老师基本工资上浮40%, --讲师的老师基本工资上浮30% --助教老师基本工资上浮20%, --其他人员基本工资上浮10%。
update teacher set 基本工资=基本工资*
case 职称 when '教授' then 1.5 --只能用小数不能使用百分数
when '副教授' then 1.4
when '讲师' then 1.3
when '助教' then 1.2
else 1.1
end