SQLite快速上手版笔记Word文档下载推荐.docx
《SQLite快速上手版笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQLite快速上手版笔记Word文档下载推荐.docx(23页珍藏版)》请在冰点文库上搜索。
SQLite使用8字节的符点数来存储实数。
TEXT
文本(TEXT)是字符数据。
SQLite支持几种字符编码,包括UTF-8和UTF-16。
字符串的大小没有限制。
BLOB
二进制大对象(BLOB)是任意类型的数据。
BLOB的大小没有限制。
NULL
NULL表示没有值。
SQLite具有对NULL的完全支持。
SQLite通过值的表示法来判断其类型,下面就是SQLite的推理方法:
l
SQL语句中用单引号或双引号括起来的文字被指派为TEXT。
如果文字是未用引号括起来的数据,并且没有小数点和指数,被指派为INTEGER。
如果文字是未用引号括起来的数据,并且带有小数点或指数,被指派为REAL。
用NULL说明的值被指派为NULL存储类。
如果一个值的格式为X'
ABCD'
,其中ABCD为16进制数字,则该值被指派为BLOB。
X前缀大小写皆可。
2.2.
兼容的SQL92类型
数据类型
类型描述
对应类型
integer(size)
int(size)
smallint(size)
tinyint(size)
仅容纳整数。
在括号内规定数字的最大位数。
decimal(size,d)
numeric(size,d)
容纳带有小数的数字。
"
size"
规定数字的最大位数。
d"
规定小数点右侧的最多位数。
char(size)
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。
varchar(size)
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最大长度。
date(yyyymmdd)
容纳日期。
3.
表-Table
3.1.
3.1.1.
语法格式
CREATE
TABLE
[数据库名.]表名(
字段名称1
字段类型
字段约束,
字段名称2
字段名称3
字段名称4
…
…
分组约束1,
分组约束2,
);
3.1.2.
字段约束
约束名称
约束说明
NOT
非空,约束强制列不接受
NULL
值,约束强制字段始终包含值。
这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
PRIMARY
KEY
主键,约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含
值。
每个表应该都一个主键,并且每个表只能有一个主键。
FOREIGN
外键,约束本字段的值必须存在于另一个表中主键字段,
当使用外键约束时,如果外键在其所依赖的表中不存在,则记录插入失败。
UNIQUE
唯一性,约束唯一标识数据库表中的每条记录,即插入的字段值不可重复,唯一性约束可以包含NULL值,但每张表也只能有一个记录为NULL值。
DEFAULT
默认值,约束字段的默认值,如果插入数据时没有提供该字段的数值,则会使用默认值进行填充。
3.1.3.
数据字典
表名:
tbl_goods_category
描述:
商品类别
字段名称
字段类型
字段长度
字段描述
category_code
CHAR
8
类别编码
category_name
VARCHAR
128
类别名称
category_desc
255
类别描述
tbl_goods_info
商品信息
goods_id
16
商品编码
goods_name
商品名称
goods_unit
商品单位
prime_cost
NUMBER
(6,2)
进货价格
sale_price
零售价格
vip_price
会员价格
remark
备注信息
tbl_stock_bill
商品入库单
bill_id
20
进货单单号
stock_time
DateTime
入库时间
stock_amount
入库数量
3.1.4.
脚本示例
Ø
创建商品类别表tbl_goods_category
--创建商品类别表
--类别编码为主键
--类别名称必须具有唯一性
create
table
tbl_goods_category(
category_code
CHAR(8)
primary
key,
--类别编码
category_name
VARCHAR(128)
UNIQUE,--类别名称
category_desc
VARCHAR(255));
--类别描述
创建商品信息表tbl_goods_info
--创建商品信息表
--商品编码为主键
--商品名称必须具有唯一性
tbl_goods_info(
--类别编码
goods_id
CHAR(16)
key,--商品编码
goods_name
UNIQUE,--商品名称
goods_unit
VARCHAR(8),--商品单位
prime_cost
NUMBER(6,2),--进货价格
sale_price
NUMBER(6,2),--零售价格
vip_price
NUMBER(6,2),--会员价格
remark
VARCHAR(255),
KEY
(category_code)
REFERENCES
tbl_goods_category(category_code));
--备注信息
Ø
创建商品入库单tbl_stock_bill
--创建商品入库单
--商品编码和入库时间为组合主键
tbl_stock_bill(
CHAR(16),--商品编码
stock_time
DateTime,--入库时间
stock_amount
NUMBER(6,2),--入库数量
NUMBER(6,2),
--进货价格
key(goods_id,
stock_time),
(goods_id)
tbl_goods_info(goods_id));
3.2.
3.2.1.
表重命名
ALTER
[数据库名.]表名
RENAME
TO
新表名
添加字段
ADD
字段名称
3.2.2.
创建一个学生信息表tbl_student
tbl_student(
std_id
char(20)
key,
std_name
varchar(16),
std_age
integer);
修改学生信息表名为tbl_student_info
alter
tbl_student
renameto
tbl_student_info
为学生信息表添加班级字段
tbl_student_info
add
class
char(8)
3.3.
3.3.1.
DROP
[数据库名.]表名
3.3.2.
删除一个名为tbl_student_info的数据表
4.
索引-Index
4.1.
4.1.1.
INDEX
[数据库名.]索引名称
ON
表名(
[ASC/DESC],
[ASC/DESC],
…);
//在相应的表的列字段或多个列字段上建立相应的索引
4.1.2.
创建一个名为tbl_student的学生信息表,并为该学生信息表创建索引
std_age
--为学号创建升序索引
index
idx_std_id
tbl_student(std_id
ASC);
--为姓名和年龄创建姓名为升序,年龄为降序的索引
idx_name_age
tbl_student(std_name
ASC,
DESC);
4.2.
4.2.1.
[数据库名.]索引名
4.2.2.
删除一个名为idx_name_age的索引
idx_name_age
5.
触发器-Trigger
5.1.
5.1.1.
TRIGGER
触发器名称
[BEFORE|AFTER]
数据库事件
[数据库名称].表名
[FOR
EACH
ROW][
WHEN
expression]
BEGIN
触发器执行动作
END
数据库事件:
DELETEINSERT
UPDATE
UPDATE
OF
字段列表
5.1.2.
假设"
customers"
表存储了客户信息,"
orders"
表存储了订单信息,下面的触发器确保当用户改变地址时所有的
关联订单地址均进行相应改变:
trg_on_update_customer_address
AFTER
UPDATE
address
customers
BEGIN
orders
SET
=
new.address
WHERE
customer_name
old.name;
(DML语句)
END;
5.2.
5.2.1.
TRIGGER触发器名称
5.2.2.
删除一个名为trg_on_update_customer_address的触发器
trg_on_update_customer_address
6.
视图-View
在
SQL
中,视图是基于SQL
语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。
视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
我们可以向视图添加SQL
函数、WHERE
以及
JOIN
语句,我们也可以提交数据,就像这些来自于某个单一的表。
6.1.
6.1.1.
VIEW
[数据库名称].视图名称
AS
Select查询语句
注释:
视图总是显示最近的数据。
每当用户查询视图时,数据库引擎通过使用
语句来重建数据。
6.1.2.
假设有一个学生数据库,其中有班级表,还有学生信息表
以学生信息表为基本,创建一个班级编号WF1103班的学生信息视图
view_student_wf1103
as
select
*
from
student
where
‘WF1103’
6.2.
6.2.1.
[数据库名称].视图名称
6.2.2.
删除一个名为view_student_wf1103的学生信息表
view_student_wf1103
7.
数据操作-Insert,Update,Delete
7.1.
7.1.1.
INSERT
INTO
[数据库名称].表名
VALUES(记录内容)//对应表的顺序进行添加和加入值
[数据库名称].表名(字段列表)
VALUES(对应字段内容)//按字段列表添加值
7.1.2.
VALUES(‘WF110301’,’张三’,23);
tbl_student(std_id,std_name,std_age)
7.2.
7.2.1.
字段1=字段1值,字段2=字段2值…
条件表达式
7.2.2.
std_age=24
std_id=‘WF110301’
7.3.
7.3.1.
DELETE
FROM
7.3.2.
8.
数据查询-Select
tbl_class(
class_id
varchar(8)
class_name
varchar(64),
class_desc
varchar(128));
varchar(8),
varchar(16)
integer,
std_phone
std_school
varchar(40));
8.1.
基本查询
8.1.1.
SELECT
[DISTINCT]
[*|字段列表]
8.1.2.
--查询学生信息表中的所有信息
Select
tbl_student
--查询学生信息表中所学生的姓名及年龄的信息
std_name,
8.2.
Where子句
Where子句通过条件表达式筛选满足条件的记录,条件表达式可以使用SQLite中的各种逻辑运算符号对字段进行筛选。
Where的操作符
操作符
=
等于
<
>
不等于
大于
小于
大于等于
小于等于
BETWEEN
在某个范围内
LIKE
搜索某种模式
8.2.1.
[*|字段列表]
8.2.2.
--查询学生信息表中学号等于WF110301的学号
‘WF110301’
--查询学生信息表中所年龄大于23的学生
23
--查询学生信息表中所有名字中姓‘刘’的学生或着名字最后一个字为‘刚’的学生
like
'
刘%'
or
%刚'
--查询学生信息表中农林大学,并且手机号码中带有6的学生
农林大学'
and
%6%'
8.3.
Group
by子句
GROUP
BY子句可以在查询将指定的字段表数值相同的记录合并成一条输出,
它与count(*)函数相结合,可以统计在列表中指字段表数值相同的记录的条数。
8.3.1.
GROUP
BY
字段1,字段2,…
[,count(*)
新的字段名]
8.3.2.
--统计各个学校的学生数
std_school,
count(*)
std_count
group
by
std_age
8.4.
Order
By子句
ORDER
BY子句对所得结果根据表达式排序。
8.4.1.
ORDER
字段名1
[ASC/DESC],字段名2
[ASC/DESC],…
8.4.2.
--查询学生信息,并按年龄递减,学号递增的排序方式显示
order
DESC,std_id
ASC
8.5.
Limit
Offset子句
LIMIT子句限定行数的最大值。
负的LIMIT表示无上限。
后跟可选的OFFSET说明跳过结果集中的前多少行,Limit
Offset在分页显示中十分有用。
8.5.1.
单次最多读取行数
offset
跳过前面行数
Limit跳过前面行数,单次最多读取行数
8.5.2.
--查询学生信息,跳过前面10行,获取5
条记录
5
10
或
跳过前面10行,获取5
10,5
8.6.
多表联合查询
8.6.1.
[数据库名称].表名1,
[数据库名称].表名2
条件表达式
一般的连接
8.6.2.
--查询学生信息表中所有班级为WF1103的学生信息,并在结果中输出班级名称和学员姓名
tbl_class.class_name,tbl_student.std_name
tbl_student,
tbl_class
tbl_student.class_id
tbl_class.class_id
8.7.
Join子句
JOIN用于根据两个或多个表中的列之间的关系,从这些表中查询数据,JOIN会将两个表的数据合并起来,输出具有两个表有字段的记录。
JOIN对于两个表格来说是相乘的关系,(innerjoin与join就是普通的连接)
8.7.1.
--在两个表中存在至少都存在一个能够满足条件表达式的匹配时
--INNER
关键字返回行。
INNER
与
是相同的。
[数据库名称].左表名…
[数据库名称].右表名
[数据库名称].左