数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。
数据库系统在三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统的数据能够具有较高的逻辑独立性和物理独立性。
关系(Relation):一个关系就是一张二维表,每一个关系有一个关系名,可以存储为一个文件。其定义可以描述为 的子集叫做域 , ,…, 上的关系,表示为 ,R表示关系的名称,n表示关系的目或度(Degree)。
元组:表中的行称为元组,一行就是一个元组,对应存储文件中的一个记录。
属性:关系中的一列称为一个属性。一个属性必须有唯一的属性名,一个关系可以有若干个属性值。
域(Domain):属性的取值范围,是一组具有相同数据类型的值的集合。
关系的候选键与主键
表中某一列(或若干列的最小组合)的值能惟一标识一个行,称该列或列组为候选键。如Students表的学号列,就是一个候选键。
对于一个表,可能有多个候选键 。
候选键取决于应用范围,如给定条件,没有重复的学生姓名,则姓名是学生基本情况表的一个候选键。
SQL不区分大小写,在SQLite中有5种本地类型:INTEGER、REAL、TEXT、BLOB和NULL
SELECT <目标列名序列>
FROM <数据源>
[WHERE <检索条件表达式>]
[GROUP BY <分组依据列>]
[HAVING <分组提取条件>]
[ORDER BY <排序依据列>]
SELECT <目标列名序列>(需要哪些列)
FROM <表名序列> (从哪些表)
WHERE <查询条件> (根据什么条件)
一、创建数据库
1.数据库文件格式:test.db
sqlite> sqlite3 test.db
sqlite> create table test (id integer primary key, value text);
名为id的主键列:该列默认具备自动增长的属性;
名为value的简单文本域;
二、插入
插入操作:
sqlite> insert into test (id,value) values(1,’zhang’);
sqlite> insert into test (id,value) values(2,’wang’);
sqlite> insert into test (value) values(‘liang’);
sqlite> insert into test (value) values(‘liang’);
三、查看数据
sqlite> select * from test;
1)查询指定列
SELECT Sno,Sname FROM Student
2)查询全部列
SELECT * FROM Student
3)有条件的查询(比如说性别女的信息或者年龄大于20的人)
SELECT Sname FROM Student WHERE Sdept=’CS’
4)有范围的查询
BETWEEN … AND … 包括临界值
NOT BETWEEN… AND … 不包括临界值
BETWEEN后是范围的下限(低值)
AND后是范围的上限(高值)
查找属性值在或不在指定范围内的元组
例:
SELECT Sname, Sdept, Sage FROM Student WHERE Sage >=20 AND Sage<=23
SELECT Sname, Sdept, Sage FROM Student WHERE Sage <20 OR Sage>23
5)字符匹配
一般形式为: 列名 [NOT ] LIKE 匹配串
作用:查找指定列名与匹配串常量匹配的元组。
%(百分号):匹配0个或多个字符。
_(下划线):匹配一个字符。
[ ]:匹配括号中的字符
[∧ ]:不匹配括号中的字符
四、更新
修改数据
Update <表名>
Set <列名>=<表达式>[{, <列名>=<表达式>}] Set 列名 表达式 [{, 列名 表达式 }] [Where <条件>]
如:将学生95001的年龄改为22岁
Update Student Set Sage = 22 Where Sno=95001
五、删除数据
Delete From <表名>[Where <条件>]
„ 删除学号为95019的学生的记录
Delete From Student Where Sno=95019
六、退出:
sqlite> .exit