嵌入式数据库

it2022-05-05  117

嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照 SQL语法

数据定义(DDL):用户定义,删除和修改数据模式数据查询(DQL):用于查询数据数据操控(DML):用于增,删,改数据数据控制(DCL):用于控制数据访问权限 SQL功能命令动词数据查询SELECT数据定义CREATE ,DROP,ALTER数据操控INSERT ,UPDATE,DELETE数据控制GRANT,REVOKE,DENY

SQL的语法很像自然语言,每个语句都是一个祈使句,以动词开头,表示要做的动作, 如 select id from foods where name = “Jujyfruit”——一般的SQL语法结构,

SQL由命令组成,每个命令以分号(;)结束,如下面是三个独立的命令:

SELECT id,name FROM foods ;INSERT INTO foods VALUES (NULL,‘whataburger’);

常量 也称为Literals,表示确切的值,有三种:字符串常数,数据常量和二进制常量 字符串常量如:‘Jerry’ ‘Newman’ ‘JujyFruit’ 数字常量 :数字常量有整数,十进制数和科学计数法表示的数 二进制值用如x‘0000’的表示法,其中每个数据是一个16进制数

创建数据库 一 丶创建表 在SQL中,创建和删除数据库对象的语句一般称为数据定义语言,操作这些对象中的数据语言称为数据操作语言 如下定义 CREATE[TEMP] TABLE tablle_name (column_definitions,[constraints]; CREATE TABLE命令至少需要一个表名和一个字段名,命令中table_name表示表名,必须与其他所有的标识符不同。 column_definitions表示一个用逗号分隔的字段列表,每个字段定义包括一个名称,一个域和一个逗号分隔的字段约束表 在SQLite中有5种本地类型:INTTEGER , REAL , TEXT ,BLOB ,NULL 实例

create table foods (id integer primary key,type_id integer,name text)

二丶改变表 你可以用ALTER TABLE命令改变表的结构。SQLite版的ALTER TABLE命令既可以改变表名,也可以增加字段。一般格式为: ALTER TABLE table { RENAME TO name | ADD COLUMN column_def } 如 sqlite> ALTER TABLE contacts ADD COLUMN email TEXT NOT NULL DEFAULT ‘’ COLLATE NOCASE; sqlite> .schema contacts CREATE TABLE contacts ( id INTEGER PRIMARY KEY, name TEXT NOT NULL COLLATE NOCASE, phone TEXT NOT NULL DEFAULT ‘UNKNOWN’, email TEXT NOT NULL DEFAULT ‘’ COLLATE NOCASE, UNIQUE (name,phone) ); 显示了当前的表定义 。 三丶查询 SELECT <目标列名序列> FROM <数据源> [WHERE <检索条件表达式>] [GROUP BY <分组依据列>] [HAVING <分组提取条件>] [ORDER BY <排序依据列>] 基本结构 SELECT <目标列名序列>(需要哪些列) FROM <表名序列> (从哪些表) WHERE <查询条件> (根据什么条件) 例如 对于下表 例1. 查询全体学生 的学号与姓名

SELECT Sno,Sname FROM Student

例2,查询全体学生的详细记录

SELECT Sno,Sname,Ssex, Sage, Sdept FROM Student 等价于 SELECT * FROM Student

比较大小 (<,>,<=,>=,=,<>) 例3.查询计算机系全体学生

SELECT Sname FROM Student WHERE Sdept=’CS’

例4,查询所有年龄在20岁以下的学生姓名及其年龄

SELECT Sname, Sage FROM Student WHERE Sage < 20 或者 SELECT Sname, Sage FROM Student WHERE NOT Sage >= 20

例5,查询年龄在20~23岁之间的学生的姓名、所在系和年龄

SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 20 AND 23 等价于 SELECT Sname, Sdept, Sage FROM Student WHERE Sage >=20 AND Sage<=23

例6,查询年龄不在20~23之间的学生姓名、所在系和年龄

ELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23 等价于 SELECT Sname, Sdept, Sage FROM Student WHERE Sage <20 OR Sage>23

例7,查询信息系(IS)、数学系(MA)和计算机系(CS)学生的姓名和性别。

SELECT Sname, Ssex FROM Student WHERE Sdept IN(‘IS’,‘CS’, ‘MA’) 等价于 SELECT Sname, Ssex FROM Student WHERE Sdept=‘IS’ OR Sdept=‘MA’ OR Sdept=‘CS’

例8,查询名字中第2个字为“海”字的学生的姓名和学号

SELECT Sname, Sno FROM Student WHERE Sname LIKE ‘_海%

例9,查询所有不姓“刘”的学生

SELECT Sname FROM Student WHERE Sname NOT LIKE ‘刘%’

涉及空值的查询 空值是未确定的值或其值尚不知道 例如,学生选课,在开学初学生只有选课记录,没有修课成绩,这时成绩一项的值就是空值。 不能用=或<>,只能用IS NULL或IS NOT NULL 例10,查询无成绩的学生的学号和相应的课程号

SELECT Sno, Cno FROM SC WHERE Grade IS NULL

最新回复(0)