sqlite_1

sqlite

sqlite数据库
数据库称为软件应用的主要组成部分.正在与数据管理系统非常关键一样,变得很庞大.
sqlite是一个开源的商业程序,数据就称为了软件应用程序的主要组成部分.它的减少应用程序的开销,sqlite可移植性好,很容易使用,很小,高效而且可靠.
sqlite嵌入到使用它的应用程序中,他们共同的进程空间,而不是一个单独的进程.不像是一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎.

嵌入式数据库的一个好处就是嵌入式的关系数据库,它由2000年发布,减少应用程序管理数据的开销.sqlite可移植性好,很容易使用,很小,高效而且可靠.
sqlite嵌入到使用它的应用程序中,它们相同的网络进程,而不是一个单独的进程.自带有数据库引擎.

sqlite的使用:
.help:/
.help可以看看有哪些命令

.tables
看看有创建了多少表

.schema
查看表结构

.database
看看目前挂的数据库

.output文件名
如果要把查询输出到文件

.output stdout
把查询结果用屏幕输出

.dump 表名
把表结构输出,同时索引也会输出

.exit/.quit
退出

你可以通过敲击你用的文件结束符或者是终端字符(ctrl+d)来终止sqlite3.确定你在结束敲入了分号,sqlite3通过查找分号来决定一个SQL语句的结束.如果你省略分号,sqlite3将给你一个连续的命令提示符等你给当前的sql命令添加更多的文字.这个特点让你输入多行多个SQL语句.

sqlite>create table tb2(
> f1 varchar(30) primary key,
> f2 text,
> f3 real
>);
sqlite>

.timeout //用时
.output test.txt//输出到test.txt

+---------------------------------------------------------------------+
sqlite> .tables
sunhao tbl2
sqlite> create table student(
...> id integer primary key,
...> name text);
sqlite> insert into student values(1,'苏皖南无');
sqlite> insert into student values(2,'草你妈');
sqlite> select * from student;
id = 1
name = 苏皖南无

id = 2
name = 草你妈
sqlite> update student set name='郭' where id=1;
sqlite> select * from student;
id = 1
name = 郭

id = 2
name = 草你妈
sqlite>
+---------------------------------------------------------------------+
sqlite> .dump student
BEGIN TRANSACTION;
CREATE TABLE student(
id integer primary key,
name text);
INSERT INTO "student" VALUES(1, '郭');
INSERT INTO "student" VALUES(2, '草你妈');
COMMIT;
sqlite> .schema student
CREATE TABLE student(
id integer primary key,
name text);
sqlite>
+---------------------------------------------------------------------+
.dump table_name
.schema table_name
.separator : 设置显示信息以":"分隔
.separator symble 设置信息的分隔符

设置显示信息
sqlite> .mode mode_name
例子:
默认为list,设置为column,其他模式可通过.help来查看mode相关内容
sqlite>.mode column

输出帮助信息
.help

设置每一列显示宽度:
sqlite>.width width_value
example:设置宽度为2
sqlite>.width 2
+-----------------------------------------------------------------+
sqlite指令:
sql的指令,所有sql指令都是以分号结尾,两个减号(--)表示注释
例如:
sqlite>create student_table(Stu_no integer PRIMARY KEY,Name text NOT NULL,Id integer UNIQUE,Age integer CHECK(Age >6) ,School text DEFAULT 'xx小学');


sqlite3存储的数据的类型
NULL:表示一个Null值
integer:整数类型
REAL:浮点数
TEXT:字符串
BLOB:二进制数

sqlite3常用的存储数据的约束条件:

sqlite常用的约束条件:
1.PRIMARY KEY
主键的值必须唯一,用于标识每一条记录,如学生的学号
主键同时也是一个索引,通过主键来查找记录速度较快
主键如果是整数类型,该列的值可以自动增长

NOT NULL--非空
结束列记录不能为空,否则报错

UNIQUE--唯一
除了主键意外,约束其他列的数据的值唯一
CHECK--条件检查
约束该列的值必须符合条件才可存入
DEFAULT---默认值
列数据中的值都是一样的,这样的字段可设为默认值.

sqlite3常用指令
1.建立数据表
create table tbl_name(field1 type1,field2 type2);
tablename是要创建数据表名称,fieldx是数据表中字段,typex是字段类型
例如:
create table student_info(stu_no integer primary key,name text);

添加数据记录:
insert into table_name(field1,field2...)value(val1,val2...);
valx为需要存入字段的值

往学生表中插入数据
insert into student_info(stu_no,name) values(0001,alex);

修改数据记录:
update table_name set field1=val1,field2=val2 where expression;
where是sql语句中用于条件判断的命令,expression为判断表达式
例如:修改学生信息学号为0001的数据记录
update student_info set stu_no=0001,name=hence where stu_np=0001;

删除数据记录
delete from table_name[where expression]
不加判断则清空所有数据记录
例如:删除学生信息学号为0001的数据记录
delete from student_info where stu_no=0001


查询数据:
select 指令基本格式:
select columns from table_name[where expression];
a查询输出所有数据记录
select * from table_name
b限制输出数据记录数量
select * from table_name limit val;
c升序输出数据记录
select * from table_name order by field asc
d降序输出数据记录
select * from table_name order by field desc
e条件查询
select * from table_name where expression
select * from table_name where field in('val1','val2');
select * from table_name where field between val1 and val2
f查询记录数目
select count(*) from table_name
g区分列数据
select distinct field from table_name\
有一些字段的值可能会重复使用distinct来去除重复只.将列中字段单个列出

建立索引:
当说有数据表在大量记录,索引有助于加快查找数据表速度
create index index_name on table_name (field);
针对学生表中stu+_no字段
create index student_index on student (stu_no);
建立完成以后,sqlite3对该字段查询的时候,会自动使用该索引

删除数据表或索引
drop table table_name
drop index index_name

posted @ 2012-10-11 11:04  sgsheg  阅读(201)  评论(0编辑  收藏  举报