一、关系数据库
实体间的关系有三种:一对一(one-to-one)、一对多(one-to-many)、多对多(many-to-many)
(一)数据模型
1、层次模型(一对多)
层次模型采用树状结构表示数据之间的联系,树的节点称为记录,记录之间只有简单的层次关系。有且只有一个节点没有父节点,该节点称为根节点;其他节点有且只有一个父节点。
2、网状模型(多对多)
可以有任意多个节点没有父节点。一个节点允许有多个父节点。两个节点之间可以有两种或两种以上联系。
3、关系模型(一对一)
关系模型用二维表格表示数据及数据联系,是应用最为广泛的数据模型。目前,各种常用的数据库,如Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、Oracle、MySQL、SQLite等,都属于关系模型数据库管理系统。
4、面向对象模型
面向对象模型是在面向对象技术基础上发展起来一种的数据模型,它采用面向对象的方法来设计数据库。面向对象模型的数据库种存储对象以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。
(二)关系数据库的概念和特点
1、基本概念
数据和数据之间的联系称为关系。
关系数据库使用二维表来表示和存储关系,一个关系就是一个二维表。表中的行称为记录,列称为字段。一个数据库可以包含多个表。
表中的一行称为一个记录。表中的列为记录中的数据项,称为字段。字段也称为属性或者列。每个记录可以包含多个字段,不同记录包含相同的字段(字段的值不同)。例如,用户表中的每个记录包含用户名、登录密码等字段。
关系数据库不允许在一个表中出现重复的记录。
可以唯一标识一个记录的字段或字段组合称为关键字。一个表可有多个关键字,其中用于标识记录的关键字称为主关键字,其他的关键字可称为候选关键字。一个表只允许有一个主关键字。例如,用户表中的用户名可定义为主关键字,在添加记录时,主关键字不允许重复。
如果一个表中的字段或字段组合作为其他表的主关键字,这样的字段或字段组合称为外部关键字。
2、关系数据库的基本特点
- 关系数据库中的表是二维表,表中的字段必须是不可再分的,即不允许表中表。
- 在同一个表中不允许出现重复的记录。
- 在同一个记录中不允许出现重复的字段。
- 表中记录先后顺序不影响数据的性质,可以交换记录顺序。
- 记录中字段的顺序不影响数据,可以交换字段的顺序。
(三)关系数据库语言SQL
SQL是Structured Query Language的缩写,即结构化查询语言,它是关系数据库的标准语言。Microsoft SQL Server、Microsoft Access、Microsoft FoxPro、Oracle、MySQL、SQLite等各种关系数据库均支持标准的SQL语言,但各种关系数据库具体在实现SQL时可能有所差别。
1、创建和删除数据库
2)删除数据库:使用drop database语句
drop database testdb
- 1
2、创建表
-
在数据库中创建表使用
create table
语句,其基本格式为:create table 数据库名.表名(字段名1 字段数据类型(长度) sql约束,…..)
-
在指定了“数据库名”时,创建的新表属于指定数据库,否则新表属于当前数据库。
数据类型 | 说明 |
---|---|
integer(size) int(size) smallint(size) tinyint(size) | 保存整数,size指定数字的最大位数 |
decimal(size, d) numeric(size, d) | 保存小数,size指定数字的最大位数,d指定小数的最大位数 |
char(size) | 保存固定长度的字符串(字母、数字以及特殊字符),size指定字符串的长度 |
varchar(size) | 保存可变长度的字符串(字母、数字以及特殊字符),size指定字符串的长度 |
date | 保存日期 |
- 最简单的create table命令只指明表名、字段名和数据类型。例如:
create table users(name varchar(10), birth date)
- 用于为表或字段定义约束条件,常用的约束有:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT(不区分大小写,习惯在SQL语句中将SQL的关键字用大写)。可同时使用为字段定义多个约束。
3、修改表
- 修改表使用
alter table
语句,前面已在修改或删除约束时使用到了该语句。修改表的其他操作通常包括修改表名称、添加字段、修改字段名、修改字段数据类型和删除字段等。
4、删除表
- 删除表使用drop table语句:
drop table users
5、删除表中全部记录
- 删除表中全部记录使用truncate table语句:
truncate table users
6、创建表索引
- 表索引可以按索引字段对记录进行排序,查询索引字段比非索引字段的速度更快。
- create index语句用于创建索引。
create index index_on_name on users(name)
- 1
7、创建视图
- 视图是数据库中预定义的查询,创建视图使用create view语句。
create view user_age as select name, age from users
- 1
8、执行查询
- select语句用于执行查询,查询结果存储在一个表中(称为查询结果集)。
SELECT 输出字段列表FROM 表名称[GROUP BY 用于分组的字段列表][WHERE 筛选条件表达式][ORDER BY 排序字段列表 [DESC|ASC]]
- 1
- 2
- 3
- 4
- 5
功能 | 实现 |
---|---|
返回表中的全部字段 | 用星号可表示返回表中的全部字段。select * from users |
返回表中的指定字段 | 在需要返回个别字段时,在输出字段列表中包含这些字段,用逗号分隔。select name, age from users |
为字段指定输出名称 | 默认情况下,查询结果集中字段名与输出字段同名,可以用as为输出字段命名。select name as “用户名”, age as “年龄” from users |
返回唯一值 | 使用关键词DISTINCT可去掉返回记录中的重复值。select DISTINC Tname from users |
使用where子句 | where子句用于指定筛选条件,满足条件的记录才会出现在查询结果集中。select * from users where age<20 |
运算符或函数 | ==, >, <, >=, <=, != between…and… in (…) like, not like isnull() not, and, or sum(), avg(), max(), min(), count() |
对查询结果排序 | order by子句用于指定排序字段,查询结果默认按升序(ASC)排序,使用DESC表示降序。 例如:select * from users oder by age select * from users oder by age DESC 可以使用多个排序字段,并分别指明排序方式。 例如,下面的语句按name升序,age降序对查询结果排序: select * from users oder by name ASC, age DESC |
二、利用SQLite3管理SQLite数据库
(一)下载sqlite3
- 下载网址: SQLite Download Page
e语句