###一、基本语句
- b<=a && a <= c 的SQL语句:
表达式”a BETWEEN b AND c”等于表达式 “a >= b AND a <= c”,在比较表达式时,a可以是具有任何亲和性。 - a的值是x,y,z其中一个值:
“a IN (x, y, z)” 和 “a = z OR a = y OR a = z”视为相等. - 如何创建制定目录的数据库:
sqlite3 D:/Project/SyncML/Lib/debug/atsync.db如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库。
- 添加一张数据表:
create table student(name varchar(10), age smallint); - 往数据表中添加数据:
insert into student values(‘张三’, 20); - 在SQLite中,在表上添加或删除一列:
SQLite 有有限地 ALTER TABLE 支持。你可以使用它来在表的末尾增加一列,可更改表的名称。 如果需要对表结构做更复杂的改变,则必须重新建表。 重建时可以先将已存在的数据放到一个临时表中,删除原表, 创建新表,然后将数据从临时表中复制回来。
如,假设有一个 t1 表,其中有 “a”, “b”, “c” 三列, 如果要删除列 c ,以下过程描述如何做:
开始事物处理
BEGIN TRANSACTION;
创建临时表格t1-backup
CREATE TEMPORARY TABLE t1_backup(a,b);
将数据库表t1中的所有数据拷贝到表t1-backup中
INSERT INTO t1_backup SELECT a,b FROM t1;
删除表格t1
DROP TABLE t1;
创建表格t1
CREATE TABLE t1(a,b);
将数据库表t1-backup中的所有数据拷贝到表t1中
INSERT INTO t1 SELECT a,b FROM t1_backup;
删除备份表格t1-backup
DROP TABLE t1_backup;
事物提交
COMMIT; - SQLite支持的数据类型:
NULL 值为NULL
INTEGER 值为带符号的整型,根据类别用1,2,3,4,6,8字节存储
REAL 值为浮点型,8字节存储
TEXT 值为text字符串,使用数据库编码(UTF-8, UTF-16BE or UTF-16-LE)存储
BLOB 值为二进制数据,具体看实际输入 - 如果将声明表的一列设置为 INTEGER PRIMARY KEY,则具有:
1. 每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数;
2.如果表是空的, 将会是1注意该整数会比表中该列上的插入之前的最大值大1。 该键值在当前的表中是唯一的。但有可能与已从表中删除的值重叠。要想建立在整个表的生命周期中唯一的键值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT声明。那么,新的键值将会比该表中曾能存在过的最大值大1
###案例(CRUD)(以下所有中括号[]均视为注释)
- 创建一个数据库:create database [数据名]; (…+character set utf8;)
- 查看所有的数据库库:show databases;
- 删除数据库 drop database [数据名];
- 创建表:
create table [表名(无中括号)](id integer primary key autoincrement,[列名1] varchar([长度]),[列名2小数类型] double,[列名3大文本类型] text,[列名4日期型] data);
insert:
- 向表中插入一条数据:
insert into [表名] ([列表1],[列名2],[列名3],[列名4])values('[列表1的值]',3.14,'xyabc',2009-07-22');
insert a (([列表1]) values('([列表1的值]');
- 向表中插入多条数据:
insert into [表名] ([列表1],[列名2],[列名3],[列名4])values('[列表1的值]',3.14,'xyabc',2008-08-08'),('[列表1的值]',3.15,'jzm',2016-03-15');
- 为表增加一列:
alter table [表名] add [列名5] blob;
- 修改[列名1],使其长度为60:
alter table [表名] modify [列名1] varchar(60);
- 删除[列名3大文本类型]列:
alter table [表名] drop [列名3大文本类型];
- 修改表名:
rename table [表名] to [新表名];
- 修改[列名2]:
alter table [表名] change column [列名2] [新列名2] double;
- 删除一张数据表:
drop table [表名];
- 向表中插入一条数据:
update:
- 修改其中一条中一个数据:
update [表名] set [列表1]='[列表1的新值]' where [列名2]=3.14;
- 修改其中一条的多个数据:
update [表名] set [列表1]='[列表1的新值]' ,[列名3]='helloworld' where [列名2]=3.14;
- 修改其中一条中一个数据:
- delete:
- 删除表中[列名2]为’3.14’的记录:
delete from [表名] where name='3.14';
- 删除表中所有记录:
Delete是一条条的删,如果条目很多的话,会效率很低
删除一个数据表的数据:delete from [表名];
使用truncate删除表中记录。 摧毁表再创建表 尽量用这个:truncate [表名];
- 删除表中[列名2]为’3.14’的记录:
- select:
|
|
###命令:
- 查看数据库有哪些数据表:.tables
- 查看数据表的结构:.schema contact
- 查看当前的数据库:.database
- 导入一个文件到某个表中:.import 文件路径 表名
- 设置文件字段的分隔符:.separator “,”
|
|
9、表的约束:
表的约束就是在定义表时,我们可以在创建表的同时为字段增加约束,对将来插入的数据做一些限定
一、表的约束
表的约束就是在定义表时,为表中的字段加一些约束条件,对将来插入的数据做一些限定
10 . 表的关系
|
|