查询 Select的简单语法形式:
Select 列名 [[, 列名 ]…] From 表名
[ Where 检索条件];
Select id, name, sex From Student;
检索条件where 逻辑运算符 and, or, not
Select name From student
Where (age < 15 or age >20) and id = '03';
结果唯一性 DISTINCT
Selcet Distinct id From student Where age>10;
结果排序 order by 列名 [asc | desc]
Select name From student
Order By id asc;
模糊查询 列名 [not] listk "字符串"
%
_
\
Select name From student
Where name Like '张%';
(Not) IN 子查询 表达式 [not] in (子查询)
Select * From Student
Where name in ("张三","李四");
Select name From student
Where id not in (Select id From course C, student S
Where C.name = '李明' adn C.id = S.couser_id
);
β some / β all 子查询
表达式 β some(子查询); β all(子查询);
β是比较运算符 <, >, >=, <=, =, <>
语义:将表达式的值与子査询的结果进行比较口如果表达式的值至少与子査询结果的某一个值相比较满足β关系,则“表达式 β Some(子查询)的结果便为真
β All如果表达式的值与子査询结果的所有值相比较都满足β关系,则“表达式,β All(子査询)的结果便为真
Select name From student
Where age <= All (Select age From sutdent);
(NOt) EXISTS 子查询 [not] Exists (子查询)
Select Distinct name From Student
Where exists (Select * From SC, Course C, Teacher T
Where SC.course_id = C.id and SC.teacher_id =T.id and T.name = "张三"
)
聚集函数
SQL提供了五个作用在简单列值集合上的内置的聚集函数agfunc,分别是:COUNT、SUM、AVG、MAX、MIN
分组查询与分组过滤
分组:SQL可以将检索到的元组按照某一条件进行分类,具有相同条件值 的元组划到一个组或一个集合中,同时处理多个组或集合的聚集运算
分组的基本语法:
Select 列名| expr| agfunc(列名)[[, 列名| expr| agfunc(列名)] …]
From
Where 检索条件]
Group by
#求每一个学生的平均成绩
Select id, AVG(Score) From SC Group by id;
聚集函数是不允许用于Where子句中的:Where子句是对每一元组进行条 件过滤,而不是对集合进行条件过滤
分组过滤
若要对集合(即分组)进行条件过滤,即满足条件的集合/分组留 下,不满足条件的集合/分组剔除。
Having子句,又称分组过滤子句。需要有Groupby子句支持,换句话 说,没有Groupby子句,便不能有Having子句。
Select 列名| expr| agfunc(列名)[[, 列名| expr| agfunc(列名)] …]
From 表名1 [, 表名2 …]
[ Where
[ Group by 分组条件[ Having
#求不及格课程超过两门的同学的学号
Select student_id From SC
Where Score < 60
Group by student_id Having Count(*)>2;
HAVING子句与WHERE子句表达条件的区别
每一分组检查满 足与否的条件要 用Having子句 表达。 注意:不是每一行 都检查,所以使 用Having子句一 定要有Groupby 子句
每一行都要检查满足 与否的条件要用 WHERE子句表达
增加
insert into简单语法形式
insert into 表名 [( 列名 [,列名]...]
values (值 [,值], …);
values后面值的排列,须与into子句后面的列名排列一致
若表名后的所有列名省略,则 values后的值的排列,须与该表存储中的列名排列一致
Insert Into student (id, name, age)
Values ("001", "小柒", 20);
更新
Update 表名 Set 列名 = 表达式1 (子查询) [,列名=表达式1(子查询)]…]
Where [条件表达式];
Update student
Set age = age *1.05;
删除
Delete From 表名 [ Where 条件表达式];
Delete From studetn;