您的位置:首页 > 数据库

sqlite的基本方法

2016-03-22 22:46 429 查看
1、

1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项
3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。

6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

primary key 唯一且非空。
Autoinc 自动增长
建表
Create Table "main"."Student"
SQL:
CREATE TABLE "main"."Student"
("stuID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "stuName" VARCHAR(20), "stupswd" VARCHAR(20))

添加
INSERT INTO "main"."Student" ("stuName","stupswd") VALUES (?1,?2)
Parameters:
param 1 (text): tian
param 2 (text): asdfggh

删除
Delete 1 records from Student where stuid=1


UPDATE "main"."Student"
SET "stuName" = ?1 WHERE "stuID" = 1
Parameters:
param 1 (text): tian

--创建数据库
create database ios
--使用数据库
use ios
--创建数据表
create table student
(
stuid int primary key autoincrement,
stuname varchar(20),
stupwd varchar(20)
)
--查询所有信息
select * from student

--增加信息
insert into student(stuname,stupwd)
values ('lisi','123456')
--修改
update student set stuname = '李四'
where stuid = 1
update student set stuname = '李四',stupwd='Sd123'
where stuid = 1
--删除
delete from student where stuid=1

返回信息 对表信息的反馈

创建数据表
create table class
(
cid integer primary key autoincrement ,
cname varchar(20)
)
查询语句
select * from class
增加语句
insert into class (cname) values('IOS实训班')
修改语句
update class set cname='物联网' where cid=2
删除语句
delete from class where cid=2
查询表中的记录数
select count(*) from class
select count(*) from class where cname='数据库'
select * from class where cname='数据库'
select cid from class where cname='数据库'
select cid,cname from class where cname='数据库'
select cid,cname from class where cid>=5 and cid<=9
select cid,cname from class where cid between 5 and 9
select cid,cname from class where cid in(5,6,7,8,9)
降序排列
select * from class order by cid desc
升序排列
select * from class order by cid asc
select * from class where cname='数据库' order by cid desc
select * from class where cname like '%库' order by cid desc
select * from class where cname like '数_库' order by cid desc
分组
select count(*) from class group by cname

select count(*) count from class group by cname order by count desc

外键

create table class
(
cid integer primary key autoincrement,
cname varchar(20),
schid int ,
foreign key(schid) references sch(schid)

)

主外键
create table class
(
cid integer primary key autoincrement,
cname varchar(20)
)
create table student
(
stuid integer primary key autoincrement,
stuname varchar(20),
stupwd varchar(20),
stuaddr varchar(200),
cid int ,
foreign key (cid) references class(cid)
)
增加
insert into student(stuname,stupwd,stuaddr,cid)values('zhangsan','123','aaa',1)
联合查询
select * from class,student where class.cid=student.cid
左外连接
select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
from class c,student s where c.cid=s.cid
select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
from class c left join student s on c.cid=s.cid

交叉连接
select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
from student s cross join class c

创建视图
create view v_class_student
as
select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
from student s left join class c on s.cid=c.cid

查询视图
select * from v_class_student where stuid=1
登录查询语句
select count( *) from student where stuname='zhangsan' and stupwd='123456'
select stupwd from student where stuid=1 and stuname='zhangsan'
三表联合查询
select stu.stuname,c.cname,s.sname from school s left join class c on s.sid=c.sid left join student stu on stu.cid=c.cid
select * from student stu,class c,school s
where stu.cid=c.cid and s.sid=c.sid

select stu.stuname,c.cname,s.sname from student stu,class c,school s
where stu.cid=c.cid and s.sid=c.sid

select stu.stuname,c.cname,s.sname from student stu left join class c
on stu.cid=c.cid left join school s on s.sid=c.sid
select * from student where cid in
(select cid from class where cname='php')

select * from student where cid in
(select cid from class where sid in
(select sid from school where sname='myschool'))

update student set stuname='qq' ,stuaddr='bj'
,stupwd='123456789' where stuid=1
删除数据表
drop table student

先删除子表 再删除 主表

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// [self login];

// [self Add];

[self showAll];

}

//显示数据表中的所有信息

-(void)showAll

{

NSLog(@"显示数据");

// 数据库

sqlite3 *db;

// 数据库文件存储路径

NSString *path =[[NSBundle mainBundle] pathForResource:@"sasa" ofType:@"sqlite"];

// 根据指定的数据库文件路径 打开数据库

int result = sqlite3_open([path UTF8String], &db);

// 创建执行命令对象

sqlite3_stmt *stmt;

// 打开数据库成功

if (result==SQLITE_OK) {

NSLog(@"连接成功");

// 执行预处理命令

int rst=sqlite3_prepare_v2(db, "select * from student", -1, &stmt, nil);

if (rst==SQLITE_OK) {

// 循环遍历数据表中整型列的信息

while (sqlite3_step(stmt)==SQLITE_ROW) {

int stuid=sqlite3_column_int(stmt, 0);

NSLog(@"stuid is %d",stuid);

// 获取数据表中 字符型的列信息

NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 1)]);

NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 2)]);

}

}

}

}

-(void)login

{

sqlite3 *db;

sqlite3_stmt *stmt;

sqlite3_open([[[NSBundle mainBundle]pathForResource:@"sasa" ofType:@"sqlite"]UTF8String],&db );

// 通过 ? 充当站位符

int rst =sqlite3_prepare_v2(db, "select * from student where stuname=? and stupwd =? ", -1, &stmt, nil);

// 绑定数据信息 注意 : 1 表示的是 ? 的位置

sqlite3_bind_text(stmt, 1, "lisi", -1, nil);

sqlite3_bind_text(stmt, 2, "1234", -1, nil);

if (rst==SQLITE_OK) {

if (SQLITE_ROW==sqlite3_step(stmt)) {

NSLog(@"login ok");

}

else

{

NSLog(@"sorry");

}

}

}

-(void)Add

{

sqlite3 *db;

sqlite3_stmt *stmt;

sqlite3_open([[[NSBundle mainBundle]pathForResource:@"sasa" ofType:@"sqlite"]UTF8String],&db );

int rst=sqlite3_prepare_v2(db, "insert into student (stuname,stupwd)values(?,?) ", -1, &stmt, nil);

sqlite3_bind_text(stmt, 1, "lisi", -1, nil);

sqlite3_bind_text(stmt, 2 , "lisi", -1, nil);

if (rst==SQLITE_OK) {

// 判断是否增加成功

if (SQLITE_DONE==sqlite3_step(stmt))

{

NSLog(@"ADD ok");

}

else

{

NSLog(@"add sorry");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: