Java系列进去Android之HTML与SQLite

1      HTML&SQLiteN26

1.1    get和post请求

两者的区别:

1、 get提交将数据显示在地址栏,对于敏感信息不安全;post提交不显示在地址栏,对于敏感信息安全

2、 地址栏中存放的数据是有限,所以get方式对提交的数据体积有限制。post可以提交大体积数据

3、 对提交数据的封装方式不同《get:将提交数据封装到了http消息头的第一行,请求行中                        post:将提交的数据封装到消息头后,在请求数据体中》

使用场景:

1、 如果说访问服务器数据,客户端不需要提交数据信息,只需要从服务器获取信息,那么通常使用get方式,例如:访问图片、音频等。。。

2、如果说访问服务器数据,客户端需要提交数据信息(用户名、密码...),通常会使用post方式,例如:注册、登陆等...

1.2    提交示例POST与GET

Inserttitle here

-->

action:服务器的地址

method:数据的提交方式,常用的有两种:get、post

-->

用户名:

密码:

publicclass Server {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args)throws IOException {

// TODO Auto-generated methodstub

//tcp服务端

ServerSocket serverSocket =new ServerSocket(6666);

Socket socket =serverSocket.accept();

InputStream is =socket.getInputStream();

byte[] buf = new byte[1024];

int length = is.read(buf);

System.out.println(newString(buf, 0, length));

serverSocket.close();

}

}

1.3    数据库

SQL Server 微软

Oracle

MySQL

SyBase

DB2

SQLite,弱类型的数据库

安全性、并发性、

简介:

是一款微型数据库,它用在嵌入式系统中,比如Android系统。它跟传统的数据库有比较大的差别。省略了大多数的功能,比如权限,管理、触发器、存储过程等。只保留对数据库最常用到的增删改查操作。(弱类型的数据库)。

DB(数据库)

DBMS(数据库管理系统):Database Management System

DBA: 数据库管理员

标准的SQL(结构化查询语言)

Ø  分类:

ü  DDL(数据定义语言):创建库、创建表、删除库、删除表

ü  DML(数据操作语言):插入、删除、修改数据

ü  DQL(数据查询语言):数据查询语言

ü  DCL(数据控制语言):创建用户、设置权限、撤销权限等。

Øsqlite数据库支持的数据类型(5种类型)

1)  null            空

2)  integer         整型

3)  real            浮点型

4)  text/varchar    字符串

5)  blob            二进制

Øsqlite支持的约束条件

1)  primarykey:主键约束,非空且唯一

每张表都应该设置一个主键,找不到合适的主键的话,可以添加一个自增长列(只能是整型)来作为表的主键。

一张表最多只能有一个主键

2)  notnull:非空约束

3)  unique:唯一约束,可以为空

4)  check:检查约束

5)  default:默认约束

6)  foreignkey:外键约束

ü  主要用于维护引用的完整性(默认没有开启,要想使用必须手动开启)

ü  手动开启外键约束:PRAGMAforeign_keys = ON

ü  外键列的值必须在主键列中存在,否则就会出错。

ü  语法:字段名 数据类型 references表名(字段名)

删除表:drop table 表名;

l常用的指令

Ø  .quit               退出

Ø  .tables             查看数据库中所有表名

Ø.headers on/off显示/隐藏表头

Ø.schema表名查看表结构

Ø  select * from 表名  查看指定表内的所有数据(一般用于测试)

数据库操作:select、insert、update、delete

插入:语法:insert into 表名 (字段列表) values(值列表);

实例:insert into stu (id,name,score,age,gender)values(1,’xiaohua’,60,20,’男’);

注意:主键如果是整型,那么就自动拥有自增长的特性。

==如给添加数据的时候是给所有的字段都赋值了话,那么字段列表可以省略不写。

Insert into stu values(5,’xiaohua’,60,20,’男’)

更新:语法:update 表名 set 字段名1 = ?,字段名2 = ?, ... [where 条件];

删除:语法:delete from 表名 [where 条件];

Delete from stu   //表中的数据回全部删除

Deletefrom stu where id=3

查询:语法:select 列名1,列名2,...from 表名 [where 条件][group by 列名]

[having条件][order by列名 asc/desc][limit 初始位置,查询个数]

给列取别名:select id as 学号,name 姓名,score,age,gender from stu

//在给列取别名的时候,as可以省略不写。

//给表去别名

Selects.id,name from stu as s;

Ø多表查询

ü内联(inner join)

要求:把两张表中满足条件的记录拼成一条记录。

有两种写法:

1)  selecti.name,i.age,i.gender,i.address,c.math,c.english from stu_info as i,stu_score cwherei.stuno=c.sno;

2)  selecti.name,i.age,i.gender,i.address,c.math,c.english from stu_info as iinner joinstu_score as coni.stuno=c.sno;

ü外联(outer join)

1)  左外查询(left [outer] join)

以左表为基准表,先和右表做内联,接下来左表中匹配不到的记录也会拼成一条记录,只是值为null

selects.id,s.name,s.tid,t.name from stu s left join teacher t on s.tid=t.tid;

2)  右外查询(right [outer] join)

sqlite不支持

为表添加一列

alter table stu add tid integer;

ü交叉连接(cross join)

没有连接条件。

示例:

selecti.name,i.age,i.gender,i.address,c.math,c.english from stu_info as icross joinstu_score as c;

selects.id,s.name,s.tid,t.name from stu scross jointeacher t on s.tid=t.tid;

Ø按列来进行排序

selectname,age,gender,address from stu_infoorder by age asc;

selectname,age,gender,address from stu_infoorder by age desc;

selectname,age,gender,address from stu_info order by age desc,name desc;

以多个列来排序,先按age降序,再把age相同的记录按名字降序排序

获取指定个数的记录

要求:查询出班级中年龄最大的前三个学员的个人信息

selectname,age,address from stu_infoorder by age desc limit0,3;

Ø聚合函数

count(列名)、sum(列名)、max(列名)、min(列名),avg(列名)

在做查询语句的时候,我们不能使用列名和聚合函数一起查询,因为列查询出来的个数可能有多个,而聚合函数的结构只有一个,不能组成一张规则的表。

Select count(*)from stu;     //计数求和

Ø分组查询

要求:打印输出班级中每个城市所对应的学生数。

select address,count(*) as 人数 from stu_info group by address order by 人数desc;

select count(*) from stu group by tidhavingtidis not null;

注意事项:

1)  在分组中使用聚合函数,聚合函数统计的不是表中的所有记录,而是统计每个组中的记录

2)  在分组查询中,分组的列可以和聚合函数一起查询

3)  可以以多个列进行分组。

select address,count(*)as 人数 from stu_info group by addresshaving 人数>1;

PS:where和 having的区别?

where在分组之前对表中所有的记录进行条件过滤,而having必须用在groupby 之后,主要用来对组进行设置过滤条件。

Where用于分组之前查询结果的筛选,而having是用于分组之后查询结果的筛选

Select tid,count(*) from stu where score >=60 group by tidhaving tid is not null;

Ø模糊查询

ü关键字: like

% : 代表任意多个字符(0到多)

_ : 代表任意一个字符(1)

Select * from stu where name like ‘x%’;

ü  示例:

a)  查询姓名中包含字母a的所有人

selectname,age,address from stu_info where name like '%a%';

b)  查询姓名中第二个字母为h的人员信息

selectname,age,address from stu_info where name like '_h%';

SQLite3

命令行软件

注意:不要直接双击打开sqlite3.exe,如果直接双击打开软件会将数据保存在内存的一块

Ctrl+c  .quit   .tables

//创建表

create table stu(

idinteger primary key,       //主键约束   autoincrement 自增长功能

namevarchar(20) not null,   //不能为空

ageinteger check(age>18),

socrereal         unique,          //唯一性约束

gendervarchar(2) default(‘男’)   //默认值

);

//查询指定字段为空的记录

Select * from stu where tid is null;   //is not null

Ø语法:select列名1,列名2,...from 表名 [where 条件][group by 列名]

[having条件][orderby列名 asc/desc][limit 初始位置,查询个数]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,805评论 0 11
  • 一、数据库操作: 1.1 创建数据库: create database student; 1.2 删除数据库: ...
    __71db阅读 780评论 0 0
  • 2017年10月23日 周一 霜降 6:30--7:30 起床,瑜伽20分钟,孩子上学前的准备,陪孩子一起上学。 ...
    茶舍花开阅读 247评论 0 0
  • 又到一年毕业季 穿着学士服 关系好的小伙伴相约一起拍照 留念 然后一辈子 不联系
    海苔不是海白菜阅读 250评论 0 5