1、SQLite使用8字节的符点数来存储实数。TEXT文本(TEXT)是字符数据。SQLite支持几种字符编码,包括UTF-8和UTF-16。字符串的大小没有限制。BLOB二进制大对象(BLOB)是任意类型的数据。BLOB的大小没有限制。NULLNULL表示没有值。SQLite具有对NULL的完全支持。SQLite通过值的表示法来判断其类型,下面就是SQLite的推理方法:lSQL语句中用单引号或双引号括起来的文字被指派为TEXT。如果文字是未用引号括起来的数据,并且没有小数点和指数,被指派为INTEGER。如果文字是未用引号括起来的数据,并且带有小数点或指数,被指派为REAL。用NULL说明的值
2、被指派为NULL存储类。如果一个值的格式为XABCD,其中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)容纳可变长度的字符串(可
3、容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。date(yyyymmdd)容纳日期。3.表-Table3.1.3.1.1.语法格式CREATETABLE数据库名.表名(字段名称1字段类型字段约束,字段名称2字段名称3字段名称4分组约束1,分组约束2,);3.1.2.字段约束约束名称约束说明NOT非空,约束强制列不接受NULL值,约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。PRIMARYKEY主键,约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含值。每个表应该都一个主键,并且每个表只能有一个主键。FOREIGN外键,约
4、束本字段的值必须存在于另一个表中主键字段,当使用外键约束时,如果外键在其所依赖的表中不存在,则记录插入失败。UNIQUE唯一性,约束唯一标识数据库表中的每条记录,即插入的字段值不可重复,唯一性约束可以包含NULL值,但每张表也只能有一个记录为NULL值。DEFAULT默认值,约束字段的默认值,如果插入数据时没有提供该字段的数值,则会使用默认值进行填充。3.1.3.数据字典表名:tbl_goods_category描述:商品类别字段名称字段类型字段长度字段描述category_codeCHAR8类别编码category_nameVARCHAR128类别名称category_desc255类别描述
5、tbl_goods_info商品信息goods_id16商品编码goods_name商品名称goods_unit商品单位prime_costNUMBER(6,2)进货价格sale_price零售价格vip_price会员价格remark备注信息tbl_stock_bill商品入库单bill_id20进货单单号stock_timeDateTime入库时间stock_amount入库数量3.1.4.脚本示例创建商品类别表tbl_goods_category-创建商品类别表-类别编码为主键-类别名称必须具有唯一性createtabletbl_goods_category(category_codeC
6、HAR(8)primarykey, -类别编码category_nameVARCHAR(128)UNIQUE, -类别名称category_descVARCHAR(255); -类别描述创建商品信息表tbl_goods_info-创建商品信息表-商品编码为主键-商品名称必须具有唯一性tbl_goods_info(, -类别编码goods_idCHAR(16)key, -商品编码goods_nameUNIQUE, -商品名称goods_unitVARCHAR(8), -商品单位prime_costNUMBER(6,2), -进货价格sale_priceNUMBER(6,2), -零售价格vip_
7、priceNUMBER(6,2), -会员价格remarkVARCHAR(255),KEY(category_code)REFERENCEStbl_goods_category(category_code); -备注信息创建商品入库单tbl_stock_bill-创建商品入库单-商品编码和入库时间为组合主键tbl_stock_bill(CHAR(16), -商品编码stock_timeDateTime, -入库时间stock_amountNUMBER(6,2), -入库数量NUMBER(6,2), -进货价格key(goods_id,stock_time),(goods_id)tbl_good
8、s_info(goods_id);3.2.3.2.1.表重命名ALTER数据库名.表名RENAMETO新表名添加字段ADD字段名称3.2.2.创建一个学生信息表tbl_studenttbl_student(std_idchar(20)key,std_namevarchar(16), std_ageinteger);修改学生信息表名为tbl_student_infoaltertbl_studentrename totbl_student_info为学生信息表添加班级字段tbl_student_infoaddclasschar(8)3.3.3.3.1.DROP数据库名.表名3.3.2.删除一个名为
9、tbl_student_info的数据表4.索引-Index4.1.4.1.1.INDEX数据库名.索引名称ON表名(ASC/DESC,ASC/DESC,);/在相应的表的列字段或多个列字段上建立相应的索引4.1.2.创建一个名为tbl_student的学生信息表,并为该学生信息表创建索引std_age-为学号创建升序索引indexidx_std_idtbl_student(std_idASC);-为姓名和年龄创建姓名为升序,年龄为降序的索引idx_name_agetbl_student(std_nameASC,DESC);4.2.4.2.1.数据库名.索引名4.2.2.删除一个名为idx_n
10、ame_age的索引idx_name_age5.触发器-Trigger5.1.5.1.1.TRIGGER触发器名称BEFORE|AFTER数据库事件数据库名称.表名FOREACHROWWHENexpressionBEGIN触发器执行动作END数据库事件:DELETE INSERTUPDATEUPDATEOF字段列表5.1.2.假设customers表存储了客户信息,orders表存储了订单信息,下面的触发器确保当用户改变地址时所有的关联订单地址均进行相应改变:trg_on_update_customer_addressAFTERUPDATEaddresscustomersBEGINorders
11、SET=new.addressWHEREcustomer_nameold.name;(DML语句)END;5.2.5.2.1.TRIGGER触发器名称5.2.2.删除一个名为trg_on_update_customer_address的触发器trg_on_update_customer_address6.视图-View在SQL中,视图是基于SQL语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加SQL函数、WHERE以及JOIN语句,我们也可以提交数据,就像这些来自于某个单一的表。6.1.6.1.1.VIEW
12、数据库名称.视图名称ASSelect查询语句注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用语句来重建数据。6.1.2.假设有一个学生数据库,其中有班级表,还有学生信息表以学生信息表为基本,创建一个班级编号WF1103班的学生信息视图view_student_wf1103asselect*fromstudentwhereWF11036.2.6.2.1.数据库名称.视图名称6.2.2.删除一个名为view_student_wf1103的学生信息表view_student_wf11037.数据操作-Insert,Update,Delete7.1.7.1.1.INSERTINTO
13、数据库名称.表名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=24std_id=WF1103017.3.7.3.1.DELETEFROM7.3.2.8.数据查询-Selecttbl_class(class_idvarchar(8)class_namevarchar(64),class_descv
14、archar(128);varchar(8),varchar(16)integer,std_phonestd_schoolvarchar(40);8.1.基本查询8.1.1.SELECTDISTINCT*|字段列表8.1.2.-查询学生信息表中的所有信息Selecttbl_student-查询学生信息表中所学生的姓名及年龄的信息std_name,8.2.Where子句Where子句通过条件表达式筛选满足条件的记录,条件表达式可以使用SQLite中的各种逻辑运算符号对字段进行筛选。Where的操作符操作符=等于不等于大于小于大于等于小于等于BETWEEN在某个范围内LIKE搜索某种模式8.2.1
15、.*|字段列表8.2.2.-查询学生信息表中学号等于WF110301的学号WF110301-查询学生信息表中所年龄大于23的学生23-查询学生信息表中所有名字中姓刘的学生或着名字最后一个字为刚的学生like刘%or%刚-查询学生信息表中农林大学,并且手机号码中带有6的学生农林大学and%6%8.3.Groupby子句GROUPBY子句可以在查询将指定的字段表数值相同的记录合并成一条输出,它与count(*)函数相结合,可以统计在列表中指字段表数值相同的记录的条数。8.3.1.GROUPBY字段1,字段2,,count(*)新的字段名8.3.2.-统计各个学校的学生数std_school,cou
16、nt(*)std_countgroupbystd_age8.4.OrderBy子句ORDERBY子句对所得结果根据表达式排序。8.4.1.ORDER字段名1ASC/DESC,字段名2ASC/DESC,8.4.2.-查询学生信息,并按年龄递减,学号递增的排序方式显示orderDESC,std_idASC8.5.LimitOffset子句LIMIT子句限定行数的最大值。负的LIMIT表示无上限。后跟可选的OFFSET说明跳过结果集中的前多少行,LimitOffset在分页显示中十分有用。8.5.1.单次最多读取行数offset跳过前面行数Limit跳过前面行数,单次最多读取行数8.5.2.-查询学
17、生信息,跳过前面10行,获取5条记录510或跳过前面10行,获取510,58.6.多表联合查询8.6.1.数据库名称.表名1,数据库名称.表名2条件表达式一般的连接8.6.2.-查询学生信息表中所有班级为WF1103的学生信息,并在结果中输出班级名称和学员姓名tbl_class.class_name,tbl_student.std_nametbl_student,tbl_classtbl_student.class_idtbl_class.class_id8.7.Join子句JOIN用于根据两个或多个表中的列之间的关系,从这些表中查询数据,JOIN会将两个表的数据合并起来,输出具有两个表有字段的记录。JOIN对于两个表格来说是相乘的关系,(inner join 与join就是普通的连接)8.7.1.-在两个表中存在至少都存在一个能够满足条件表达式的匹配时-INNER关键字返回行。INNER与是相同的。数据库名称.左表名数据库名称.右表名数据库名称.左
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2