mysql 与sqlite一些区别

来源:互联网 发布:java还可以学什么 编辑:程序博客网 时间:2024/05/16 06:46

相信做Android开发的童鞋们对Sqlite数据库都不陌生吧,这里根据我自己的一些经验简单谈谈mysql 与sqlite的一些区别


1、MySql主要用来做服务端的开发,而Sqlite是用来做客户端开发的,最主要的也是极具诱惑力的“源码完全的开源, 你可以用于任何用途, 包括出售它”嘿嘿有些童鞋有没有动心对他
2、下面将一些在运用方面MySQL与sqlite的区别
(1)在创建表时mysql是这样滴
CREATE TABLE `Calculator` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `CalculatorTypeID` int(11) DEFAULT NULL,  `CalculatorName` char(225) DEFAULT NULL,  `CalculatorUrl` char(200) DEFAULT NULL,  PRIMARY KEY (`ID`)) ENGINE=MyISAM AUTO_INCREMENT=520 DEFAULT CHARSET=utf8;
需要注意的是id是这张表的主键(
PRIMARY KEY (`ID`))且是自增的(
AUTO_INCREMENT
)必要时还可以设置自增的步长与步进而且定义了表的编码是utf8 存储引擎是
MyISAM
可以根据数据的需要定义相应的字符类型及长度保证表的最优
Sqlite创建表是这样的
CREATE TABLE "Calculator" (
"ID"  INTEGER NOT NULL,"UID"  TEXT,"CalculatorTypeID"  INTEGER,"CalculatorName"  TEXT,"CalculatorUrl"  TEXT,PRIMARY KEY ("ID" ASC));
同样也定义了id为主键,且顺序自增 但是需要提醒大家的是  主键必须是“
INTEGER 
” 类型的 或者主键自增也可以写成
"ID"  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,  注意
AUTOINCREMENT   是没有中间的下划线的跟mysql是不一样的,且他的字段类型除了Integer(int
)  就是Text 虽然也可以是mysql的类型但是只能一个个的去改   创建表默认的都是Text,这样多少降低了数据的查询速度
从上面还可以看出mysql 里面创建表时是不允许引号的,mysql 里面是要么什么修饰符都不要要么  加上`
(2)mysql在创建索引时有长度要求,而Sqlite则没有
MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。在MyISAM表中,创建组合索引时,创建的索引长度不能超过1000,注意这里索引的长度的计算是根据表字段设定的长度来标量的,例如:create table test(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=myisam;create index test_name on test(name1,name2,name3);此时报错:Specified key was too long;max key length is 1000 bytes.
修改表结构:alter table test convert to charset utf8;create index test_name3 on test(name3).此时warning:Specified key was too long;max key length is 1000 bytes.但是索引创建成功,查看表结构可以看到创建的索引是一个前缀索引:‘key test_name3(name3(333))’得出的结论是:对于myisam表,如果创建组合索引,所创建的索引长度和不能超过1000 bytes,否则会报错,创建失败;对于myisam的单列索引,最大长度也不能超过1000,否则会报警,但是创建成功,最终创建的是前缀索引(取前333个字节)。在Innodb表中,创建组合索引:create table test1(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=innodb;create index test1_name on test(name1,name2,name3);此时给出warning:Specified key was too long;max key length is 767 bytes.修改表结构:alter table test1 convert to charset utf8;create index test1_name3 on test(name3).此时给出warning:Specified key was too long;max key length is 767 bytes.得出的结论是:对于创建innodb的组合索引,如果各个列中的长度不超过767,则不再计算所有列的总长度,如果有超过767的,则给出报警,索引最后创建成功,但是对于超过767字节的列取前缀索引;对于innodb的单列索引,超过767的,给出warning,最终索引创建成功,取前缀索引(取前255字节)。
(未完待续)


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 辅警体检不合格怎么办 小儿听力筛查未过关怎么办 宝宝听力没过关怎么办 护士体检有乙肝怎么办 高考体检表填错怎么办 高考体检表没有下载怎么办 警校视力没过怎么办 凉鞋挂钩总是脱怎么办 特别害怕抛妇产怎么办 抛妇产害怕紧张怎么办 毕业体检有乙肝怎么办? 宝宝胸围偏小怎么办 入园体检不合格怎么办 油表不显示油量怎么办 上大学体检不过怎么办 军校体检没过怎么办 六次化疗后怎么办 宝宝肚子有蛔虫怎么办 肾综激素依赖怎么办 胎儿阴囊有积液怎么办 中考学生英语很差怎么办 中考考得很差怎么办 科学总是考不好怎么办 初三学生数学不好怎么办 初三学生语文不好怎么办 初三学生英语不好怎么办 初三学生学习不好怎么办? 客户说不考虑怎么办 单位体检有乙肝怎么办 厂里体检出乙肝怎么办 厂里体检有乙肝怎么办 厂里体检查出乙肝怎么办 乙肝携带者肝功能异常怎么办 入职体检过不去怎么办 高考体检错过了怎么办 听力体检没过怎么办 身上皮肤太黑怎么办 体检手册没有了怎么办 体检来例假了怎么办 体检肝有问题怎么办 体检心脏有问题怎么办