随缘之

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
SQLite常用命令
  •  sqlite3 file.db  创建名为file的库文件并进入到SQL命令行模式,提示符变为sqlite>
计算机生成了可选文字: chenwxaubuntu : -/sqlite3S sqliteg file.db SQLite version 3 . 7 . 9 2 0 1 1 一 I I 一 0 1 0 0 : 5 2 : 41 .help" height="122" width="480"/>
  • .help 可显示shell模式中可使用的所有命令列表以及命令的含义
计算机生成了可选文字: sqlite> .help .backup ?DB? FI LE .bail ONIOFF · databases .dump ?TABLE? .echo 0 № OFF · exit .explain ? 0 № OFF . .header( s) ONIOFF · help .import FI LE TABLE Backup DB (default 'main
  • .database  显示数据库信息;包含当前数据库的位置
计算机生成了可选文字: sqlite> .database Seq name 0 maln file /home/linux/sqliteg/file.db
 
  • create table student( Sno integer primary key,   Sname text not null,   Ssex text default ‘M’,Sage integer default 19,Sdept text default ‘CS’);  创建一个包含Sno,Sname,Ssex,Sage,Sdept五个标题的一个表格,里面包含每一个标题的约束条件
create table student :创建一个表,名为student
Sno integer primary key:标题为Sno,类型为integer整型,约束条件为primary key主键即Sno在表中唯一,且数值自动增长
Sname text not null :标题为Sname,类型为text字符串,约束条件为not null就是不可省略,必须填写
Ssex text default ‘男’:类型为Ssex,类型为text字符串,约束条件为default,默认为男,省略不写的话默认为M
Sage integer default 19 :标题为Sage,类型为integer整型,约束条件为default默认为19,就是说如果省略不写的话就以19填充
Sdept text default ‘CS’ :标题为Sdept,类型为text字符串,约束条件为default默认为CS,就是说如果省略不写的话就以CS填充
  • .tables  列出当前数据库中存在的表
  • insert into student values(‘95001’,’李勇’,’M’,20,’CS’);
  • insert into student values(‘95002’,’刘晨’,’F’,19,’IS’);
  • insert into student values(‘95003’,’王敏’,’F’,18,’MA’);
  • insert into student values(‘95004’,’张立’,’M’,18,’IS’);  向student这个表中插入4名学生的信息
sqlite> values( '95001 ' sqlite> values( '95002' sqlite> values( '95003 ' sqlite> values( '95004 ' sqlite> insert insert insert insert into into into into student student student student '5k i' m' .20. 'CS , .19. 'IS . 'f' .18. 'MA m' .18. 'IS
  • select * from student; 显示表中全部信息(但是显示的只是内容,没有标题)
sqlite> select from student; Im1201CS 950021 ilk If11911S 950031Æütlf1181MA 9500415k 3-1m11811S
  • .header on/off  给表中的信息加上标题的开/关,但可以发现这样标题和信息并没有对齐
sqlite> . header on sqlite> select from student; Sno I Snamel Ssexl Sagel Sdept 95001 1 * $ Im1201CS 950021 ilk If11911S 950031±ütlf1181MA 9500415k 3-1m11811S
  • .mode list  默认的显示方式
sqlite> . mode list sqlite> select from student; Sno I Snamel Ssexl Sagel Sdept 95001 1 * $ Im1201CS 950021 ilk If11911S 950031±ütlf1181MA 9500415k 3-1m11811S
  • .mode column  表中的内容按照列方式对齐显示
sqlite> sqlite> Sno 95001 95002 95003 95004 . mode column select f rom Sname student; Ssex m m Sage 20 19 18 18 Sdept cs
  • .mode line  表中的内容以形式行的方式显示
sqlite> . mode line sqlite> select from student; Sno - 95001 Sname = Ssex = m Sage = 20 Sdept - - cs Sno - 95002 Sname = Ssex Sage - - 19 Sdept Sno - 95003 Sname = Ssex - Sage = 18 Sdept Sno - 95004 Sname = Ssex = m Sage - - 18 Sdept
  • .mode tabs  以标签的方式显示
sqlite> sqlite> Sno 95001 95002 95003 95004 . mode tabs select f rom Sname Ssex m m student; Sage 20 19 18 18 Sdept cs
  • .mode tcl  以双引号的形式显示
sqlite> sqlite> Sno '95001
  • .mode csv 以逗号隔开显示
95002,' 95003,' sqlite> . mode csv 95004, select Sno , Sname, Ssex, Sage, Sdept from student; .m.20.cs ilk", f, 19,1S . f. 18.MA" height="159" width="403"/>
  • .mode insert 将插入的内容显示出来
sqlite> . mode insert sqlite> select from student; INSERT INTO table VALUES(95001. INSERT INTO table VALUES(95002, INSERT INTO table VALUES(95003. INSERT INTO table VALUES(95004, m' .20. 'CS . 'f' .19. . 'f' .18. 'MA m' .18. 'IS
  • .exit /.quit  退出数据库模式
  • select *from student where Sname='李勇';  按照人名单一查找
  • select *from student where Sname='李勇' and Sage=20;  按照两个条件一起判断
sqlite> sqlite> Sno 95001 . mode column select *from Sname student Ssex m where Sname= Sage 20 Sdept cs
  • select Sage from student where Sname='李勇';  按照姓名的条件查看姓名对应的信息中的年龄信息
sqlite> select Sage from student where Sname=' Sage 20
  • insert into student(Sname,Sage) values ('pengd',19);
  • insert into student(Sname,Sage) values ('彭丹',19);  按照缺省的模式插入部分内容,Sno自动增加,其中Sname是必须输入的其他的都有默认值
sqlite> sqlite> sqlite> Sno 95001 95002 95003 95004 95005 95006 insert into student(Sname, Sage) values insert into student(Sname, Sage) values select from student; Sname pengd Ssex m m Sage 20 19 18 18 19 19 ( ' pengd' .19); ( ' y, *'.19); Sdept cs cs cs
  • delete from student where Sname='pengd';  指定条件删除指定的信息
sqlite> sqlite> Sno 95001 95002 95003 95004 95006 delete from student where select from student; Sname Ssex m m Sname= ' pengd Sage 20 19 18 18 19 Sdept cs cs
  • create table student_1(Sno integer primary key,Sname text not null, Ssex text default 'M',Sage integer default 19,Sdept text default 'CS');  创建一个新表,然后可以通过.tables查看多出来的表
sqlite> create table student 1 (Sno integer primary sex text default 'M' , Sage integer default 19, Sdept sqlite> . tables student student 1 key, Sname text not null, text default 'CS'); s
  •  drop table student_1;  删除名为student_1的表
sqlite> drop table student_l; sqlite> . tables student
  • .schema student   查看表的结构,也就是表中包含信息的结构
sqlite> . schema student CREATE TABLE student(Sno integer primary key, Sname text not null, Ssex text d efault 'M' , Sage integer default 19,Sdept text default 'CS' ) ;
  • update student set Ssex='f',Sage=21 where Sname='李勇';  更新名为李勇这个人的其他相关信息
sqlite> Sno 95001 95002 95003 95004 95006 sqlite> sqlite> Sno 95001 95002 95003 95004 95006 select f rom Sname student; Ssex m m update student set Ssex= select from student; Sname Ssex m Sage 20 19 18 18 19 f' , Sage=21 Sage 21 19 18 18 19 Sdept cs cs where Sname= Sdept cs cs
  • alter table student add column Spwd text default '123456';  插入一个字段名为Spwd,默认类型是text,默认值是123456
sqlite> sqlite> Sno 95001 95002 95003 95004 95006 alter table student add select from student; Sname Ssex m column Spwd Sage 21 19 18 18 19 text default Sdept cs cs Spwd 123456 123456 123456 123456 123456
  •  alter table student rename to stu;  将表重命名为stu
sqlite> alter table student rename to Stu; sqlite> . table stu
 
3.SQLite数据库编程接口函数
  头文件:#include<stdio.h>
      #include<stdlib.h>
      #include<sqlite3.h>
  打开sqlite数据库:int sqlite3_open(char *path,sqlite3 **db);
  关闭sqlite数据库:int sqlite3_close(sqlite3 *db);
  传递错误信息:const char *sqlite3_errmsg(sqlite3 *db);
  参数:char *path:数据库文件的路径
            sqlite3 **db:指向sqlite句柄的指针
  返回值:成功为0,失败返回错误码
 
  int sqlite3_exec(sqlite3 *db,const char *sql,sqlite_callback callback,void *para,char **errmsg); 
  功能:执行SQL操作
  参数:sqlite3 *db:指向sqlite句柄的指针
            const char *sql:SQL语句
            sqlite3_callback callback:回调函数
            void *para:传递给回调函数的参数
  char **errmsg:错误信息指针的地址
  返回值:成功返回0,错误返回错误码
 
   typedef int(*sqlite_callback)(void *para,int f_num,char **f_value,char **f_name);
  功能:每找到一条记录自动执行一次回调函数
  参数:para:传递给回调函数的参数
    f_num:记录中包含的字段数目
    f_value:包含每个字段值的指针数组
    f_name:包含每个字段名称的指针数组
  返回值:成功返回0,失败返回-1
 
   int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);
  功能:执行SQL操作
  参数:db:数据库句柄
            sql:SQl语句
            resultp:用来指向sql执行结果的指针
            nrow:满足条件的记录的数目
            ncolumn:每条记录中包含的字段数目
            errmsg:错误信息指针的地址
  返回值:成功返回0,失败返回错误码
posted on 2017-11-29 15:30  随缘之  阅读(902)  评论(0编辑  收藏  举报