贡献者: 待更新
SQL 数据库一般用于存储程序的各种数据。对于简单的程序来说,可能一个简单的文本文件或表格就足够了。但是如果数据量比较大,且他们之间联系比较多的时候,我们进行数据查询的时候就会很复杂。
简单来说,SQL 数据库和办公软件的表格(Excel)有很多相似之处。在一个数据库中,可以创建许多个表格。表格的每一列可以有不同的数据类型,比如整数,小数,文本等。你可以使用 SQL 专有的命令,对表格中的数据进行插入,修改,删除,查询等操作。
SQL 有许多不同的软件,例如 MySQL,ProstgreSQL,SQLite 等,为了简单起见,我们以 SQLite 软件作为入门演示。
可以在官方网站下载页面下载,选择你需要的操作系统的安装包。安装完成如下图:
根据需求创建数据库(相当于表格),我们以学生-课程数据库为例。
建表成功后如图所示:
表建立完成以后,我们需要网表里插入一些数据,具体操作如下:
这里我插入了四条数据:
当然这里也可以使用 SQL 语句进行写入值:
作为示例,我建立了三个表格
在这里,SC(成绩表)表中我们定义了一个外键约束,它引用了其他两个表(Student 表中的学号,Course 表中的课程号)。SQL 语句如图 11:
建立完成 SC(成绩表)并插入数据后如图所示:
使用 SQLite 建立自己需要的数据库后,在后续的使用过程中,进行数据的插入,删除,修改和插入都是非常方便的。 基于上面建立的三个表,添加了一些数据用于给大家举例子。(具体规范的语句格式参考SQL 入门语法)
insert into student(Sno,Sname,Ssex,Sage)
values('5','小赵','男','22');
执行成功后系统会自动添加一条记录到 student 表中:
首先在数据库中建立一个新表,其中一列存放课程号,另一列存放学生对应该课程的平均成绩
Create Table Avg_Grade
(
Cno INTEGER,
Avg INTEGER
);
运行成功后,数据库会自动建立一个表:
然后对成绩表(SC)按课程号分组求平均成绩,再把课程号和平均成绩存入新表中
insert into Avg_Grade(Cno,Avg_Grade)
select Cno,AVG(Grade)
from SC
group by Cno;
执行成功后如图:
例如从成绩表中查询小李的数据库成绩:
select Grade
from SC
where Sno='1' and Cno='2001';
执行成功如图:
例如查询全体学生的学号和姓名:
select Sno,Sname
from student;
执行成功如图:
例1:查询成绩低于60分的学生的学号和课程号:
select Sno,Cno
from SC
where Grade<60;
执行成功如图:
例2:查询选了操作系统课程的学生的学号及成绩,查询结果按分数的降序排序:
select Sno,Grade
from SC
where Cno='2004'
order by Grade DESC;
执行成功如图:
由学生表可知小李的学号为1,数据库的课程号为2001
update SC
set Grade='90'
where Sno='1' and Cno='2001';
修改后如图所示:
例如,将学生学号为01的学生对应的年龄加1:
update student
set Sage=Sage+1
where Sno='01';
执行成功,小李的年龄由原来的 20 增加到了 21