Java系列進(jìn)去Android之HTML與SQLite

1? ? ? HTML&SQLiteN26

1.1????get和post請求

兩者的區(qū)別:

1、 get提交將數(shù)據(jù)顯示在地址欄,對于敏感信息不安全;post提交不顯示在地址欄,對于敏感信息安全

2、 地址欄中存放的數(shù)據(jù)是有限,所以get方式對提交的數(shù)據(jù)體積有限制。post可以提交大體積數(shù)據(jù)

3、 對提交數(shù)據(jù)的封裝方式不同《get:將提交數(shù)據(jù)封裝到了http消息頭的第一行,請求行中????? ??????????????????post:將提交的數(shù)據(jù)封裝到消息頭后,在請求數(shù)據(jù)體中》

使用場景:

1、 如果說訪問服務(wù)器數(shù)據(jù),客戶端不需要提交數(shù)據(jù)信息,只需要從服務(wù)器獲取信息,那么通常使用get方式,例如:訪問圖片、音頻等。。。

2、如果說訪問服務(wù)器數(shù)據(jù),客戶端需要提交數(shù)據(jù)信息(用戶名、密碼...),通常會使用post方式,例如:注冊、登陸等...

1.2????提交示例POST與GET

Inserttitle here

-->

action:服務(wù)器的地址

method:數(shù)據(jù)的提交方式,常用的有兩種:get、post

-->

用戶名:

密碼:

publicclass Server {

/**

* @param args

* @throws IOException

*/

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

// TODO Auto-generated methodstub

//tcp服務(wù)端

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????數(shù)據(jù)庫

SQL Server?微軟

Oracle

MySQL

SyBase

DB2

SQLite,弱類型的數(shù)據(jù)庫

安全性、并發(fā)性、

簡介:

是一款微型數(shù)據(jù)庫,它用在嵌入式系統(tǒng)中,比如Android系統(tǒng)。它跟傳統(tǒng)的數(shù)據(jù)庫有比較大的差別。省略了大多數(shù)的功能,比如權(quán)限,管理、觸發(fā)器、存儲過程等。只保留對數(shù)據(jù)庫最常用到的增刪改查操作。(弱類型的數(shù)據(jù)庫)。

DB(數(shù)據(jù)庫)

DBMS(數(shù)據(jù)庫管理系統(tǒng)):Database Management System

DBA: 數(shù)據(jù)庫管理員

標(biāo)準(zhǔn)的SQL(結(jié)構(gòu)化查詢語言)

?? 分類:

ü? DDL(數(shù)據(jù)定義語言):創(chuàng)建庫、創(chuàng)建表、刪除庫、刪除表

ü? DML(數(shù)據(jù)操作語言):插入、刪除、修改數(shù)據(jù)

ü? DQL(數(shù)據(jù)查詢語言):數(shù)據(jù)查詢語言

ü? DCL(數(shù)據(jù)控制語言):創(chuàng)建用戶、設(shè)置權(quán)限、撤銷權(quán)限等。

?sqlite數(shù)據(jù)庫支持的數(shù)據(jù)類型(5種類型)

1)??null??????????? 空

2)??integer???????? 整型

3)??real??????????? 浮點(diǎn)型

4)??text/varchar??? 字符串

5)??blob??????????? 二進(jìn)制

?sqlite支持的約束條件

1)??primarykey:主鍵約束,非空且唯一

每張表都應(yīng)該設(shè)置一個主鍵,找不到合適的主鍵的話,可以添加一個自增長列(只能是整型)來作為表的主鍵。

一張表最多只能有一個主鍵

2)??notnull:非空約束

3)??unique:唯一約束,可以為空

4)??check:檢查約束

5)??default:默認(rèn)約束

6)??foreignkey:外鍵約束

ü? 主要用于維護(hù)引用的完整性(默認(rèn)沒有開啟,要想使用必須手動開啟)

ü? 手動開啟外鍵約束:PRAGMAforeign_keys = ON

ü? 外鍵列的值必須在主鍵列中存在,否則就會出錯。

ü? 語法:字段名 數(shù)據(jù)類型 references表名(字段名)

刪除表:drop table 表名;

l常用的指令

?? .quit?????????????? 退出

?? .tables???????????? 查看數(shù)據(jù)庫中所有表名

?.headers on/off顯示/隱藏表頭

?.schema表名查看表結(jié)構(gòu)

?? select * from 表名? 查看指定表內(nèi)的所有數(shù)據(jù)(一般用于測試)

數(shù)據(jù)庫操作:select、insert、update、delete

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

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

注意:主鍵如果是整型,那么就自動擁有自增長的特性。

==如給添加數(shù)據(jù)的時候是給所有的字段都賦值了話,那么字段列表可以省略不寫。

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

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

刪除:語法:delete from 表名 [where 條件];

Delete from stu?? //表中的數(shù)據(jù)回全部刪除

Deletefrom stu where id=3

查詢:語法:select 列名1,列名2,...from 表名 [where 條件][group by 列名]

[having條件][order by列名 asc/desc][limit 初始位置,查詢個數(shù)]

給列取別名:select id as 學(xué)號,name 姓名,score,age,gender from stu

//在給列取別名的時候,as可以省略不寫。

//給表去別名

Selects.id,name from stu as s;

?多表查詢

ü內(nèi)聯(lián)(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;

ü外聯(lián)(outer join)

1)? 左外查詢(left [outer] join)

以左表為基準(zhǔn)表,先和右表做內(nèi)聯(lián),接下來左表中匹配不到的記錄也會拼成一條記錄,只是值為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;

?按列來進(jìn)行排序

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降序,再把a(bǔ)ge相同的記錄按名字降序排序

獲取指定個數(shù)的記錄

要求:查詢出班級中年齡最大的前三個學(xué)員的個人信息

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

?聚合函數(shù)

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

在做查詢語句的時候,我們不能使用列名和聚合函數(shù)一起查詢,因?yàn)榱胁樵兂鰜淼膫€數(shù)可能有多個,而聚合函數(shù)的結(jié)構(gòu)只有一個,不能組成一張規(guī)則的表。

Select count(*)from stu;???? //計(jì)數(shù)求和

?分組查詢

要求:打印輸出班級中每個城市所對應(yīng)的學(xué)生數(shù)。

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

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

注意事項(xiàng):

1)??在分組中使用聚合函數(shù),聚合函數(shù)統(tǒng)計(jì)的不是表中的所有記錄,而是統(tǒng)計(jì)每個組中的記錄

2)??在分組查詢中,分組的列可以和聚合函數(shù)一起查詢

3)??可以以多個列進(jìn)行分組。

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

PS:where和 having的區(qū)別?

where在分組之前對表中所有的記錄進(jìn)行條件過濾,而having必須用在groupby 之后,主要用來對組進(jìn)行設(shè)置過濾條件。

Where用于分組之前查詢結(jié)果的篩選,而having是用于分組之后查詢結(jié)果的篩選

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

?模糊查詢

ü關(guān)鍵字: 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,如果直接雙擊打開軟件會將數(shù)據(jù)保存在內(nèi)存的一塊

Ctrl+c??.quit?? .tables

//創(chuàng)建表

create table stu(

idinteger primary key,?????? //主鍵約束?? autoincrement 自增長功能

namevarchar(20) not null,?? //不能為空

ageinteger check(age>18),

socrereal???????? unique,????????? //唯一性約束

gendervarchar(2) default(‘男’)?? //默認(rèn)值

);

//查詢指定字段為空的記錄

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

?語法:select列名1,列名2,...from 表名 [where 條件][group by 列名]

[having條件][orderby列名 asc/desc][limit 初始位置,查詢個數(shù)]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,017評論 0 11
  • 一、數(shù)據(jù)庫操作: 1.1 創(chuàng)建數(shù)據(jù)庫: create database student; 1.2 刪除數(shù)據(jù)庫: ...
    __71db閱讀 850評論 0 0
  • 2017年10月23日 周一 霜降 6:30--7:30 起床,瑜伽20分鐘,孩子上學(xué)前的準(zhǔn)備,陪孩子一起上學(xué)。 ...
    茶舍花開閱讀 327評論 0 0
  • 又到一年畢業(yè)季 穿著學(xué)士服 關(guān)系好的小伙伴相約一起拍照 留念 然后一輩子 不聯(lián)系
    海苔不是海白菜閱讀 263評論 0 5

友情鏈接更多精彩內(nèi)容