一、定义
SQL(Structured Query Language),结构化查询语言,是关系数据库的标准语言。它集数据操纵语言(DML)、数据定义语言(DDL)、数据控制语言(DCL)为一体。
二、插入语句
- insert into表名(列名1,列名2…..)values(值1,值2…..)。
- 若表名后没有具体列名则新插入的记录必须在每个列上都有值,值的顺序与表定义中列的定义顺序一致。
- 若新插入的记录值是字符串类型,则需要用’’(单括号)括起来。
- 例:将一个新的选课记录(学号:20100010;课程号:3;分数:95)插入到选课表
insert into SC(Sno, Cno, Grade) values(‘20100010’, 3, 95)
Insert into SC values(‘20100010’, 3, 95)
三、修改语句
- update 表名 set 列名1=值1, 列名2=值2 where 条件
- 若省略where子句,则表示要修改表中的所有记录。
- 例:
update SC set Grade = 50 where Sno=‘20100010’ and Cno=‘3’
四、删去语句
- delect from 表名 where 条件,若没有where条件则删去所有信息。
- 例:删除选课表中学号为20100010,课程号为3的记录
delete from SC where Sno=‘20100010’ and Cno=‘3’
五、查询语句
(一)单表查询
- 查询指定列
select 列名1,列名2 from 表名
例:select Sno, Sname from Student
- 查询所有列
select * from 表名
例:select * from Student
- 用户可以通过指定别名来改变查询结果的列
select Sno as 学号, Sname as 姓名, Sage as 年龄 from Student;
等价于
`
select Sno 学号, Sname 姓名, Sage 年龄 from Student
4. 取消值相同的行
本来不完全相同的行记录,经过某些条件查询后,变成了相同的行记录,此时,可以使用distinct关键字来去掉重复的行。
例:select Sno from SC
select distinct Sno from SC
5. 查询满足条件的记录
(1)比较大小
select Sno, Sname from Student where Sage < 20;
(2)确定范围
select Sno,Sname from Student where Sage between 20 and 25;
(3)确定集合
select Sno,Sname from Student where Sdept in {‘计算机科学’,‘应用数学’,‘信息工程’};
(4)字符匹配
字符匹配的一般语法为:
LIKE ‘匹配串’ 或 NOT LIKE ‘匹配串’
匹配串可以是完整的字符串,有可以是含有通配符%和_,其中:
%:代表任何长度的字符串
_:代表一个字符串
例:
select Sname,Sno , Sage from Student where Sname like ‘刘%’
select Sname, Sno, Ssex from Student where Sname not like ‘刘_’
select
(5)空值查询
Select Sno, Cno where Grade is null
(6)多重条件查询
Select Sno, Sname from student where Sdept = ‘计算机科学’ and Sage < 20
Select Sno, Sname from student where Sdept = ‘计算机科学’ or Sdept = ‘应用数学’ or Sdept = ‘信息工程’
6. order by 子句
order by子句用于对查询结果进行排序,其中 order by 列名 asc 是对列名进行升序排列,order by 列名 desc是对列名进行降序排列。
例:
select Sno, Cno from SC where Cno=‘3’ order by Grade desc
7. 聚集函数
8. Group by 子句
求各个课程号及相应的选课人数
select Cno,count(Sno) from SC group by Cno;
求选修了2门及以上课程的学生学号
select Sno from SC group by Cno having count(Cno)>2;
(二)连接查询
- 等值与非等值连接
例:查询每个学生及其选修课程的情况
select Student , SC from Student,SC where Student.Sno=SC.Sno; - 复合条件连接
例: 查询选修了2号课程且成绩在90分以上的学生信息
select Student* from Student,SC where Student.Sno=SC.Sno and SC.grade>90 and Student.Cno=”2”; - 嵌套查询
例:查询与李明天同一个系的学生
select * from Student where Sdept in ( select Sdept from Student where Sname=”李明天”)