美文网首页
Java系列进去Android之HTML与SQLite

Java系列进去Android之HTML与SQLite

作者: 征程_Journey | 来源:发表于2017-05-21 11:30 被阅读0次

    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 初始位置,查询个数]

    相关文章

      网友评论

          本文标题: Java系列进去Android之HTML与SQLite

          本文链接:https://www.haomeiwen.com/subject/hdbmxxtx.html