数据库之数据的增删改查语句大全


--添加数据
    --添加单条
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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM