use 教学管理

1、最简单的查询

select 姓名,学号,移动电话 from 学生表
–查询指定表的具体列
select * from 学生表
–查询学生表的所有列

–两个select语句同时选中执行即可,中间不用逗号隔开

select 姓名,n累计学分=累计学分-累计学分*0.1 from 学生表
–查询计算列要指定新列名 给列表取别名有以下三种方式: as , 空格 , =;如果指定的列名中要有空格,则用单引号阔起。
select 姓名 as name,累计学分 gpa,Ngpa=累计学分-0.1 from 学生表
select 姓名 as ‘xuesheng name’,累计学分 gpa,Ngpa=累计学分-0.1 from 学生表

select distinct 所在院系,专业 from 学生表
–distinct 去重。如果没有distinct,查询结果就会有很多个相同的院系和相同的专业。distinct关键字的作用范围是整个查询列表,而不是单独的某个列,因此应该紧跟在select之后书写

2、查询满足条件的元组是通过在where子句中制定查询条件来实现的

(1)比较大小 [!] = < >…
select * from where 籍贯='杭州’
–查询来自杭州的所有学生,查询条件均要用单引号括起
select 姓名,累计学分 from where 累计学分<160
–查询累计学分在160以下的学生姓名和学分

(2)确定范围 [not] between and
select 学号,姓名 from 学生表 where 姓名 [not] between ‘陈’ and '李’
–这里的中括号表示可选;查询姓名在陈和李之间的学生的学号和姓名

(3)确定集合 [not] in
select 学号,姓名 from 学生表 where substring(学号,6,2) in (‘09’,substring(学号,2,2,),substring(学号,4,2))
–查询学号后两位是09,或者学号后两位等于学号前两位或中间两位的学生学号和姓名。substring函数是返回字符串学号中从第6位开始,长度为2的子串,后续的请自行对比理解。

(4)字符串匹配 where 字符串1(即列名) [not] like ‘_字符串2’ escape ''
**select 学号,姓名 from 学生表 where 学号 [not] like ‘_%’ escape ‘’ **
–查询学号第一位为’_‘的学生学号和姓名
这里先解释几个通配符
_ :表示任意一个字符
%:任意长度的字符串(可为0)
[123]:匹配1 2 3中的一个,(123可替换),总之匹配括号中的任意一个字符
[^123]:匹配除了1 2 3意外的一个字符,可简化为[^1-3]
用 \ 来实现通配符的转义,如上,’ _ ’ 就是单纯的 ’ _ ',但是%依然是通配符

(5)空值 is [not] null
这里的is不能替换成=
is not同样不能替换为!=或<>

3、对查询结果排序

order by 列名1 [asc|desc][,列名2 [asc|desc]]
默认为升序asc
列明也可以写成select语句中的顺序编号
select 学号,成绩 from 选课表 where 开课号 = ‘010101’ order by 2 desc
–查询结果按成绩降序排列,2是select语句中的顺序编号

4、常用的统计函数

…写不动了,改天接着写hhhhh

晚安啦